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