DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_FM_OCM_REQUEST_GRP

Source


1 PACKAGE BODY JTF_FM_OCM_REQUEST_GRP AS
2 /* $Header: jtfgfmob.pls 120.0 2005/05/11 08:14:37 appldev ship $*/
3 G_PKG_NAME    CONSTANT VARCHAR2(100) := 'jtf.plsql.jtfgfmob.JTF_FM_OCM_REQUEST_GRP';
4 G_FILE_NAME   CONSTANT VARCHAR2(12) := 'jtfgfmob.pls';
5 
6 
7 
8 /**
9 
10 **/
11 
12 FUNCTION IS_REQ_ETSL(p_string VARCHAR2) RETURN BOOLEAN
13 IS
14 x_result BOOLEAN := FALSE;
15 BEGIN
16 IF(upper(p_string) = 'E' OR  upper(p_string) = 'T'  OR  upper(p_string) = 'S'  OR upper(p_string) = 'L')
17 THEN
18 	x_result := TRUE;
19 END IF;
20 return x_result;
21 
22 END IS_REQ_ETSL;
23 
24 
25 FUNCTION IS_MED_EPF(p_string VARCHAR2) RETURN BOOLEAN
26 IS
27 x_result BOOLEAN := FALSE;
28 BEGIN
29 IF(INSTR(upper(p_string), 'E')> 0  OR  INSTR(upper(p_string), 'P')>0  OR  INSTR(upper(p_string) , 'F') > 0 )
30 THEN
31 	x_result := TRUE;
32 END IF;
33 return x_result;
34 
35 END IS_MED_EPF;
36 
37 
38 PROCEDURE GET_TEST_XML
39 (
40      p_party_id               IN  JTF_FM_REQUEST_GRP.G_NUMBER_TBL_TYPE ,
41      p_email                  IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE ,
42      p_fax                    IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE ,
43 	 p_printer                IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE ,
44      p_content_xml            IN  VARCHAR2,
45 	 x_return_status          OUT NOCOPY VARCHAR2,
46 	 x_test_xml               OUT NOCOPY VARCHAR2
47 
48 )
49 IS
50 	l_api_name             CONSTANT VARCHAR2(30) := 'GET_TEST_XML';
51 	l_api_version          CONSTANT NUMBER := 1.0;
52 	l_full_name            CONSTANT VARCHAR2(100) := G_PKG_NAME ||'.'|| l_api_name;
53 	--
54 	l_Error_Msg            VARCHAR2(2000);
55 	--
56 	l_index                BINARY_INTEGER;
57 	l_printer_count        INTEGER;
58 	l_fax_count            INTEGER;
59 	l_file_path_count      INTEGER;
60 	l_email_count          INTEGER;
61 	l_message              VARCHAR2(32767);
62 
63 
64 BEGIN
65 
66    -- Initialize API return status to success
67    	x_return_status := FND_API.G_RET_STS_SUCCESS;
68 
69   	l_message := '<items>' || p_content_xml || '</items>';
70 
71    	JTF_FM_UTL_V.PRINT_MESSAGE('Creating Batch XML ..',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
72     l_index := 0;
73       		-- Get the greatest index of the last entry in all the address tables.
74     IF l_index < p_fax.LAST THEN
75    		l_index := p_fax.LAST;
76 	END IF;
77     IF l_index < p_email.LAST THEN
78    		l_index := p_email.LAST;
79     END IF;
80 	IF l_index < p_printer.LAST THEN
81    		l_index := p_printer.LAST;
82     END IF;
83     JTF_FM_UTL_V.PRINT_MESSAGE (to_char(l_index),JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
84 
85     IF (l_index = 0) THEN
86         l_Error_Msg := 'Must pass batch address list';
87         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
88              		FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_BATCH_LIST');
89                		FND_MSG_PUB.Add;
90         END IF;
91            	RAISE  FND_API.G_EXC_ERROR;
92     ELSE
93 
94 		l_message := l_message||'<batch><list>';
95         JTF_FM_UTL_V.PRINT_MESSAGE('Getting the greatest value ..'||TO_CHAR(l_index),
96 	    JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
97         FOR i IN 1..l_index LOOP
98            	-- Check if atleast one destination address has been passed
99          	IF( p_email.EXISTS(i)  OR p_fax.EXISTS(i)  OR p_printer.EXISTS(i)) THEN
100             		-- For each table check if the record exists.
101 			--If yes then add it to the XML
102                 l_message := l_message||'<party ';
103                 IF p_party_id.EXISTS(i) THEN
104                		l_message := l_message || 'id= "'||to_char(p_party_id(i))||'"> ';
105                	ELSE
106                  	l_message := l_message || '>';
107                 END IF;
108                  	l_message := l_message||'<media_type>';
109                 IF p_email.EXISTS(i) THEN
110 	           		l_message := l_message||'<email>'||p_email(i)||'</email>';
111                 END IF;
112                 IF p_fax.EXISTS(i) THEN
113 	           		l_message := l_message||'<fax>'||p_fax(i)||'</fax>';
114                 END IF;
115 			    IF p_printer.EXISTS(i) THEN
116                		l_message := l_message||'<printer>'||p_printer(i)||'</printer>';
117                 END IF;
118 
119 			    l_message := l_message||'</media_type></party>';
120 
121 
122           	END IF;
123          END LOOP;
124 	     IF l_index > 0 THEN
125 		    l_message := l_message||'</list>';
126 	     END IF;
127 
128 		 l_message := l_message||'</batch>';
129 
130     END IF;
131 	     x_test_xml := l_message;
132 
133 	     -- Success message
134      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
135      THEN
136        FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
137        FND_MESSAGE.Set_Token('ARG1', l_full_name);
138        FND_MSG_PUB.Add;
139      END IF;
140 
141 
142 
143 
144 END;
145 
146 
147 
148 
149 
150 
151 PROCEDURE create_fulfillment
152 (
153  	p_init_msg_list        		IN	   VARCHAR2 := FND_API.G_FALSE,
154 	p_api_version          		IN 	   NUMBER,
155 	p_commit		        IN	   VARCHAR2 := FND_API.G_FALSE,
156         p_order_header_rec       	IN  	   JTF_Fulfillment_PUB.ORDER_HEADER_REC_TYPE,
157 	p_order_line_tbl         	IN  	   JTF_Fulfillment_PUB.ORDER_LINE_TBL_TYPE,
158         p_fulfill_electronic_rec        IN 	   JTF_FM_OCM_REQUEST_GRP.FULFILL_ELECTRONIC_REC_TYPE,
159         p_request_type         		IN  	   VARCHAR2,
160 	x_return_status		        OUT 	   NOCOPY VARCHAR2,
161 	x_msg_count		        OUT 	   NOCOPY NUMBER,
162 	x_msg_data		        OUT 	   NOCOPY VARCHAR2,
163 	x_order_header_rec	        OUT NOCOPY ASO_ORDER_INT.order_header_rec_type,
164   x_request_history_id     		OUT NOCOPY NUMBER
165 )
166 IS
167 
168 	l_api_name			CONSTANT VARCHAR2(30)	:= 'create_fulfillment';
169 	l_full_name            		CONSTANT VARCHAR2(100) := G_PKG_NAME ||'.'|| l_api_name;
170 	l_api_version   		CONSTANT NUMBER 	:= 1.0;
171 	l_init_msg_list 	  		 VARCHAR2(2) := FND_API.G_FALSE;
172 	l_content_xml   			 VARCHAR2(10000);
173 	l_content_xml1   			 VARCHAR2(1000);
174 	l_bind_var      			JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
175 	l_bind_val      			JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
176 	l_bind_var_type 			JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
177 	l_content_id    			NUMBER;
178 	l_per_user_history  			VARCHAR2(2);
179 	l_subject       			VARCHAR2(255);
180 	l_quantity      			NUMBER := 1;
181 	l_return_status  			VARCHAR2(200);
182 	l_request_id    			NUMBER;
183 	l_request_history_id   			NUMBER;
184 	l_msg_data      			VARCHAR2(1000);
185 	l_Error_Msg     			VARCHAR2(1000);
186 	l_msg_count    			 	NUMBER;
187 	l_commit		    		VARCHAR2(2) := FND_API.G_FALSE;
188 	l_total        				NUMBER;
189 	l_var_media_type 			VARCHAR2(30);
190 	l_printer_val  				VARCHAR2(250) := null;
191 	l_fax_val      				VARCHAR2(250):= null;
192 	l_email_val    				VARCHAR2(250):= null;
193 	l_extended_header 			VARCHAR2(32767) ;
194 	l_message  			        VARCHAR2(32767);
195 	l_content_nm                VARCHAR2(1) := null;
196 	x_test_xml                  VARCHAR2(32767);
197 
198 	l_fm_pvt_rec     JTF_FM_UTL_V.FM_PVT_REC_TYPE;
199 
200 	BEGIN
201          --dbms_output.put_line('In create Fulfillment API');
202 
203 	   JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
204       -- Standard Start of API savepoint
205 	    SAVEPOINT	create_fulfillment;
206     	    -- Standard call to check for call compatibility.
207     	    IF NOT FND_API.Compatible_API_Call
208 	    (
209 	    	l_api_version,
210                 p_api_version,
211                 l_api_name, G_PKG_NAME )
212 	    THEN
213       	    	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
214     	    END IF;
215 
216 	    -- Initialize message list if p_init_msg_list is set to TRUE.
217     	    IF FND_API.to_Boolean( p_init_msg_list )
218 	    THEN
219       		FND_MSG_PUB.initialize;
220     	    END IF;
221 
222     		--  Initialize API return status to success
223 		-- API body
224     IF (upper(p_fulfill_electronic_rec.request_type) = 'P') THEN
225       		-- call physical fulfillment
226       		JTF_Fulfillment_PUB.create_fulfill_physical
227             	(p_init_msg_list => p_init_msg_list,
228              	 p_api_version   => p_api_version,
229             	 p_commit        => p_commit,
230              	 x_return_status => x_return_status,
231              	 x_msg_count     => x_msg_count,
232             	 x_msg_data      => x_msg_data,
233                  p_order_header_rec => p_order_header_rec,
234              	 p_order_line_tbl   => p_order_line_tbl,
235             	 x_order_header_rec => x_order_header_rec,
236             	 x_request_history_id => x_request_history_id
237             	);
238       	IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
239 		THEN
240          		RAISE FND_API.G_EXC_ERROR;
241       	END IF;
242     ELSIF (IS_REQ_ETSL(p_fulfill_electronic_rec.request_type)) THEN
243 
244 
245     		x_return_status := FND_API.G_RET_STS_SUCCESS;
246     		l_bind_var := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL;
247     		l_bind_val := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL;
248     		l_bind_var_type := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL;
249 
250 		IF LENGTH(p_fulfill_electronic_rec.media_types) >3 THEN
251 		    l_Error_Msg := null;
252 	   		l_Error_Msg := 'Invalid media type specified. Only allowed values are ';
253 	   		l_Error_Msg := l_ERROR_Msg || 'EPF,EFP,FEP,FPE,PEF,PFE,EP,EF,E,PE,PF,P,FE,FP,F';
254 			JTF_FM_UTL_V.PRINT_MESSAGE(l_Error_msg, JTF_FM_UTL_V.G_LEVEL_PROCEDURE  ,l_full_name);
255          	JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_CF_INVALID_MEDIA');
256          	RAISE  FND_API.G_EXC_ERROR;
257 
258 		ELSE
259 				  IF (IS_MED_EPF(p_fulfill_electronic_rec.media_types)) THEN
260 
261 		    IF ( INSTR(upper(p_fulfill_electronic_rec.media_types),'P')  > 0) THEN
262 
263 	           l_var_media_type := 'PRINTER,';
264 
265                IF p_fulfill_electronic_rec.printer.EXISTS(1) THEN
266 		          l_printer_val := p_fulfill_electronic_rec.printer(1);
267 		       ELSE
268 			      IF p_fulfill_electronic_rec.request_type = 'S'  THEN
269 			 	     l_Error_Msg := 'Chosen Media is Print but missing print address';
270 			 	     JTF_FM_UTL_V.PRINT_MESSAGE(l_Error_msg, JTF_FM_UTL_V.G_LEVEL_PROCEDURE  ,l_full_name);
271          	         JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_PRINT_ADDR');
272                      RAISE  FND_API.G_EXC_ERROR;
273 			      ELSE--for mass requests
274 			         l_printer_val := 'Query';
275 		          END IF;
276 		       END IF;
277 
278              END IF;
279 
280             IF  (INSTR(upper(p_fulfill_electronic_rec.media_types), 'F' ) > 0) THEN
281 	            l_var_media_type := l_var_media_type || 'FAX,';
282 		        IF p_fulfill_electronic_rec.fax.EXISTS(1) THEN
283 		           l_fax_val := p_fulfill_electronic_rec.fax(1);
284 	            ELSE
285 		           IF p_fulfill_electronic_rec.request_type = 'S'   THEN
286                       l_Error_Msg := 'Chosen Media is FAX but missing FAX address';
287    			 	      JTF_FM_UTL_V.PRINT_MESSAGE(l_Error_msg, JTF_FM_UTL_V.G_LEVEL_PROCEDURE  ,l_full_name);
288          	          JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_FAX_ADDR');
289                       RAISE  FND_API.G_EXC_ERROR;
290 			       ELSE -- no need of fax address for mass requests
291 		 	          l_fax_val := 'Query';
292 		           END IF;
293 		        END IF;
294 
295 	        END IF;
296 
297             IF((INSTR(upper(p_fulfill_electronic_rec.media_types),'E')>0)
298 	          OR p_fulfill_electronic_rec.media_types IS NULL
299              OR p_fulfill_electronic_rec.media_types= FND_API.G_MISS_CHAR) THEN
300                 l_var_media_type := l_var_media_type ||'EMAIL';
301 		       IF p_fulfill_electronic_rec.email.EXISTS(1) THEN
302 		           l_email_val := p_fulfill_electronic_rec.email(1);
303 		       ELSE
304 	                IF p_fulfill_electronic_rec.request_type = 'S' THEN
305 
306                        l_Error_Msg := 'Chosen Media is Email but missing email address';
307                        JTF_FM_UTL_V.PRINT_MESSAGE(l_Error_msg, JTF_FM_UTL_V.G_LEVEL_PROCEDURE  ,l_full_name);
308         	           JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_EMAIL_ADDR');
309                        RAISE  FND_API.G_EXC_ERROR;
310 			        ELSE
311 			            l_email_val := 'Query';
312 		            END IF;
313 		       END IF;
314 
315 
316             END IF;
317 		ELSE  -- Means media is not E or P or F
318 		    l_Error_Msg := null;
319 	   		l_Error_Msg := 'Invalid media type specified. Only allowed values are ';
320 	   		l_Error_Msg := l_ERROR_Msg || 'EPF,EFP,FEP,FPE,PEF,PFE,EP,EF,E,PE,PF,P,FE,FP,F';
321 			JTF_FM_UTL_V.PRINT_MESSAGE(l_Error_msg, JTF_FM_UTL_V.G_LEVEL_PROCEDURE  ,l_full_name);
322          	JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_CF_INVALID_MEDIA');
323          	RAISE  FND_API.G_EXC_ERROR;
324 
325 
326 		END IF;
327 
328 
329 	END IF ;-- End IF(p_fulfill_electronic_rec.media_types.LENGTH >3) THEN
330 
331 
332 
333       	IF(p_fulfill_electronic_rec.extended_header IS  NULL) THEN
334    			JTF_FM_UTL_V.PRINT_MESSAGE('Extended header is null',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
335        		l_extended_header := FND_API.G_MISS_CHAR;
336       	ELSE
337        		l_extended_header := p_fulfill_electronic_rec.extended_header;
338       	END IF;
339 
340 	  	/**
341 			internally three apis are called
342 	  		start request is called first
343 	  	**/
344 
345       		JTF_FM_REQUEST_GRP.start_request
346 		(
347 			p_api_version      => l_api_version,
348                      	p_init_msg_list    => l_init_msg_list,
349                      	x_return_status    => x_return_status,
350                      	x_msg_count        => l_msg_count,
351                      	x_msg_data         => l_msg_data,
352                      	x_request_id       => x_request_history_id
353                 );
354      	JTF_FM_UTL_V.PRINT_MESSAGE('Start_Request Return Status is ' || x_return_status,
355 		JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
356 
357 	  	IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
358       	  	RAISE FND_API.G_EXC_ERROR;
359       	END IF;
360 
361 	  	JTF_FM_UTL_V.PRINT_MESSAGE('Inside ocm pkg request id is ' || to_char(x_request_history_id),
362 					    JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
363       		l_total := p_fulfill_electronic_rec.bind_names.count;
364       		FOR i IN 1..l_total LOOP
365 	       	  l_bind_var(i) := p_fulfill_electronic_rec.bind_names(i);
366        		  l_bind_val(i) := p_fulfill_electronic_rec.bind_values(i);
367        	  	  l_bind_var_type(i) := 'VARCHAR2';
368       		END LOOP;
369 
370 	      l_content_id := p_fulfill_electronic_rec.template_id;
371 	      JTF_FM_UTL_V.PRINT_MESSAGE('Inside ocm pkg l_content_id is ' || to_char(l_content_id),
372 	      JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
373 
374 	      /**
375 	   	just before calling send request we will insert a record into
376    	   	history table. Reason. GET_ATTACH_FILE_ID AND GET_FILE_ID in jtfgfmob.pls should
377    	   	know about REQUEST_TYPE 'T'
378    	   	other details in GET_ATTACH_FILE_ID and GET_FILE_ID
379 	      **/
380       	 IF (upper(p_fulfill_electronic_rec.request_type) = 'T') THEN
381     	  	  JTF_FM_UTL_V.PRINT_MESSAGE('THE REQUEST TYPE IS TEST',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
382           	  INSERT INTO JTF_FM_TEST_REQUESTS (REQUEST_ID) VALUES (x_request_history_id);
383       	 END IF;
384 
385 	  /********************************************************
386 	  Following modifications were made for Label but
387 	  the design is not finalized yet 8-27-03.  .
388 	  This is subject to change
389 
390 
391 	  *********************************************************/
392 	      IF(upper(p_fulfill_electronic_rec.request_type) = 'L') THEN
393 		      l_content_nm := 'L';
394 		  END IF;
395 
396 	      /**
397 	  	 get content xml is called after calling start request
398 		 this prepares the content related xml
399 
400 		 for single request
401 		 p_email,p_file_path,,p_fax should change
402 	      **/
403 
404       	      JTF_FM_REQUEST_GRP.GET_CONTENT_XML
405                      (p_api_version      => p_api_version,
406                       x_return_status    => x_return_status,
407                       x_msg_count        => x_msg_count,
408                       x_msg_data         => x_msg_data,
409                       p_content_id       => l_content_id,
410                       p_content_nm       => l_content_nm,
411                       p_document_type    => 'htm',
412                       p_quantity         => l_quantity,
413                       p_media_type       => l_var_media_type,
414                       p_printer          => l_printer_val,
415                       p_email            => l_email_val,
416                       p_file_path        => null,
417                       p_fax              => l_fax_val,
418                       p_user_note        => 'USER NOTE',
419                       p_content_type     => 'QUERY',
420                       p_bind_var         => l_bind_var,
421                       p_bind_val         => l_bind_val,
422                       p_bind_var_type    => l_bind_var_type,
423                       p_request_id       => x_request_history_id,
424                       x_content_xml      => l_content_xml1,
425                       p_content_source   => 'ocm',
426                       p_version          => p_fulfill_electronic_rec.version_id
427               );
428 
429 	      JTF_FM_UTL_V.PRINT_MESSAGE('Get_Content_XML Return Status is ' || x_return_status,
430 	      				  JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
431 
432      	 l_content_xml := l_content_xml1;
433 
434      	 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
435      		RAISE   FND_API.G_EXC_ERROR;
436      	 END IF;
437 
438 	     IF(upper(p_fulfill_electronic_rec.log_user_ih) = 'Y') THEN
439          	l_per_user_history := FND_API.G_TRUE;
440    	     ELSE
441        		l_per_user_history := FND_API.G_FALSE;
442    	     END IF;
443 
444 	     IF(length(p_fulfill_electronic_rec.subject) > 250) THEN
445          	l_subject  := substrb(p_fulfill_electronic_rec.subject,1,250);
446      	 ELSE
447          	l_subject  := p_fulfill_electronic_rec.subject;
448      	 END IF;
449 
450 	     /**
451 	 	if the request type is 'T', then call the submit test request
452 	     **/
453       	    IF upper(p_fulfill_electronic_rec.request_type) = 'T' THEN
454              	GET_TEST_XML
455            		     (p_party_id           => p_fulfill_electronic_rec.party_id,
456             		 p_email              => p_fulfill_electronic_rec.email,
457             	 	 p_fax                => p_fulfill_electronic_rec.fax,
458 			         p_printer            => p_fulfill_electronic_rec.printer,
459             		 p_content_xml        => l_content_xml,
460 					 x_return_status      => l_return_status,
461 					 x_test_xml           => x_test_xml
462 
463             		) ;
464 			JTF_FM_UTL_V.PRINT_MESSAGE('GET_TEST_XML Return Status is ' || x_return_status,
465 						   JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
466            	    IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
467 			    THEN
468 		               RAISE FND_API.G_EXC_ERROR;
469            	    END IF;
470 
471       	   END IF;
472 
473 
474            -- Check if the agent wants detailed history
475        IF l_per_user_history = FND_API.G_FALSE THEN
476     		l_fm_pvt_rec.party_id := -229929;
477 	   END IF;
478 
479 	   /**
480 		   	  set all the values for the record type based on the
481 			  parameters passed into CREATE_FULFILLMENT
482 	   **/
483 	   /**
484 	   	  identify if it it is a single or a mass request
485 	   **/
486 	   IF(upper(p_fulfill_electronic_rec.request_type) = 'S')THEN
487 
488 	   	   l_fm_pvt_rec.queue := 'S';
489 		   l_message :=l_content_xml;
490 	   ELSIF(upper(p_fulfill_electronic_rec.request_type) = 'T') THEN
491 	       l_fm_pvt_rec.queue := 'B';
492 		   l_message := x_test_xml;
493 		   l_fm_pvt_rec.preview := 'TEST';
494 	   ELSE --assuming the only other case is mass
495 	   	   l_fm_pvt_rec.queue := 'M';
496 		   -- check if content_source is 'ocm', else throw error
497 		   -- Mass request is supported only for OCM contents
498 		   -- Proceed
499 	       IF(INSTR(l_content_xml,'query_id') >0)
500 	       THEN
501 			JTF_FM_UTL_V.PRINT_MESSAGE('Item has a valid query OCM Repository',
502 				JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
503 			  IF upper(p_fulfill_electronic_rec.request_type) = 'L' THEN
504 			     l_message := '<items>' || l_content_xml || '</items><batch><label/></batch>';
505 			  ELSE
506 			     l_message := '<items>' || l_content_xml || '</items><batch><mass/></batch>';
507 		      END IF;
508 	       ELSE
509 	 	        -- throw error, item should have a query assoc for mass requests
510 			l_Error_Msg := 'Content must have a valid query associated with it.';
511 			JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_OCM_QUERY',l_content_id);
512                 	RAISE  FND_API.G_EXC_ERROR;
513 	       END IF;
514 	   END IF;
515 	   l_fm_pvt_rec.priority := 1.0;
516    	   l_fm_pvt_rec.content_xml := l_message;
517 	   l_fm_pvt_rec.request_id :=  x_request_history_id ;
518 	   l_fm_pvt_rec.doc_id := 1.0;
519 	   l_fm_pvt_rec.doc_ref := 'UNSET';
520   	   JTF_FM_UTL_V.FM_SUBMIT_REQ_V1
521   	   (
522 		   	p_api_version ,
523 		    p_init_msg_list,
524 			p_commit,
525 			x_return_status,
526 			x_msg_count,
527 			x_msg_data,
528 			p_fulfill_electronic_rec,
529 			l_fm_pvt_rec
530 	   );
531 	   JTF_FM_UTL_V.PRINT_MESSAGE('Submit_Mass_Request Return Status is ' || x_return_status,
532 	   			       JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
533        IF(l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
534            	RAISE FND_API.G_EXC_ERROR;
535    	   END IF;
536 
537 	   IF(upper(p_fulfill_electronic_rec.request_type) = 'T') THEN
538 
539 	      UPDATE JTF_FM_REQUEST_HISTORY_ALL
540           SET request_type = 'T'
541           WHERE hist_req_id = x_request_history_id;
542 	   END IF;
543 
544 
545   ELSE
546   	   l_Error_Msg := 'Invalid request type specified. Only allowed values are ';
547 	   l_Error_Msg := l_ERROR_Msg || 'E,P or T';
548        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
549        THEN
550             FND_MESSAGE.set_name('JTF', 'JTF_FM_API_INVALID_REQTYPE');
551             FND_MSG_PUB.Add;
552        END IF; -- IF FND_MSG_PUB.check_msg_level
553          RAISE  FND_API.G_EXC_ERROR;
554   END IF; -- end if electronic fulfillment
555 
556   -- Standard check of p_commit.
557     IF FND_API.To_Boolean( p_commit ) THEN
558       COMMIT WORK;
559     END IF;
560 
561     -- Standard call to get message count and if count is 1, get message info.
562     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data  => x_msg_data );
563 
564 
565   EXCEPTION
566     WHEN FND_API.G_EXC_ERROR THEN
567     ROLLBACK TO create_fulfillment;
568 	   x_return_status := FND_API.G_RET_STS_ERROR ;
569 	   FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data  => x_msg_data );
570 
571     WHEN FND_API.G_EXC_UNEXPECTED_ERROR
572     THEN
573 	    ROLLBACK TO create_fulfillment;
574 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
575 	   FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data  => x_msg_data );
576 
577     WHEN OTHERS
578     THEN
579 	ROLLBACK TO create_fulfillment;
580     	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
581 	IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
582 	THEN
583        	    FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name);
584 	END IF;
585 	FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
586 
587   END CREATE_FULFILLMENT;
588 END JTF_FM_OCM_REQUEST_GRP;