DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_INTERFACES_PUB

Source


1 PACKAGE BODY XDP_INTERFACES_PUB AS
2 /* $Header: XDPINPBB.pls 120.1 2005/06/15 23:16:12 appldev  $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'XDP_INTERFACES_PUB';
5 
6 PROCEDURE Process_Order(
7 	p_api_version 	IN 	NUMBER,
8 	p_init_msg_list	IN 	VARCHAR2 := FND_API.G_FALSE,
9 	p_commit		IN	VARCHAR2 := FND_API.G_FALSE,
10 	p_validation_level	IN 	NUMBER :=
11 							FND_API.G_VALID_LEVEL_FULL,
12  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
13 	x_msg_count			OUT NOCOPY NUMBER,
14 	x_msg_data			OUT NOCOPY VARCHAR2,
15  	P_ORDER_HEADER 		IN  XDP_TYPES.ORDER_HEADER,
16  	P_ORDER_PARAMETER 	IN  XDP_TYPES.ORDER_PARAMETER_LIST,
17  	P_ORDER_LINE_LIST 	IN  XDP_TYPES.ORDER_LINE_LIST,
18  	P_LINE_PARAMETER_LIST 	IN  XDP_TYPES.LINE_PARAM_LIST,
19 	x_SDP_ORDER_ID		   OUT NOCOPY NUMBER)
20 IS
21    l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_ORDER';
22    l_api_version	CONSTANT NUMBER := 11.5;
23    lv_ret number;
24    lv_str varchar2(800);
25  	lv_ORDER_HEADER 		XDP_TYPES.ORDER_HEADER;
26  	lv_ORDER_PARAMETER 	XDP_TYPES.ORDER_PARAMETER_LIST;
27  	lv_ORDER_LINE_LIST 	XDP_TYPES.ORDER_LINE_LIST;
28  	lv_LINE_PARAMETER_LIST 	XDP_TYPES.LINE_PARAM_LIST;
29    lv_index binary_integer;
30    lv_count number;
31    lv_done varchar2(1);
32    lv_proc varchar2(80);
33 	l_return_code		varchar2(1);
34 	l_data			Varchar2(100);
35 	l_count			Number;
36 	l_sdp_order_id		number;
37 	l_OAI_array		JTF_USR_HKS.OAI_data_array_type ;
38 	l_bind_data_id number;
39 
40  BEGIN
41 
42 	-- Standard Start of API savepoint
43 	-- SAVEPOINT	l_order_tag;
44 
45 	-- Standard call to check for call compatibility.
46 	IF NOT FND_API.Compatible_API_Call (
47 					l_api_version,
48 					p_api_version,
49 					l_api_name,
50 					G_PKG_NAME )
51 	THEN
52 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
53 	END IF;
54 
55 	-- Initialize message list if p_init_msg_list is set to TRUE.
56 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
57 		FND_MSG_PUB.initialize;
58 	END IF;
59 
60     /******* Prepare for going into pre processing *******/
61 
62 	lv_ORDER_HEADER := P_ORDER_HEADER;
63 	lv_ORDER_PARAMETER := P_ORDER_PARAMETER;
64 	lv_ORDER_LINE_LIST := P_ORDER_LINE_LIST;
65 	lv_LINE_PARAMETER_LIST := P_LINE_PARAMETER_LIST;
66 	l_sdp_order_id := x_SDP_ORDER_ID;
67 
68 	if JTF_USR_HKS.Ok_to_Execute(
69 					'XDP_INTERFACES_PO_CUHK',
70 					'PROCESS_ORDER_PRE',
71 					'B',
72 					'C' )
73 	then
74 
75 		XDP_INTERFACES_PO_CUHK.Process_order_Pre(
76 				p_order_header => lv_ORDER_HEADER,
77 				p_order_parameter => lv_ORDER_PARAMETER,
78 				p_order_line_list => lv_ORDER_LINE_LIST,
79 				p_line_parameter_list => lv_LINE_PARAMETER_LIST,
80 				p_sdp_order_id => l_sdp_order_id,
81 				x_data => l_data,
82 				x_count => l_count,
83 			  	x_return_code => l_return_code );
84 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
85 			RAISE FND_API.G_EXC_ERROR;
86 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
87 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
88 		end if;
89 	 end if;
90 
91 	if JTF_USR_HKS.Ok_to_Execute(
92 					'XDP_INTERFACES_PO_VUHK',
93 					'PROCESS_ORDER_PRE',
94 					'B',
95 					'V' )
96 	then
97 		XDP_INTERFACES_PO_VUHK.Process_order_Pre(
98 				p_order_header => lv_ORDER_HEADER,
99 				p_order_parameter => lv_ORDER_PARAMETER,
100 				p_order_line_list => lv_ORDER_LINE_LIST,
101 				p_line_parameter_list => lv_LINE_PARAMETER_LIST,
102 				p_sdp_order_id => l_sdp_order_id,
103 				x_data => l_data,
104 				x_count => l_count,
105 			  	x_return_code => l_return_code );
106 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
107 			RAISE FND_API.G_EXC_ERROR;
108 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
109 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
110 		end if;
111 	end if;
112 
113 
114     /******* Start of API Body *******/
115 
116         XDP_INTERFACES.Process_Order(
117  	                            P_ORDER_HEADER => P_ORDER_HEADER,
118  	                            P_ORDER_PARAMETER => P_ORDER_PARAMETER,
119  	                            P_ORDER_LINE_LIST => P_ORDER_LINE_LIST,
120  	                            P_LINE_PARAMETER_LIST => P_LINE_PARAMETER_LIST,
121 	                            SDP_ORDER_ID => x_SDP_ORDER_ID,
122  	                            RETURN_CODE => lv_ret,
123  	                            ERROR_DESCRIPTION => lv_str);
124 
125 	   if lv_ret <> 0 then
126 		x_return_status := FND_API.G_RET_STS_ERROR ;
127 		FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_PROCESS_FAIL');
128 		FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
129 		FND_MSG_PUB.Add;
130 		FND_MSG_PUB.COUNT_AND_GET
131 		 (  p_count => x_msg_count,
132 			p_data => x_msg_data
133 		 );
134 		return;
135 	   end if;
136 
137 
138      /******* End of API Body *******/
139 
140 
141     /******* Post Processing call *******/
142 
143 	l_sdp_order_id := x_SDP_ORDER_ID;
144 
145 	if   JTF_USR_HKS.Ok_to_Execute(
146 					'XDP_INTERFACES_PO_CUHK',
147 					'PROCESS_ORDER_POST',
148 					'A',
149 					'C' )
150 	then
151 		XDP_INTERFACES_PO_CUHK.Process_order_Post(
152 				p_order_header => lv_ORDER_HEADER,
153 				p_order_parameter => lv_ORDER_PARAMETER,
154 				p_order_line_list => lv_ORDER_LINE_LIST,
155 				p_line_parameter_list => lv_LINE_PARAMETER_LIST,
156 				p_sdp_order_id => l_sdp_order_id,
157 				x_data => l_data,
158 				x_count => l_count,
159 			  	x_return_code => l_return_code );
160 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
161 			RAISE FND_API.G_EXC_ERROR;
162 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
163 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
164 		end if;
165 	 end if;
166 
167 	if   JTF_USR_HKS.Ok_to_Execute(
168 					'XDP_INTERFACES_PO_VUHK',
169 					'PROCESS_ORDER_POST',
170 					'A',
171 					'V' )
172 	then
173 		XDP_INTERFACES_PO_VUHK.Process_order_Post(
174 				p_order_header => lv_ORDER_HEADER,
175 				p_order_parameter => lv_ORDER_PARAMETER,
176 				p_order_line_list => lv_ORDER_LINE_LIST,
177 				p_line_parameter_list => lv_LINE_PARAMETER_LIST,
178 				p_sdp_order_id => l_sdp_order_id,
179 				x_data => l_data,
180 				x_count => l_count,
181 			  	x_return_code => l_return_code );
182 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
183 			RAISE FND_API.G_EXC_ERROR;
184 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
185 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
186 		end if;
187 	end if;
188 
189 
190 
191       /******* Message Generation Section ********/
192 
193       if JTF_USR_HKS.Ok_to_Execute('XDP_INTERFACES_PO_CUHK',
194                                    'Ok_to_Generate_msg',
195                                    'M',
196                                    'M'
197                                    ) then
198 
199         if (XDP_INTERFACES_PO_CUHK.Ok_to_Generate_msg(
200                      p_order_header => lv_ORDER_HEADER,
201 				     p_order_parameter => lv_ORDER_PARAMETER,
202 				     p_order_line_list => lv_ORDER_LINE_LIST,
203 				     p_line_parameter_list => lv_LINE_PARAMETER_LIST,
204 				     p_sdp_order_id => l_sdp_order_id
205 				      ))  then
206 
207 	   -- XMLGEN.clearBindValues;
208 	   -- XMLGEN.setBindValue('ORDER_ID', l_sdp_order_id);
209 		  l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
210 	   	  JTF_USR_HKS.Load_Bind_Data(
211 					l_bind_data_id,
212 					'ORDER_ID',
213 					TO_CHAR(l_sdp_order_id),
214 					'S',
215 					'NUMBER');
216 
217 	       JTF_USR_HKS.generate_message(
218 						p_prod_code => 'XDP',
219 	                    p_bus_obj_code => 'PO',
220 	                    p_action_code => 'I',
221 	                    p_correlation => NULL,
222 	                    p_bind_data_id => l_bind_data_id,
223 	                    x_return_code => l_return_code
224 	                         );
225 
226             if (l_return_code = FND_API.G_RET_STS_ERROR) then
227                 RAISE FND_API.G_EXC_ERROR;
228             elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) then
229                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
230             end if;
231           end if;
232         end if;
233 
234       /******* End of Message Generation Section ********/
235 
236 	x_return_status := FND_API.G_RET_STS_SUCCESS;
237 
238 -- Standard check of p_commit.
239 	IF FND_API.To_Boolean( p_commit ) THEN
240 			COMMIT WORK;
241 	END IF;
242 
243 -- Standard call to get message count and if count is 1, get message info.
244 	FND_MSG_PUB.Count_And_Get (
245 			p_count	=> x_msg_count,
246 			p_data 	=> x_msg_data      );
247 
248 EXCEPTION
249 	WHEN FND_API.G_EXC_ERROR THEN
250 		-- ROLLBACK TO l_order_tag;
251 		x_return_status := FND_API.G_RET_STS_ERROR ;
252 		FND_MSG_PUB.Count_And_Get
253 		(  	p_count	=>   x_msg_count ,
254 			p_data 	=>   x_msg_data
255 		);
256 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257 		-- ROLLBACK TO l_order_tag;
258 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
259 		FND_MSG_PUB.Count_And_Get
260 		(  	p_count	=>   x_msg_count,
261 			p_data 	=>   x_msg_data
262 		);
263 	WHEN OTHERS THEN
264 		-- ROLLBACK TO l_order_tag;
265 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
266 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
267 		THEN
268 			FND_MSG_PUB.Add_Exc_Msg
269 				(	G_PKG_NAME  	    ,
270 					l_api_name
271 				);
272 		END IF;
273 		FND_MSG_PUB.Count_And_Get
274 		(  	p_count	=> x_msg_count,
275 			p_data  => x_msg_data
276 		);
277 
278  END Process_Order;
279 
280     /************* End of Process Order ****************/
281 
282 
283 PROCEDURE Cancel_Order(
284 	p_api_version 	IN 	NUMBER,
285 	p_init_msg_list	IN 	VARCHAR2 := FND_API.G_FALSE,
286 	p_commit		IN	VARCHAR2 := FND_API.G_FALSE,
287 	p_validation_level	IN 	NUMBER :=
288 							FND_API.G_VALID_LEVEL_FULL,
289  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
290 	x_msg_count			OUT NOCOPY NUMBER,
291 	x_msg_data			OUT NOCOPY VARCHAR2,
292  	P_SDP_ORDER_ID 		IN NUMBER,
293 	p_caller_name 		IN VARCHAR2 )
294 IS
295 
296    l_api_name CONSTANT VARCHAR2(30) := 'CANCEL_ORDER';
297    l_api_version	CONSTANT NUMBER := 11.5;
298    lv_ret number;
299    lv_str varchar2(800);
300    lv_index binary_integer;
301    lv_count number;
302    lv_done varchar2(1);
303    lv_proc varchar2(80);
304         l_caller_name           varchar2(100);
305 	l_return_code		varchar2(1);
306 	l_data			Varchar2(100);
307 	l_count			Number;
308 	l_sdp_order_id		number;
309 	l_OAI_array		JTF_USR_HKS.OAI_data_array_type ;
310 	l_bind_data_id number;
311 
312 BEGIN
313 
314 	-- Standard Start of API savepoint
315 	-- SAVEPOINT	l_order_tag;
316 
317 	-- Standard call to check for call compatibility.
318 	IF NOT FND_API.Compatible_API_Call (
319 					l_api_version,
320 					p_api_version,
321 					l_api_name,
322 					G_PKG_NAME )
323 	THEN
324 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
325 	END IF;
326 
327 	-- Initialize message list if p_init_msg_list is set to TRUE.
328 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
329 		FND_MSG_PUB.initialize;
330 	END IF;
331 
332 
333     /******* Prepare for going into pre processing *******/
334 
335 	l_caller_name := p_caller_name;
336 	l_sdp_order_id := P_SDP_ORDER_ID;
337 
338 	if   JTF_USR_HKS.Ok_to_Execute(
339 					'XDP_INTERFACES_CO_CUHK',
340 					'CANCEL_ORDER_PRE',
341 					'B',
342 					'C' )
343 	then
344 		XDP_INTERFACES_CO_CUHK.Cancel_order_Pre(
345 				p_caller_name => l_caller_name,
346 				p_sdp_order_id => l_sdp_order_id,
347 				x_data => l_data,
348 				x_count => l_count,
349 			  	x_return_code => l_return_code );
350 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
351 			RAISE FND_API.G_EXC_ERROR;
352 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
353 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
354 		end if;
355 	 end if;
356 
357 	if   JTF_USR_HKS.Ok_to_Execute(
358 					'XDP_INTERFACES_CO_VUHK',
359 					'CANCEL_ORDER_PRE',
360 					'B',
361 					'V' )
362 	then
363 		XDP_INTERFACES_CO_VUHK.Cancel_order_Pre(
364 				p_caller_name => l_caller_name,
365 				p_sdp_order_id => l_sdp_order_id,
366 				x_data => l_data,
367 				x_count => l_count,
368 			  	x_return_code => l_return_code );
369 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
370 			RAISE FND_API.G_EXC_ERROR;
371 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
372 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
373 		end if;
374 	end if;
375 
376 
377     /******* Start of API Body *******/
378 
379         XDP_INTERFACES.Cancel_Order(
380 	                            P_SDP_ORDER_ID => P_SDP_ORDER_ID,
381 	                            p_caller_name => p_caller_name,
382  	                            RETURN_CODE => lv_ret,
383  	                            ERROR_DESCRIPTION => lv_str);
384 
385 	   if lv_ret <> 0 then
386 		x_return_status := FND_API.G_RET_STS_ERROR ;
387 		FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_CANCEL_FAIL');
388 		FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
389 		FND_MSG_PUB.Add;
390 		FND_MSG_PUB.COUNT_AND_GET
391 		 (  p_count => x_msg_count,
392 			p_data => x_msg_data
393 		 );
394 		return;
395 	   end if;
396 
397 
398      /******* End of API Body *******/
399 
400 
401     /******* Post Processing call *******/
402 
403 	l_sdp_order_id := P_SDP_ORDER_ID;
404 
405 	if   JTF_USR_HKS.Ok_to_Execute(
406 					'XDP_INTERFACES_CO_CUHK',
407 					'CANCEL_ORDER_POST',
408 					'A',
409 					'C' )
410 	then
411 		XDP_INTERFACES_CO_CUHK.Cancel_order_Post(
412 				p_caller_name => l_caller_name,
413 				p_sdp_order_id => l_sdp_order_id,
414 				x_data => l_data,
415 				x_count => l_count,
416 			  	x_return_code => l_return_code );
417 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
418 			RAISE FND_API.G_EXC_ERROR;
419 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
420 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421 		end if;
422 	 end if;
423 
424 	if   JTF_USR_HKS.Ok_to_Execute(
425 					'XDP_INTERFACES_CO_VUHK',
426 					'CANCEL_ORDER_POST',
427 					'A',
428 					'V' )
429 	then
430 		XDP_INTERFACES_CO_VUHK.Cancel_order_Post(
431 				p_caller_name => l_caller_name,
432 				p_sdp_order_id => l_sdp_order_id,
433 				x_data => l_data,
434 				x_count => l_count,
435 			  	x_return_code => l_return_code );
436 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
437 			RAISE FND_API.G_EXC_ERROR;
438 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
439 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
440 		end if;
441 	end if;
442 
443 
444       /******* Message Generation Section ********/
445 
446       if JTF_USR_HKS.Ok_to_Execute('XDP_INTERFACES_CO_CUHK',
447                                    'Ok_to_Generate_msg',
448                                    'M',
449                                    'M'
450                                    ) then
451 
452         if (XDP_INTERFACES_CO_CUHK.Ok_to_Generate_msg(
453                                  p_caller_name => l_caller_name,
454 				                 p_sdp_order_id => l_sdp_order_id
455 				                 ))  then
456 
457 	    --XMLGEN.clearBindValues;
458 	    --XMLGEN.setBindValue('ORDER_ID', l_sdp_order_id);
459 
460 		  l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
461 	   	  JTF_USR_HKS.Load_Bind_Data(
462 					l_bind_data_id,
463 					'ORDER_ID',
464 					TO_CHAR(l_sdp_order_id),
465 					'S',
466 					'NUMBER');
467 
468 	       JTF_USR_HKS.generate_message(
469 						p_prod_code => 'XDP',
470 	                    p_bus_obj_code => 'CO',
471 	                    p_action_code => 'I',
472 	                    p_correlation => NULL,
473 	                    p_bind_data_id => l_bind_data_id,
474 	                    x_return_code => l_return_code
475 	                         );
476 
477             if (l_return_code = FND_API.G_RET_STS_ERROR) then
478                 RAISE FND_API.G_EXC_ERROR;
479             elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) then
480                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
481             end if;
482           end if;
483         end if;
484 
485       /******* End of Message Generation Section ********/
486 
487 	x_return_status := FND_API.G_RET_STS_SUCCESS;
488 
489 -- Standard check of p_commit.
490 	IF FND_API.To_Boolean( p_commit ) THEN
491 			COMMIT WORK;
492 	END IF;
493 
494 -- Standard call to get message count and if count is 1, get message info.
495 	FND_MSG_PUB.Count_And_Get (
496 			p_count	=> x_msg_count,
497 			p_data 	=> x_msg_data      );
498 
499 EXCEPTION
500 	WHEN FND_API.G_EXC_ERROR THEN
501 		-- ROLLBACK TO l_order_tag;
502 		x_return_status := FND_API.G_RET_STS_ERROR ;
503 		FND_MSG_PUB.Count_And_Get
504 		(  	p_count	=>   x_msg_count ,
505 			p_data 	=>   x_msg_data
506 		);
507 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
508 		-- ROLLBACK TO l_order_tag;
509 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
510 		FND_MSG_PUB.Count_And_Get
511 		(  	p_count	=>   x_msg_count,
512 			p_data 	=>   x_msg_data
513 		);
514 	WHEN OTHERS THEN
515 		-- ROLLBACK TO l_order_tag;
516 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
517 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
518 		THEN
519 			FND_MSG_PUB.Add_Exc_Msg
520 				(	G_PKG_NAME  	    ,
521 					l_api_name
522 				);
523 		END IF;
524 		FND_MSG_PUB.Count_And_Get
525 		(  	p_count	=> x_msg_count,
526 			p_data  => x_msg_data
527 		);
528 
529 END Cancel_Order;
530 
531 PROCEDURE Get_Order_Parameter_Value(
532 	p_api_version 	IN 	NUMBER,
533  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
534 	x_RETURN_MSG		OUT NOCOPY VARCHAR2,
535 	x_ORDER_PARAM_VALUE	OUT NOCOPY VARCHAR2,
536  	P_SDP_ORDER_ID 		IN NUMBER,
537  	P_ORDER_PARAM_NAME	IN VARCHAR2,
538 	p_CALLER_NAME 		IN VARCHAR2 ) IS
539 l_api_name CONSTANT VARCHAR2(30) := 'GET_ORDER_PARAMETER_VALUE';
540 l_api_version	CONSTANT NUMBER := 11.5;
541 l_ret_code NUMBER := 0;
542 l_ret_desc VARCHAR2(2000);
543 BEGIN
544 	-- Standard call to check for call compatibility.
545 	IF NOT FND_API.Compatible_API_Call (
546 					l_api_version,
547 					p_api_version,
548 					l_api_name,
549 					G_PKG_NAME )
550 	THEN
551 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
552 	END IF;
553 
554     /******* Start of API Body *******/
555         XDP_INTERFACES.Get_Order_Param_Value(
556 	                           	P_ORDER_ID => P_SDP_ORDER_ID,
557 	                           	p_parameter_name => P_ORDER_PARAM_NAME,
558 	                           	x_parameter_value => x_ORDER_PARAM_VALUE,
559  	                            x_RETURN_CODE => l_ret_code,
560  	                            x_ERROR_DESCRIPTION => l_ret_desc);
561  	    IF l_ret_code = 0 THEN
562 			x_return_status := FND_API.G_RET_STS_SUCCESS;
563 			x_RETURN_MSG := '';
564 		ELSE
565 			x_return_status := FND_API.G_RET_STS_ERROR;
566 			x_RETURN_MSG := l_ret_desc;
567 		END IF;
568 
569      /******* End of API Body *******/
570 EXCEPTION
571 	WHEN FND_API.G_EXC_ERROR THEN
572 		x_return_status := FND_API.G_RET_STS_ERROR ;
573 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
574 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
575 	WHEN OTHERS THEN
576 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
577 
578 END Get_Order_Parameter_Value;
579 
580 PROCEDURE Get_Order_Parameter_List(
581 	p_api_version 	IN 	NUMBER,
582  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
583 	x_RETURN_MSG		OUT NOCOPY VARCHAR2,
584 	x_ORDER_PARAM_LIST	OUT NOCOPY XDP_ENGINE.PARAMETER_LIST,
585  	P_SDP_ORDER_ID 		IN NUMBER,
586 	p_CALLER_NAME 		IN VARCHAR2) IS
587 l_api_name CONSTANT VARCHAR2(30) := 'GET_ORDER_PARAMETER_LIST';
588 l_api_version	CONSTANT NUMBER := 11.5;
589 l_ret_code NUMBER := 0;
590 l_ret_desc VARCHAR2(2000);
591 BEGIN
592 	-- Standard call to check for call compatibility.
593 	IF NOT FND_API.Compatible_API_Call (
594 					l_api_version,
595 					p_api_version,
596 					l_api_name,
597 					G_PKG_NAME )
598 	THEN
599 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
600 	END IF;
601 
602     /******* Start of API Body *******/
603 
604         x_ORDER_PARAM_LIST := XDP_INTERFACES.Get_Order_Param_List(
605 	                           	P_ORDER_ID => P_SDP_ORDER_ID,
606  	                            x_RETURN_CODE => L_ret_code,
607  	                            x_ERROR_DESCRIPTION => l_ret_desc);
608  	    IF l_ret_code = 0 THEN
609 			x_return_status := FND_API.G_RET_STS_SUCCESS;
610 			x_RETURN_MSG := '';
611 		ELSE
612 			x_return_status := FND_API.G_RET_STS_ERROR;
613 			x_RETURN_MSG := l_ret_desc;
614 		END IF;
615 
616      /******* End of API Body *******/
617 EXCEPTION
618 	WHEN FND_API.G_EXC_ERROR THEN
619 		x_return_status := FND_API.G_RET_STS_ERROR ;
620 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
621 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
622 	WHEN OTHERS THEN
623 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
624 END Get_Order_Parameter_List;
625 
626 PROCEDURE Get_Line_Parameter_Value(
627 	p_api_version 	IN 	NUMBER,
628  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
629 	x_RETURN_MSG		OUT NOCOPY VARCHAR2,
630 	x_LINE_PARAM_VALUE	OUT NOCOPY VARCHAR2,
631  	P_SDP_ORDER_ID 		IN NUMBER,
632  	P_LINE_NUMBER 		IN NUMBER,
633  	P_LINE_PARAM_NAME	IN VARCHAR2,
634 	p_CALLER_NAME 		IN VARCHAR2 ) IS
635 l_api_name CONSTANT VARCHAR2(30) := 'GET_LINE_PARAMETER_VALUE';
636 l_api_version	CONSTANT NUMBER := 11.5;
637 l_ret_code NUMBER := 0;
638 l_ret_desc VARCHAR2(2000);
639 BEGIN
640 	-- Standard call to check for call compatibility.
641 	IF NOT FND_API.Compatible_API_Call (
642 					l_api_version,
643 					p_api_version,
644 					l_api_name,
645 					G_PKG_NAME )
646 	THEN
647 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
648 	END IF;
649 
650     /******* Start of API Body *******/
651         XDP_INTERFACES.Get_Line_Param_Value(
652 	                           	P_ORDER_ID => P_SDP_ORDER_ID,
653 	                           	p_LINE_NUMBER => P_LINE_NUMBER,
654 	                           	p_parameter_name => p_LINE_PARAM_NAME,
655 	                           	x_parameter_value => x_LINE_PARAM_VALUE,
656  	                            x_RETURN_CODE => l_ret_code,
657  	                            x_ERROR_DESCRIPTION => l_ret_desc);
658  	    IF l_ret_code = 0 THEN
659 			x_return_status := FND_API.G_RET_STS_SUCCESS;
660 			x_RETURN_MSG := '';
661 		ELSE
662 			x_return_status := FND_API.G_RET_STS_ERROR;
663 			x_RETURN_MSG := l_ret_desc;
664 		END IF;
665 
666      /******* End of API Body *******/
667 EXCEPTION
668 	WHEN FND_API.G_EXC_ERROR THEN
669 		x_return_status := FND_API.G_RET_STS_ERROR ;
670 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
671 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
672 	WHEN OTHERS THEN
673 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
674 END Get_Line_Parameter_Value;
675 
676 
677 /*
678  Open interface new APIs.
679 
680  The following private procedures null all the gmiss fields
681  for their respective data structures.
682 */
683 
684 PROCEDURE TO_NULL(p_order_header IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_HEADER);
685 PROCEDURE TO_NULL(p_order_param_list IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_PARAM_LIST);
686 PROCEDURE TO_NULL(p_order_line_list IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_LINE_LIST);
687 PROCEDURE TO_NULL(p_line_param_list IN OUT NOCOPY XDP_TYPES.SERVICE_LINE_PARAM_LIST);
688 
689 
690 -- Process Order
691 
692 PROCEDURE Process_Order(
693     p_api_version 	    IN  NUMBER,
694     p_init_msg_list	    IN  VARCHAR2 :=	FND_API.G_FALSE,
695     p_commit	        IN  VARCHAR2 :=	FND_API.G_FALSE,
696     p_validation_level  IN  NUMBER 	 :=	FND_API.G_VALID_LEVEL_FULL,
697     x_return_status 	OUT NOCOPY VARCHAR2,
698     x_msg_count	        OUT NOCOPY NUMBER,
699     x_msg_data	        OUT NOCOPY VARCHAR2,
700     x_error_code	    OUT NOCOPY VARCHAR2,
701     p_order_header 	    IN  XDP_TYPES.SERVICE_ORDER_HEADER:= XDP_TYPES.G_MISS_SERVICE_ORDER_HEADER,
702     p_order_param_list  IN  XDP_TYPES.SERVICE_ORDER_PARAM_LIST:= XDP_TYPES.G_MISS_ORDER_PARAM_LIST,
703     p_order_line_list   IN  XDP_TYPES.SERVICE_ORDER_LINE_LIST:= XDP_TYPES.G_MISS_SERVICE_ORDER_LINE_LIST,
704     p_line_param_list   IN  XDP_TYPES.SERVICE_LINE_PARAM_LIST:= XDP_TYPES.G_MISS_LINE_PARAM_LIST,
705     x_order_id	  OUT NOCOPY NUMBER
706 )
707 IS
708     l_api_name      CONSTANT VARCHAR2(30) := 'PROCESS_ORDER';
709     l_api_version	CONSTANT NUMBER := 11.5;
710 
711     lv_ret          NUMBER;
712     lv_str          VARCHAR2(800);
713     lv_index        BINARY_INTEGER;
714     lv_count        NUMBER;
715     lv_done         VARCHAR2(1);
716     lv_proc         VARCHAR2(80);
717 
718 	l_return_code	VARCHAR2(1);
719 	l_data			VARCHAR2(100);
720 	l_count			NUMBER;
721 	l_order_id		NUMBER;
722 	l_OAI_array		JTF_USR_HKS.OAI_data_array_type ;
723 	l_bind_data_id  NUMBER;
724 
725  	lv_order_header 	    XDP_TYPES.SERVICE_ORDER_HEADER;
726  	lv_order_param_list 	XDP_TYPES.SERVICE_ORDER_PARAM_LIST;
727  	lv_order_line_list	    XDP_TYPES.SERVICE_ORDER_LINE_LIST;
728  	lv_line_param_list 	    XDP_TYPES.SERVICE_LINE_PARAM_LIST;
729 
730 BEGIN
731 	-- Standard call to check for call compatibility.
732 
733 	IF NOT FND_API.Compatible_API_Call (
734         l_api_version,
735         p_api_version,
736         l_api_name,
737         G_PKG_NAME
738     )
739 	THEN
740 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
741 	END IF;
742 
743 	-- Initialize message list if p_init_msg_list is set to TRUE.
744 
745 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
746 		FND_MSG_PUB.initialize;
747 	END IF;
748 
749 -- Converting G_Miss variables
750     x_error_code := 0;
751  	lv_order_header 	    := p_order_header;
752  	lv_order_param_list	    := p_order_param_list;
753  	lv_order_line_list 	    := p_order_line_list;
754  	lv_line_param_list 	    := p_line_param_list;
755 
756 -- Converting G_Miss variables to null before calling any internal pl/sql procedures
757 
758     TO_NULL(lv_order_header);
759     TO_NULL(lv_order_param_list);
760     TO_NULL(lv_order_line_list);
761     TO_NULL(lv_line_param_list);
762 
763     IF JTF_USR_HKS.Ok_to_Execute(
764 	    'XDP_INTERFACES_SO_CUHK',
765         'PROCESS_ORDER_PRE',
766         'B','C' )
767 	THEN
768 		XDP_INTERFACES_SO_CUHK.Process_Order_Pre(
769 				p_order_header => lv_order_header,
770 				p_order_param_list => lv_order_param_list,
771 				p_order_line_list => lv_order_line_list,
772 				p_line_param_list => lv_line_param_list,
773 				p_order_id => l_order_id,
774 				x_data => l_data,
775 				x_count => l_count,
776 			  	x_return_code => l_return_code );
777 		IF  (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
778 			RAISE FND_API.G_EXC_ERROR;
779 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
780 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
781 		END IF;
782 	END IF;
783 
784 	IF JTF_USR_HKS.Ok_to_Execute(
785 		'XDP_INTERFACES_SO_VUHK',
786 		'PROCESS_ORDER_PRE',
787 		'B','V')
788 	THEN
789 		XDP_INTERFACES_SO_VUHK.Process_Order_Pre(
790 				p_order_header => lv_order_header,
791 				p_order_param_list => lv_order_param_list,
792 				p_order_line_list => lv_order_line_list,
793 				p_line_param_list => lv_line_param_list,
794 				p_order_id => l_order_id,
795 				x_data => l_data,
796 				x_count => l_count,
797 			  	x_return_code => l_return_code );
798 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
799 			RAISE FND_API.G_EXC_ERROR;
800 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
801 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
802 		END IF;
803     END IF;
804 
805     /******* Start of API Body *******/
806 
807     XDP_ORDER.Process_Order(
808 		lv_order_header,
809 		lv_order_param_list,
810 		lv_order_line_list,
811 		lv_line_param_list,
812         l_order_id,
813         lv_ret,
814         lv_str
815     );
816 
817     IF lv_ret <> 0 THEN
818         x_return_status := FND_API.G_RET_STS_ERROR ;
819         x_error_code := lv_ret;
820 	    FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_PROCESS_FAIL');
821 		FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
822     	FND_MSG_PUB.Add;
823 	    FND_MSG_PUB.COUNT_AND_GET(
824             p_count => x_msg_count,
825     		p_data => x_msg_data
826         );
827 --
828 --      We do not wrap the error message as FND_MSG does for UI messages
829 --      This will return the error message only
830 --
831         x_msg_data := lv_str;
832 		RETURN;
833     END IF;
834 
835     /******* End of API Body *******/
836 
837 
838     /******* Post Processing call *******/
839 	x_order_id := l_order_id;
840 
841 	IF JTF_USR_HKS.Ok_to_Execute(
842 		'XDP_INTERFACES_SO_CUHK',
843 		'PROCESS_ORDER_POST',
844 		'A','C' )
845 	THEN
846 		XDP_INTERFACES_SO_CUHK.Process_Order_Post(
847 			p_order_header => lv_order_header,
848 			p_order_param_list => lv_order_param_list,
849 			p_order_line_list => lv_order_line_list,
850 			p_line_param_list => lv_line_param_list,
851             p_order_id => l_order_id,
852 			x_data => l_data,
853 			x_count => l_count,
854 			x_return_code => l_return_code );
855 		IF (  l_return_code = FND_API.G_RET_STS_ERROR )  THEN
856 			RAISE FND_API.G_EXC_ERROR;
857 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
858 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
859 		END IF;
860     END IF;
861 
862 	IF JTF_USR_HKS.Ok_to_Execute(
863 	  	'XDP_INTERFACES_SO_VUHK',
864 	  	'PROCESS_ORDER_POST',
865 	  	'A','V' )
866 	THEN
867 		XDP_INTERFACES_SO_VUHK.Process_Order_Post(
868 			p_order_header => lv_order_header,
869 			p_order_param_list => lv_order_param_list,
870 			p_order_line_list => lv_order_line_list,
871 			p_line_param_list => lv_line_param_list,
872             p_order_id => l_order_id,
873 			x_data => l_data,
874 			x_count => l_count,
875 		  	x_return_code => l_return_code );
876 		IF (  l_return_code = FND_API.G_RET_STS_ERROR )  THEN
877 			RAISE FND_API.G_EXC_ERROR;
878 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
879 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
880 		END IF;
881 	END IF;
882 
883     /******* Message Generation Section ********/
884 
885     IF JTF_USR_HKS.Ok_to_Execute(
886         'XDP_INTERFACES_SO_CUHK',
887         'Ok_to_Generate_msg',
888         'M','M')
889     THEN
890         IF (XDP_INTERFACES_SO_CUHK.Ok_to_Generate_msg(
891 			p_order_header => lv_order_header,
892 			p_order_param_list => lv_order_param_list,
893 			p_order_line_list => lv_order_line_list,
894 			p_line_param_list => lv_line_param_list,
895             p_order_id => l_order_id))  THEN
896 
897 	   -- XMLGEN.clearBindValues;
898 	   -- XMLGEN.setBindValue('ORDER_ID', l_sdp_order_id);
899 
900     		  l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
901 	       	  JTF_USR_HKS.Load_Bind_Data(
902 					l_bind_data_id,
903 					'ORDER_ID',
904 					TO_CHAR(l_order_id),
905 					'S',
906 					'NUMBER');
907 
908 	           JTF_USR_HKS.generate_message(
909 						p_prod_code => 'XDP',
910 	                    p_bus_obj_code => 'PO',
911 	                    p_action_code => 'I',
912 	                    p_correlation => NULL,
913 	                    p_bind_data_id => l_bind_data_id,
914 	                    x_return_code => l_return_code
915 	            );
916 
917                 IF (l_return_code = FND_API.G_RET_STS_ERROR) THEN
918                     RAISE FND_API.G_EXC_ERROR;
919                 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) THEN
920                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
921                 END IF;
922           END IF;
923     END IF;
924 
925     /******* End of Message Generation Section ********/
926 
927 	x_return_status := FND_API.G_RET_STS_SUCCESS;
928     x_error_code := 0;
929 
930 -- Standard check of p_commit.
931 
932 	IF FND_API.To_Boolean(p_commit) THEN
933 		COMMIT WORK;
934 	END IF;
935 
936 -- Standard call to get message count and if count is 1, get message info.
937 
938 	FND_MSG_PUB.Count_And_Get (
939 		p_count	=> x_msg_count,
940 		p_data 	=> x_msg_data );
941 
942 EXCEPTION
943 	WHEN FND_API.G_EXC_ERROR THEN
944 		-- ROLLBACK TO l_order_tag;
945 		x_return_status := FND_API.G_RET_STS_ERROR ;
946         	x_error_code := SQLCODE;
947 		FND_MSG_PUB.Count_And_Get
948 		(  	p_count	=>   x_msg_count ,
949 			p_data 	=>   x_msg_data
950 		);
951 		x_msg_data := SQLERRM;
952 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
953 		-- ROLLBACK TO l_order_tag;
954 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
955         	x_error_code := SQLCODE;
956 		FND_MSG_PUB.Count_And_Get
957 		(  	p_count	=>   x_msg_count,
958 			p_data 	=>   x_msg_data
959 		);
960 		x_msg_data := SQLERRM;
961 	WHEN OTHERS THEN
962 		-- ROLLBACK TO l_order_tag;
963 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
964        		x_error_code := SQLCODE;
965 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
966 		THEN
967 			FND_MSG_PUB.Add_Exc_Msg
968 				(	G_PKG_NAME  	    ,
969 					l_api_name
970 				);
971 		END IF;
972 		FND_MSG_PUB.Count_And_Get
973 		(  	p_count	=> x_msg_count,
974 			p_data  => x_msg_data
975 		);
976 		x_msg_data := SQLERRM;
977 END Process_Order;
978 
979 
980 PROCEDURE Cancel_Order(
981     p_api_version 	    IN  NUMBER,
982     p_init_msg_list	    IN  VARCHAR2	:= 	FND_API.G_FALSE,
983     p_commit	        IN  VARCHAR2	:= 	FND_API.G_FALSE,
984     p_validation_level  IN  NUMBER 	    := 	FND_API.G_VALID_LEVEL_FULL,
985     x_return_status 	OUT NOCOPY VARCHAR2,
986     x_msg_count	        OUT NOCOPY NUMBER,
987     x_msg_data	        OUT NOCOPY VARCHAR2,
988     p_order_number  	IN  VARCHAR2,
989     p_order_version	    IN  VARCHAR2,
990     p_order_id 	        IN  NUMBER,
991     x_error_code	    OUT NOCOPY VARCHAR2,
992 	p_caller_name 		IN VARCHAR2
993 )
994 IS
995     l_api_name      CONSTANT VARCHAR2(30) := 'CANCEL_ORDER';
996     l_api_version	CONSTANT NUMBER := 11.5;
997 
998     l_order_id  NUMBER;
999     l_order_number VARCHAR2(40);
1000     l_order_version VARCHAR2(40);
1001 
1002     lv_ret          NUMBER;
1003     lv_str          VARCHAR2(800);
1004     lv_index        BINARY_INTEGER;
1005     lv_count        NUMBER;
1006     lv_done         VARCHAR2(1);
1007     lv_proc         VARCHAR2(80);
1008 
1009 	l_return_code	VARCHAR2(1);
1010 	l_data			Varchar2(100);
1011 	l_count			Number;
1012     l_caller_name     VARCHAR2(100);
1013 
1014 BEGIN
1015 
1016 	-- Standard call to check for call compatibility.
1017 
1018 	IF NOT FND_API.Compatible_API_Call (
1019 					l_api_version,
1020 					p_api_version,
1021 					l_api_name,
1022 					G_PKG_NAME )
1023 	THEN
1024 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1025 	END IF;
1026 
1027 	-- Initialize message list if p_init_msg_list is set to TRUE.
1028 
1029 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
1030 		FND_MSG_PUB.initialize;
1031 	END IF;
1032 
1033     l_caller_name := p_caller_name;
1034 
1035     l_order_id := p_order_id;
1036     l_order_number := p_order_number;
1037     l_order_version := p_order_version;
1038 
1039 	IF   JTF_USR_HKS.Ok_to_Execute(
1040 		'XDP_INTERFACES_CS_CUHK',
1041 		'CANCEL_ORDER_PRE',
1042 		'B','C' )
1043 	THEN
1044 		XDP_INTERFACES_CS_CUHK.Cancel_Order_Pre(
1045 				p_caller_name => l_caller_name,
1046 				p_order_id => l_order_id,
1047 				p_order_number => l_order_number,
1048 				p_order_version => l_order_version,
1049 				x_data => l_data,
1050 				x_count => l_count,
1051 			  	x_return_code => l_return_code );
1052 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1053 			RAISE FND_API.G_EXC_ERROR;
1054 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1055 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1056 		END IF;
1057 	 END IF;
1058 
1059 	IF JTF_USR_HKS.Ok_to_Execute(
1060         'XDP_INTERFACES_CS_VUHK',
1061 		'CANCEL_ORDER_PRE',
1062 		'B','V' )
1063 	THEN
1064 		XDP_INTERFACES_CS_VUHK.Cancel_Order_Pre(
1065 				p_caller_name => l_caller_name,
1066 				p_order_id => l_order_id,
1067 				p_order_number => l_order_number,
1068 				p_order_version => l_order_version,
1069 				x_data => l_data,
1070 				x_count => l_count,
1071 			  	x_return_code => l_return_code );
1072 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1073 			RAISE FND_API.G_EXC_ERROR;
1074 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1075 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1076 		END IF;
1077 	END IF;
1078 
1079 
1080     /******* Start of API Body *******/
1081 
1082 /*
1083     This one will go through XDP_INTERFACES as the detail implementation
1084     for cancelling an order is in XDP_INTERFACES. However, it will
1085     be moved to XDP_ORDER, then these calls should point to the respective
1086     Internal APIs.
1087 */
1088 
1089         IF p_order_id is NOT NULL THEN
1090             XDP_INTERFACES.Cancel_Order(
1091                 p_sdp_order_id => p_order_id,
1092                 p_caller_name => p_caller_name,
1093                 RETURN_CODE => lv_ret,
1094                 ERROR_DESCRIPTION => lv_str);
1095         ELSE
1096             XDP_INTERFACES.Cancel_Order(
1097                 p_order_number => p_order_number,
1098                 p_order_version => p_order_version,
1099                 p_caller_name => p_caller_name,
1100                 RETURN_CODE => lv_ret,
1101                 ERROR_DESCRIPTION => lv_str);
1102         END IF;
1103 
1104 
1105 	    IF lv_ret <> 0 THEN
1106             x_error_code := lv_ret;
1107 		    x_return_status := FND_API.G_RET_STS_ERROR ;
1108     		FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_CANCEL_FAIL');
1109 	    	FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
1110 		    FND_MSG_PUB.Add;
1111     		FND_MSG_PUB.COUNT_AND_GET
1112 	    	 (  p_count => x_msg_count,
1113 		    	p_data => x_msg_data
1114     		 );
1115 --
1116 --      We do not wrap the error message as FND_MSG does for UI messages
1117 --      This will return the error message only
1118 --
1119             x_msg_data := lv_str;
1120 	    	RETURN;
1121 	    END IF;
1122 
1123 
1124     /******* End of API Body *******/
1125 
1126     /******* Post Processing call *******/
1127 
1128 
1129 	IF JTF_USR_HKS.Ok_to_Execute(
1130 		'XDP_INTERFACES_CS_CUHK',
1131 		'CANCEL_ORDER_POST',
1132 		'A','C' )
1133 	THEN
1134 		XDP_INTERFACES_CS_CUHK.Cancel_Order_Post(
1135 				p_caller_name => l_caller_name,
1136 				p_order_id => l_order_id,
1137 				p_order_number => l_order_number,
1138 				p_order_version => l_order_version,
1139 				x_data => l_data,
1140 				x_count => l_count,
1141 			  	x_return_code => l_return_code );
1142 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1143 			RAISE FND_API.G_EXC_ERROR;
1144 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1145 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1146 		END IF;
1147     END IF;
1148 
1149 	IF JTF_USR_HKS.Ok_to_Execute(
1150 	  	'XDP_INTERFACES_CS_VUHK',
1151 	  	'CANCEL_ORDER_POST',
1152 	  	'A','V' )
1153 	THEN
1154 		XDP_INTERFACES_CS_VUHK.Cancel_Order_Post(
1155 				p_caller_name => l_caller_name,
1156 				p_order_id => l_order_id,
1157 				p_order_number => l_order_number,
1158 				p_order_version => l_order_version,
1159 				x_data => l_data,
1160 				x_count => l_count,
1161 			  	x_return_code => l_return_code );
1162 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1163 			RAISE FND_API.G_EXC_ERROR;
1164 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1165 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1166 		END IF;
1167 	END IF;
1168 
1169     /******* Message Generation Section ********/
1170 
1171     IF JTF_USR_HKS.Ok_to_Execute(
1172         'XDP_INTERFACES_CS_CUHK',
1173         'Ok_to_Generate_msg',
1174         'M','M')
1175     THEN
1176          lv_ret := 0;
1177     END IF;
1178 
1179     /******* End of Message Generation Section ********/
1180 
1181 	x_return_status := FND_API.G_RET_STS_SUCCESS;
1182 
1183 -- Standard check of p_commit.
1184 
1185 	IF FND_API.To_Boolean(p_commit) THEN
1186 		COMMIT WORK;
1187 	END IF;
1188 
1189 -- Standard call to get message count and if count is 1, get message info.
1190 
1191 	FND_MSG_PUB.Count_And_Get (
1192 		p_count	=> x_msg_count,
1193 		p_data 	=> x_msg_data );
1194 
1195 EXCEPTION
1196 	WHEN FND_API.G_EXC_ERROR THEN
1197 		-- ROLLBACK TO l_order_tag;
1198 		x_return_status := FND_API.G_RET_STS_ERROR ;
1199         	x_error_code := SQLCODE;
1200 		FND_MSG_PUB.Count_And_Get
1201 		(  	p_count	=>   x_msg_count ,
1202 			p_data 	=>   x_msg_data
1203 		);
1204 		x_msg_data := SQLERRM;
1205 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1206 		-- ROLLBACK TO l_order_tag;
1207 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1208         	x_error_code := SQLCODE;
1209 		FND_MSG_PUB.Count_And_Get
1210 		(  	p_count	=>   x_msg_count,
1211 			p_data 	=>   x_msg_data
1212 		);
1213 		x_msg_data := SQLERRM;
1214 	WHEN OTHERS THEN
1215 		-- ROLLBACK TO l_order_tag;
1216 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1217         	x_error_code := SQLCODE;
1218 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1219 		THEN
1220 			FND_MSG_PUB.Add_Exc_Msg
1221 				(	G_PKG_NAME  	    ,
1222 					l_api_name
1223 				);
1224 		END IF;
1225 		FND_MSG_PUB.Count_And_Get
1226 		(  	p_count	=> x_msg_count,
1227 			p_data  => x_msg_data
1228 		);
1229 		x_msg_data := SQLERRM;
1230 END Cancel_Order;
1231 
1232 
1233 PROCEDURE Get_Order_Details(
1234     p_api_version 		IN  NUMBER,
1235     p_init_msg_list		IN  VARCHAR2,
1236     p_commit		    IN  VARCHAR2,
1237     p_validation_level	IN  NUMBER,
1238     x_return_status 	OUT NOCOPY VARCHAR2,
1239     x_msg_count		    OUT NOCOPY NUMBER,
1240     x_msg_data		    OUT NOCOPY VARCHAR2,
1241     x_error_code		OUT NOCOPY VARCHAR2,
1242     p_order_number  	IN  VARCHAR2,
1243     p_order_version	  	IN  VARCHAR2,
1244     p_order_id 		    IN  NUMBER,
1245     x_order_header		OUT NOCOPY XDP_TYPES.SERVICE_ORDER_HEADER,
1246     x_order_param_list	OUT NOCOPY XDP_TYPES.SERVICE_ORDER_PARAM_LIST,
1247     x_line_item_list	OUT NOCOPY XDP_TYPES.SERVICE_ORDER_LINE_LIST,
1248     x_line_param_list	OUT NOCOPY XDP_TYPES.SERVICE_LINE_PARAM_LIST
1249 )
1250 IS
1251     l_api_name      CONSTANT VARCHAR2(30) := 'GET_ORDER_DETAILS';
1252     l_api_version	CONSTANT NUMBER := 11.5;
1253     lv_ret          NUMBER;
1254     lv_str          VARCHAR2(800);
1255     lv_index        BINARY_INTEGER;
1256     lv_count        NUMBER;
1257     lv_done         VARCHAR2(1);
1258     lv_proc         VARCHAR2(80);
1259 
1260 	l_return_code	VARCHAR2(1);
1261 	l_data			Varchar2(100);
1262 	l_count			Number;
1263 
1264     l_order_id  NUMBER;
1265     l_order_number VARCHAR2(40);
1266     l_order_version VARCHAR2(40);
1267 
1268 BEGIN
1269 
1270 	-- Standard call to check for call compatibility.
1271 
1272 	IF NOT FND_API.Compatible_API_Call (
1273 					l_api_version,
1274 					p_api_version,
1275 					l_api_name,
1276 					G_PKG_NAME )
1277 	THEN
1278 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1279 	END IF;
1280 
1281 	-- Initialize message list if p_init_msg_list is set to TRUE.
1282 
1283 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
1284 		FND_MSG_PUB.initialize;
1285 	END IF;
1286 
1287     l_order_id := p_order_id;
1288     l_order_number := p_order_number;
1289     l_order_version := p_order_version;
1290 
1291     IF JTF_USR_HKS.Ok_to_Execute(
1292 	    'XDP_INTERFACES_OD_CUHK',
1293 		'GET_ORDER_DETAILS_PRE',
1294         'B','C' )
1295 	THEN
1296 		XDP_INTERFACES_OD_CUHK.GET_ORDER_DETAILS_PRE(
1297 				p_order_id => l_order_id,
1298 				p_order_number => l_order_number,
1299 				p_order_version => l_order_version,
1300                 x_order_header	=>x_order_header,
1301                 x_order_param_list	=>x_order_param_list,
1302                 x_line_item_list	=>x_line_item_list,
1303                 x_line_param_list	=>x_line_param_list,
1304 				x_data => l_data,
1305 				x_count => l_count,
1306 			  	x_return_code => l_return_code );
1307 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1308 			RAISE FND_API.G_EXC_ERROR;
1309 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1310 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1311 		END IF;
1312 	END IF;
1313 
1314 	IF JTF_USR_HKS.Ok_to_Execute(
1315 		'XDP_INTERFACES_OD_VUHK',
1316 		'GET_ORDER_DETAILS_PRE',
1317 		'B',
1318 		'V' )
1319 	THEN
1320 		XDP_INTERFACES_OD_VUHK.GET_ORDER_DETAILS_PRE(
1321 				p_order_id => l_order_id,
1322 				p_order_number => l_order_number,
1323 				p_order_version => l_order_version,
1324                 x_order_header	=>x_order_header,
1325                 x_order_param_list	=>x_order_param_list,
1326                 x_line_item_list	=>x_line_item_list,
1327                 x_line_param_list	=>x_line_param_list,
1328 				x_data => l_data,
1329 				x_count => l_count,
1330 			  	x_return_code => l_return_code );
1331 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1332 			RAISE FND_API.G_EXC_ERROR;
1333 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1334 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1335 		END IF;
1336 	END IF;
1337 
1338 
1339     /******* Start of API Body *******/
1340 
1341     XDP_INTERFACES.Get_Order_Details(
1342         p_order_id,
1343         p_order_number,
1344         p_order_version,
1345         x_order_header,
1346         x_order_param_list,
1347         x_line_item_list,
1348         x_line_param_list,
1349         lv_ret,
1350         lv_str
1351     );
1352 
1353     IF lv_ret <> 0 THEN
1354   		x_return_status := FND_API.G_RET_STS_ERROR ;
1355         x_error_code := lv_ret;
1356      	FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_DETAILS_FAIL');
1357  	    FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
1358    		FND_MSG_PUB.Add;
1359      	FND_MSG_PUB.COUNT_AND_GET
1360  	     (  p_count => x_msg_count,
1361    			p_data => x_msg_data
1362      	 );
1363 --
1364 --      We do not wrap the error message as FND_MSG does for UI messages
1365 --      This will return the error message only
1366 --
1367         x_msg_data := lv_str;
1368  	    RETURN;
1369     END IF;
1370     /******* End of API Body *******/
1371 
1372 
1373     /******* Post Processing call *******/
1374 
1375 	IF JTF_USR_HKS.Ok_to_Execute(
1376 		'XDP_INTERFACES_OD_CUHK',
1377 		'GET_ORDER_DETAILS_POST',
1378 		'A','C' )
1379 	THEN
1380 		XDP_INTERFACES_OD_CUHK.GET_ORDER_DETAILS_POST(
1381 				p_order_id => l_order_id,
1382 				p_order_number => l_order_number,
1383 				p_order_version => l_order_version,
1384                 x_order_header	=>x_order_header,
1385                 x_order_param_list	=>x_order_param_list,
1386                 x_line_item_list	=>x_line_item_list,
1387                 x_line_param_list	=>x_line_param_list,
1388 				x_data => l_data,
1389 				x_count => l_count,
1390 			  	x_return_code => l_return_code );
1391 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1392 			RAISE FND_API.G_EXC_ERROR;
1393 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1394 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1395 		END IF;
1396     END IF;
1397 
1398 	IF JTF_USR_HKS.Ok_to_Execute(
1399 	  	'XDP_INTERFACES_OD_VUHK',
1400 		'GET_ORDER_DETAILS_POST',
1401 	  	'A','V' )
1402 	THEN
1403 		XDP_INTERFACES_OD_VUHK.GET_ORDER_DETAILS_POST(
1404 				p_order_id => l_order_id,
1405 				p_order_number => l_order_number,
1406 				p_order_version => l_order_version,
1407                 x_order_header	=>x_order_header,
1408                 x_order_param_list	=>x_order_param_list,
1409                 x_line_item_list	=>x_line_item_list,
1410                 x_line_param_list	=>x_line_param_list,
1411 				x_data => l_data,
1412 				x_count => l_count,
1413 			  	x_return_code => l_return_code );
1414 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1415 			RAISE FND_API.G_EXC_ERROR;
1416 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1417 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1418 		END IF;
1419 	END IF;
1420 
1421 	x_return_status := FND_API.G_RET_STS_SUCCESS;
1422 
1423 -- Standard check of p_commit. DO NOT NEED TO
1424 
1425 --	IF FND_API.To_Boolean(p_commit) THEN
1426 --		COMMIT WORK;
1427 --	END IF;
1428 
1429 -- Standard call to get message count and if count is 1, get message info.
1430 
1431 	FND_MSG_PUB.Count_And_Get (
1432 		p_count	=> x_msg_count,
1433 		p_data 	=> x_msg_data );
1434 
1435 EXCEPTION
1436 	WHEN FND_API.G_EXC_ERROR THEN
1437 		-- ROLLBACK TO l_order_tag;
1438 		x_return_status := FND_API.G_RET_STS_ERROR ;
1439         	x_error_code := SQLCODE;
1440 		FND_MSG_PUB.Count_And_Get
1441 		(  	p_count	=>   x_msg_count ,
1442 			p_data 	=>   x_msg_data
1443 		);
1444 		x_msg_data := SQLERRM;
1445 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1446 		-- ROLLBACK TO l_order_tag;
1447 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1448         	x_error_code := SQLCODE;
1449 		FND_MSG_PUB.Count_And_Get
1450 		(  	p_count	=>   x_msg_count,
1451 			p_data 	=>   x_msg_data
1452 		);
1453 		x_msg_data := SQLERRM;
1454 	WHEN OTHERS THEN
1455 		-- ROLLBACK TO l_order_tag;
1456 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1457         	x_error_code := SQLCODE;
1458 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1459 		THEN
1460 			FND_MSG_PUB.Add_Exc_Msg
1461 				(	G_PKG_NAME  	    ,
1462 					l_api_name
1463 				);
1464 		END IF;
1465 		FND_MSG_PUB.Count_And_Get
1466 		(  	p_count	=> x_msg_count,
1467 			p_data  => x_msg_data
1468 		);
1469 		x_msg_data := SQLERRM;
1470 END Get_Order_Details;
1471 
1472 --
1473 -- To retrieve order status as defined by XDP_TYPES.SERVICE_ORDER_STATUS
1474 --
1475 PROCEDURE Get_Order_Status(
1476     p_api_version 		IN  NUMBER,
1477     p_init_msg_list		IN  VARCHAR2,
1478     p_commit		    IN  VARCHAR2,
1479     p_validation_level	IN  NUMBER,
1480     x_return_status 	OUT NOCOPY VARCHAR2,
1481     x_msg_count		    OUT NOCOPY NUMBER,
1482     x_msg_data		    OUT NOCOPY VARCHAR2,
1483     x_error_code		OUT NOCOPY VARCHAR2,
1484     p_order_number  	IN  VARCHAR2,
1485     p_order_version		IN  VARCHAR2,
1486     p_order_id 		    IN  NUMBER,
1487     x_order_status		OUT NOCOPY XDP_TYPES.SERVICE_ORDER_STATUS
1488 )
1489 IS
1490     l_api_name      CONSTANT VARCHAR2(30) := 'GET_ORDER_STATUS';
1491     l_api_version	CONSTANT NUMBER := 11.5;
1492     lv_ret          NUMBER;
1493     lv_str          VARCHAR2(800);
1494     lv_index        BINARY_INTEGER;
1495     lv_count        NUMBER;
1496     lv_done         VARCHAR2(1);
1497     lv_proc         VARCHAR2(80);
1498 
1499 	l_return_code	VARCHAR2(1);
1500 	l_data			Varchar2(100);
1501 	l_count			Number;
1502 
1503     l_order_id  NUMBER;
1504     l_order_number VARCHAR2(40);
1505     l_order_version VARCHAR2(40);
1506 
1507 BEGIN
1508 
1509 	-- Standard call to check for call compatibility.
1510 
1511 	IF NOT FND_API.Compatible_API_Call (
1512 					l_api_version,
1513 					p_api_version,
1514 					l_api_name,
1515 					G_PKG_NAME )
1516 	THEN
1517 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1518 	END IF;
1519 
1520 	-- Initialize message list if p_init_msg_list is set to TRUE.
1521 
1522 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
1523 		FND_MSG_PUB.initialize;
1524 	END IF;
1525 
1526     l_order_id := p_order_id;
1527     l_order_number := p_order_number;
1528     l_order_version := p_order_version;
1529 
1530     IF JTF_USR_HKS.Ok_to_Execute(
1531 	    'XDP_INTERFACES_OS_CUHK',
1532         'GET_ORDER_STATUS_PRE',
1533         'B','C' )
1534 	THEN
1535 		XDP_INTERFACES_OS_CUHK.GET_ORDER_STATUS_PRE(
1536 				p_order_id => l_order_id,
1537 				p_order_number => l_order_number,
1538 				p_order_version => l_order_version,
1539                 x_order_status	=>x_order_status,
1540 				x_data => l_data,
1541 				x_count => l_count,
1542 			  	x_return_code => l_return_code );
1543 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1544 			RAISE FND_API.G_EXC_ERROR;
1545 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1546 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1547 		END IF;
1548 	END IF;
1549 
1550 	IF JTF_USR_HKS.Ok_to_Execute(
1551 		'XDP_INTERFACES_OS_VUHK',
1552         'GET_ORDER_STATUS_PRE',
1553 		'B',
1554 		'V' )
1555 	THEN
1556 		XDP_INTERFACES_OS_VUHK.GET_ORDER_STATUS_PRE(
1557 				p_order_id => l_order_id,
1558 				p_order_number => l_order_number,
1559 				p_order_version => l_order_version,
1560                 x_order_status	=>x_order_status,
1561 				x_data => l_data,
1562 				x_count => l_count,
1563 			  	x_return_code => l_return_code );
1564 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1565 			RAISE FND_API.G_EXC_ERROR;
1566 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1567 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1568 		END IF;
1569 	END IF;
1570 
1571 
1572     /******* Start of API Body *******/
1573     XDP_INTERFACES.Get_Order_Status(
1574         p_order_id,
1575         p_order_number,
1576         p_order_version,
1577         x_order_status,
1578         lv_ret,
1579         lv_str
1580     );
1581     IF lv_ret <> 0 THEN
1582   		x_return_status := FND_API.G_RET_STS_ERROR ;
1583         x_error_code := lv_ret;
1584      	FND_MESSAGE.SET_NAME('XDP', 'XDP_INTFACE_STATUS_FAIL');
1585  	    FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
1586    		FND_MSG_PUB.Add;
1587      	FND_MSG_PUB.COUNT_AND_GET
1588  	     (  p_count => x_msg_count,
1589    			p_data => x_msg_data
1590      	 );
1591 --
1592 --      We do not wrap the error message as FND_MSG does for UI messages
1593 --      This will return the error message only
1594 --
1595         x_msg_data := lv_str;
1596  	    RETURN;
1597     END IF;
1598     /******* End of API Body *******/
1599 
1600 
1601     /******* Post Processing call *******/
1602 
1603 	IF JTF_USR_HKS.Ok_to_Execute(
1604 		'XDP_INTERFACES_OS_CUHK',
1605 		'GET_ORDER_STATUS_POST',
1606 		'A','C' )
1607 	THEN
1608 		XDP_INTERFACES_OS_CUHK.GET_ORDER_STATUS_POST(
1609 				p_order_id => l_order_id,
1610 				p_order_number => l_order_number,
1611 				p_order_version => l_order_version,
1612                 x_order_status	=>x_order_status,
1613 				x_data => l_data,
1614 				x_count => l_count,
1615 			  	x_return_code => l_return_code );
1616 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1617 			RAISE FND_API.G_EXC_ERROR;
1618 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1619 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1620 		END IF;
1621     END IF;
1622 
1623 	IF JTF_USR_HKS.Ok_to_Execute(
1624 	  	'XDP_INTERFACES_OS_VUHK',
1625 		'GET_ORDER_STATUS_POST',
1626 	  	'A','V' )
1627 	THEN
1628 		XDP_INTERFACES_OS_VUHK.GET_ORDER_STATUS_POST(
1629 				p_order_id => l_order_id,
1630 				p_order_number => l_order_number,
1631 				p_order_version => l_order_version,
1632                 x_order_status	=>x_order_status,
1633 				x_data => l_data,
1634 				x_count => l_count,
1635 			  	x_return_code => l_return_code );
1636 		IF (l_return_code = FND_API.G_RET_STS_ERROR )  THEN
1637 			RAISE FND_API.G_EXC_ERROR;
1638 		ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1639 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1640 		END IF;
1641 	END IF;
1642 
1643 	x_return_status := FND_API.G_RET_STS_SUCCESS;
1644 
1645 -- Standard check of p_commit. DO NOT NEED TO
1646 
1647 --	IF FND_API.To_Boolean(p_commit) THEN
1648 --		COMMIT WORK;
1649 --	END IF;
1650 
1651 -- Standard call to get message count and if count is 1, get message info.
1652 
1653 	FND_MSG_PUB.Count_And_Get (
1654 		p_count	=> x_msg_count,
1655 		p_data 	=> x_msg_data );
1656 
1657 EXCEPTION
1658 	WHEN FND_API.G_EXC_ERROR THEN
1659 		-- ROLLBACK TO l_order_tag;
1660 		x_return_status := FND_API.G_RET_STS_ERROR ;
1661         x_error_code := SQLCODE;
1662 		FND_MSG_PUB.Count_And_Get
1663 		(  	p_count	=>   x_msg_count ,
1664 			p_data 	=>   x_msg_data
1665 		);
1666 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1667 		-- ROLLBACK TO l_order_tag;
1668 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1669         x_error_code := SQLCODE;
1670 		FND_MSG_PUB.Count_And_Get
1671 		(  	p_count	=>   x_msg_count,
1672 			p_data 	=>   x_msg_data
1673 		);
1674 	WHEN OTHERS THEN
1675 		-- ROLLBACK TO l_order_tag;
1676 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1677         x_error_code := SQLCODE;
1678 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1679 		THEN
1680 			FND_MSG_PUB.Add_Exc_Msg
1681 				(	G_PKG_NAME  	    ,
1682 					l_api_name
1683 				);
1684 		END IF;
1685 		FND_MSG_PUB.Count_And_Get
1686 		(  	p_count	=> x_msg_count,
1687 			p_data  => x_msg_data
1688 		);
1689 END Get_Order_Status;
1690 
1691 
1692 --PRIVATE PROCEDURE , CONVERTING G_MISSES TO NULL
1693 
1694 PROCEDURE TO_NULL(p_order_header IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_HEADER)
1695 IS
1696 BEGIN
1697     IF p_order_header.order_number = FND_API.G_MISS_CHAR THEN
1698         p_order_header.order_number := NULL;
1699     END IF;
1700     IF p_order_header.account_number = FND_API.G_MISS_CHAR THEN
1701         p_order_header.account_number := NULL;
1702     END IF;
1703     IF p_order_header.cust_account_id = FND_API.G_MISS_NUM THEN
1704         p_order_header.cust_account_id := NULL;
1705     END IF;
1706     IF p_order_header.due_date = FND_API.G_MISS_DATE THEN
1707         p_order_header.due_date := NULL;
1708     END IF;
1709 
1710     IF p_order_header.customer_required_date = FND_API.G_MISS_DATE THEN
1711         p_order_header.customer_required_date := NULL;
1712     END IF;
1713 
1714     IF p_order_header.customer_name = FND_API.G_MISS_CHAR THEN
1715         p_order_header.customer_name := NULL;
1716     END IF;
1717     IF p_order_header.customer_id = FND_API.G_MISS_NUM THEN
1718         p_order_header.customer_id := NULL;
1719     END IF;
1720     IF p_order_header.telephone_number = FND_API.G_MISS_CHAR THEN
1721         p_order_header.telephone_number := NULL;
1722     END IF;
1723 
1724     IF p_order_header.order_type = FND_API.G_MISS_CHAR THEN
1725         p_order_header.order_type := NULL;
1726     END IF;
1727 
1728     IF p_order_header.order_source = FND_API.G_MISS_CHAR THEN
1729         p_order_header.order_source := NULL;
1730     END IF;
1731 
1732     IF p_order_header.org_id = FND_API.G_MISS_NUM THEN
1733         p_order_header.org_id := NULL;
1734     END IF;
1735 
1736     IF p_order_header.related_order_id = FND_API.G_MISS_NUM THEN
1737         p_order_header.related_order_id := NULL;
1738     END IF;
1739 
1740     IF p_order_header.previous_order_id = FND_API.G_MISS_NUM THEN
1741         p_order_header.previous_order_id := NULL;
1742     END IF;
1743 
1744     IF p_order_header.next_order_id = FND_API.G_MISS_NUM THEN
1745         p_order_header.next_order_id := NULL;
1746     END IF;
1747 
1748     IF p_order_header.order_ref_name = FND_API.G_MISS_CHAR THEN
1749         p_order_header.order_ref_name := NULL;
1750     END IF;
1751 
1752     IF p_order_header.order_ref_value = FND_API.G_MISS_CHAR THEN
1753         p_order_header.order_ref_value := NULL;
1754     END IF;
1755     IF p_order_header.order_comments = FND_API.G_MISS_CHAR THEN
1756         p_order_header.order_comments := NULL;
1757     END IF;
1758     IF p_order_header.order_ref_name = FND_API.G_MISS_CHAR THEN
1759         p_order_header.order_ref_name := NULL;
1760     END IF;
1761 
1762     IF p_order_header.order_id = FND_API.G_MISS_NUM THEN
1763         p_order_header.order_id := NULL;
1764     END IF;
1765 
1766     IF p_order_header.order_status = FND_API.G_MISS_CHAR THEN
1767         p_order_header.order_status := NULL;
1768     END IF;
1769     IF p_order_header.fulfillment_status = FND_API.G_MISS_CHAR THEN
1770         p_order_header.fulfillment_status := NULL;
1771     END IF;
1772     IF p_order_header.fulfillment_result = FND_API.G_MISS_CHAR THEN
1773         p_order_header.fulfillment_result := NULL;
1774     END IF;
1775     IF p_order_header.completion_date = FND_API.G_MISS_DATE THEN
1776         p_order_header.completion_date := NULL;
1777     END IF;
1778     IF p_order_header.actual_fulfillment_date = FND_API.G_MISS_DATE THEN
1779         p_order_header.actual_fulfillment_date := NULL;
1780     END IF;
1781 
1782     IF p_order_header.attribute_category = FND_API.G_MISS_CHAR THEN
1783         p_order_header.attribute_category := NULL;
1784     END IF;
1785 
1786     IF p_order_header.attribute1 = FND_API.G_MISS_CHAR THEN
1787         p_order_header.attribute1 := NULL;
1788     END IF;
1789     IF p_order_header.attribute2 = FND_API.G_MISS_CHAR THEN
1790         p_order_header.attribute2 := NULL;
1791     END IF;
1792     IF p_order_header.attribute3 = FND_API.G_MISS_CHAR THEN
1793         p_order_header.attribute3 := NULL;
1794     END IF;
1795     IF p_order_header.attribute4 = FND_API.G_MISS_CHAR THEN
1796         p_order_header.attribute4 := NULL;
1797     END IF;
1798     IF p_order_header.attribute5 = FND_API.G_MISS_CHAR THEN
1799         p_order_header.attribute5 := NULL;
1800     END IF;
1801     IF p_order_header.attribute6 = FND_API.G_MISS_CHAR THEN
1802         p_order_header.attribute6 := NULL;
1803     END IF;
1804     IF p_order_header.attribute7 = FND_API.G_MISS_CHAR THEN
1805         p_order_header.attribute7 := NULL;
1806     END IF;
1807     IF p_order_header.attribute8 = FND_API.G_MISS_CHAR THEN
1808         p_order_header.attribute8 := NULL;
1809     END IF;
1810     IF p_order_header.attribute9 = FND_API.G_MISS_CHAR THEN
1811         p_order_header.attribute9 := NULL;
1812     END IF;
1813     IF p_order_header.attribute10 = FND_API.G_MISS_CHAR THEN
1814         p_order_header.attribute10 := NULL;
1815     END IF;
1816     IF p_order_header.attribute11 = FND_API.G_MISS_CHAR THEN
1817         p_order_header.attribute11 := NULL;
1818     END IF;
1819     IF p_order_header.attribute12 = FND_API.G_MISS_CHAR THEN
1820         p_order_header.attribute12 := NULL;
1821     END IF;
1822     IF p_order_header.attribute13 = FND_API.G_MISS_CHAR THEN
1823         p_order_header.attribute13 := NULL;
1824     END IF;
1825     IF p_order_header.attribute14 = FND_API.G_MISS_CHAR THEN
1826         p_order_header.attribute14 := NULL;
1827     END IF;
1828     IF p_order_header.attribute15 = FND_API.G_MISS_CHAR THEN
1829         p_order_header.attribute15 := NULL;
1830     END IF;
1831     IF p_order_header.attribute16 = FND_API.G_MISS_CHAR THEN
1832         p_order_header.attribute16 := NULL;
1833     END IF;
1834     IF p_order_header.attribute17 = FND_API.G_MISS_CHAR THEN
1835         p_order_header.attribute17 := NULL;
1836     END IF;
1837     IF p_order_header.attribute18 = FND_API.G_MISS_CHAR THEN
1838         p_order_header.attribute18 := NULL;
1839     END IF;
1840     IF p_order_header.attribute19 = FND_API.G_MISS_CHAR THEN
1841         p_order_header.attribute19 := NULL;
1842     END IF;
1843     IF p_order_header.attribute20 = FND_API.G_MISS_CHAR THEN
1844         p_order_header.attribute20 := NULL;
1845     END IF;
1846 
1847     IF p_order_header.order_version IS NULL THEN
1848        p_order_header.order_version := 1;
1849     END IF;
1850     IF p_order_header.required_fulfillment_date IS NULL THEN
1851        p_order_header.required_fulfillment_date := SYSDATE;
1852     END IF;
1853     IF p_order_header.priority IS NULL THEN
1854        p_order_header.priority := 100;
1855     END IF;
1856 
1857     IF p_order_header.jeopardy_enabled_flag IS NULL THEN
1858        p_order_header.jeopardy_enabled_flag := 'Y';
1859     END IF;
1860 
1861     IF p_order_header.execution_mode IS NULL THEN
1862        p_order_header.execution_mode := 'ASYNC';
1863     END IF;
1864 END;
1865 
1866 PROCEDURE TO_NULL(p_order_param_list IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_PARAM_LIST)
1867 IS
1868     lv_param_index  BINARY_INTEGER;
1869 BEGIN
1870     IF p_order_param_list.COUNT > 0 THEN
1871         lv_param_index := p_order_param_list.first;
1872         LOOP
1873 
1874             IF p_order_param_list(lv_param_index).parameter_name = FND_API.G_MISS_CHAR
1875             THEN
1876                 p_order_param_list(lv_param_index).parameter_name := NULL;
1877             END IF;
1878             IF p_order_param_list(lv_param_index).parameter_value = FND_API.G_MISS_CHAR
1879             THEN
1880                 p_order_param_list(lv_param_index).parameter_value := NULL;
1881             END IF;
1882 
1883             EXIT WHEN lv_param_index = p_order_param_list.last;
1884             lv_param_index := p_order_param_list.next(lv_param_index);
1885         END LOOP;
1886    END IF;
1887 END;
1888 
1889 PROCEDURE TO_NULL(p_order_line_item IN OUT NOCOPY XDP_TYPES.SERVICE_LINE_ITEM)
1890 IS
1891 BEGIN
1892     IF p_order_line_item.line_number = FND_API.G_MISS_NUM THEN
1893        p_order_line_item.line_number := NULL;
1894     END IF;
1895     IF p_order_line_item.line_source = FND_API.G_MISS_CHAR THEN
1896        p_order_line_item.line_source := NULL;
1897     END IF;
1898 
1899     IF p_order_line_item.inventory_item_id = FND_API.G_MISS_NUM THEN
1900        p_order_line_item.inventory_item_id := NULL;
1901     END IF;
1902 
1903     IF p_order_line_item.service_item_name = FND_API.G_MISS_CHAR THEN
1904        p_order_line_item.service_item_name := NULL;
1905     END IF;
1906 
1907     IF p_order_line_item.workitem_id = FND_API.G_MISS_NUM THEN
1908        p_order_line_item.workitem_id := NULL;
1909     END IF;
1910 
1911     IF p_order_line_item.version = FND_API.G_MISS_CHAR THEN
1912        p_order_line_item.version := NULL;
1913     END IF;
1914 
1915     IF p_order_line_item.action_code = FND_API.G_MISS_CHAR THEN
1916        p_order_line_item.action_code := NULL;
1917     END IF;
1918 
1919     IF p_order_line_item.organization_code = FND_API.G_MISS_CHAR THEN
1920        p_order_line_item.organization_code := NULL;
1921     END IF;
1922 
1923     IF p_order_line_item.organization_id = FND_API.G_MISS_NUM THEN
1924        p_order_line_item.organization_id := NULL;
1925     END IF;
1926     IF p_order_line_item.site_use_id = FND_API.G_MISS_NUM THEN
1927        p_order_line_item.site_use_id := NULL;
1928     END IF;
1929     IF p_order_line_item.ib_source_id = FND_API.G_MISS_NUM THEN
1930        p_order_line_item.ib_source_id := NULL;
1931     END IF;
1932 
1933 
1934     IF p_order_line_item.required_fulfillment_date = FND_API.G_MISS_DATE THEN
1935        p_order_line_item.required_fulfillment_date := NULL;
1936     END IF;
1937     IF p_order_line_item.bundle_id = FND_API.G_MISS_NUM THEN
1938        p_order_line_item.bundle_id := NULL;
1939     END IF;
1940     IF p_order_line_item.bundle_sequence = FND_API.G_MISS_NUM THEN
1941        p_order_line_item.bundle_sequence := NULL;
1942     END IF;
1943 
1944     IF p_order_line_item.due_date = FND_API.G_MISS_DATE THEN
1945        p_order_line_item.due_date := NULL;
1946     END IF;
1947     IF p_order_line_item.customer_required_date = FND_API.G_MISS_DATE THEN
1948        p_order_line_item.customer_required_date := NULL;
1949     END IF;
1950 
1951     IF p_order_line_item.starting_number = FND_API.G_MISS_NUM THEN
1952        p_order_line_item.starting_number := NULL;
1953     END IF;
1954     IF p_order_line_item.ending_number = FND_API.G_MISS_NUM THEN
1955        p_order_line_item.ending_number := NULL;
1956     END IF;
1957 
1958     IF p_order_line_item.line_item_id = FND_API.G_MISS_NUM THEN
1959        p_order_line_item.line_item_id := NULL;
1960     END IF;
1961 
1962     IF p_order_line_item.line_status = FND_API.G_MISS_CHAR THEN
1963        p_order_line_item.line_status := NULL;
1964     END IF;
1965 
1966     IF p_order_line_item.completion_date = FND_API.G_MISS_DATE THEN
1967        p_order_line_item.completion_date := NULL;
1968     END IF;
1969 
1970     IF p_order_line_item.actual_fulfillment_date = FND_API.G_MISS_DATE THEN
1971        p_order_line_item.actual_fulfillment_date := NULL;
1972     END IF;
1973 
1974     IF p_order_line_item.parent_line_number = FND_API.G_MISS_NUM THEN
1975        p_order_line_item.parent_line_number := NULL;
1976     END IF;
1977 
1978     IF p_order_line_item.attribute_category = FND_API.G_MISS_CHAR THEN
1979         p_order_line_item.attribute_category := NULL;
1980     END IF;
1981 
1982     IF p_order_line_item.attribute1 = FND_API.G_MISS_CHAR THEN
1983        p_order_line_item.attribute1 := NULL;
1984     END IF;
1985     IF p_order_line_item.attribute2 = FND_API.G_MISS_CHAR THEN
1986        p_order_line_item.attribute2 := NULL;
1987     END IF;
1988     IF p_order_line_item.attribute3 = FND_API.G_MISS_CHAR THEN
1989        p_order_line_item.attribute3 := NULL;
1990     END IF;
1991     IF p_order_line_item.attribute4 = FND_API.G_MISS_CHAR THEN
1992        p_order_line_item.attribute4 := NULL;
1993     END IF;
1994     IF p_order_line_item.attribute5 = FND_API.G_MISS_CHAR THEN
1995        p_order_line_item.attribute5 := NULL;
1996     END IF;
1997     IF p_order_line_item.attribute6 = FND_API.G_MISS_CHAR THEN
1998        p_order_line_item.attribute6 := NULL;
1999     END IF;
2000     IF p_order_line_item.attribute7 = FND_API.G_MISS_CHAR THEN
2001        p_order_line_item.attribute7 := NULL;
2002     END IF;
2003     IF p_order_line_item.attribute8 = FND_API.G_MISS_CHAR THEN
2004        p_order_line_item.attribute8 := NULL;
2005     END IF;
2006     IF p_order_line_item.attribute9 = FND_API.G_MISS_CHAR THEN
2007        p_order_line_item.attribute9 := NULL;
2008     END IF;
2009     IF p_order_line_item.attribute10 = FND_API.G_MISS_CHAR THEN
2010        p_order_line_item.attribute10 := NULL;
2011     END IF;
2012     IF p_order_line_item.attribute11 = FND_API.G_MISS_CHAR THEN
2013        p_order_line_item.attribute11 := NULL;
2014     END IF;
2015     IF p_order_line_item.attribute12 = FND_API.G_MISS_CHAR THEN
2016        p_order_line_item.attribute12 := NULL;
2017     END IF;
2018     IF p_order_line_item.attribute13 = FND_API.G_MISS_CHAR THEN
2019        p_order_line_item.attribute13 := NULL;
2020     END IF;
2021     IF p_order_line_item.attribute14 = FND_API.G_MISS_CHAR THEN
2022        p_order_line_item.attribute14 := NULL;
2023     END IF;
2024     IF p_order_line_item.attribute15 = FND_API.G_MISS_CHAR THEN
2025        p_order_line_item.attribute15 := NULL;
2026     END IF;
2027     IF p_order_line_item.attribute16 = FND_API.G_MISS_CHAR THEN
2028        p_order_line_item.attribute16 := NULL;
2029     END IF;
2030     IF p_order_line_item.attribute17 = FND_API.G_MISS_CHAR THEN
2031        p_order_line_item.attribute17 := NULL;
2032     END IF;
2033     IF p_order_line_item.attribute18 = FND_API.G_MISS_CHAR THEN
2034        p_order_line_item.attribute18 := NULL;
2035     END IF;
2036     IF p_order_line_item.attribute19 = FND_API.G_MISS_CHAR THEN
2037        p_order_line_item.attribute19 := NULL;
2038     END IF;
2039     IF p_order_line_item.attribute20 = FND_API.G_MISS_CHAR THEN
2040        p_order_line_item.attribute20 := NULL;
2041     END IF;
2042 
2043     IF p_order_line_item.ib_source IS NULL THEN
2044        p_order_line_item.ib_source := 'NONE';
2045     END IF;
2046 
2047    IF p_order_line_item.fulfillment_required_flag IS NULL THEN
2048       p_order_line_item.fulfillment_required_flag := 'Y';
2049    END IF;
2050 
2051    IF p_order_line_item.is_package_flag IS NULL THEN
2052       p_order_line_item.is_package_flag := 'N';
2053    END IF;
2054 
2055    IF p_order_line_item.fulfillment_sequence IS NULL THEN
2056       p_order_line_item.fulfillment_sequence := 0;
2057    END IF;
2058 
2059    IF p_order_line_item.jeopardy_enabled_flag IS NULL THEN
2060       p_order_line_item.jeopardy_enabled_flag := 'N';
2061    END IF;
2062 
2063    IF p_order_line_item.is_virtual_line_flag IS NULL THEN
2064       p_order_line_item.is_virtual_line_flag := 'N';
2065    END IF;
2066 END;
2067 
2068 PROCEDURE TO_NULL(p_order_line_list IN OUT NOCOPY XDP_TYPES.SERVICE_ORDER_LINE_LIST)
2069 IS
2070     lv_param_index  BINARY_INTEGER;
2071 BEGIN
2072     IF p_order_line_list.COUNT > 0 THEN
2073         lv_param_index := p_order_line_list.first;
2074         LOOP
2075             TO_NULL(p_order_line_list(lv_param_index));
2076             EXIT WHEN lv_param_index = p_order_line_list.last;
2077             lv_param_index := p_order_line_list.next(lv_param_index);
2078         END LOOP;
2079     END IF;
2080 END;
2081 
2082 PROCEDURE TO_NULL(p_line_param_list IN OUT NOCOPY XDP_TYPES.SERVICE_LINE_PARAM_LIST)
2083 IS
2084     lv_param_index  BINARY_INTEGER;
2085 BEGIN
2086     IF p_line_param_list.COUNT > 0 THEN
2087         lv_param_index := p_line_param_list.first;
2088         LOOP
2089             IF p_line_param_list(lv_param_index).line_number = FND_API.G_MISS_NUM
2090             THEN
2091                 p_line_param_list(lv_param_index).line_number := NULL;
2092             END IF;
2093 
2094             IF p_line_param_list(lv_param_index).parameter_name = FND_API.G_MISS_CHAR
2095             THEN
2096                 p_line_param_list(lv_param_index).parameter_name := NULL;
2097             END IF;
2098             IF p_line_param_list(lv_param_index).parameter_value = FND_API.G_MISS_CHAR
2099             THEN
2100                 p_line_param_list(lv_param_index).parameter_value := NULL;
2101             END IF;
2102             IF p_line_param_list(lv_param_index).parameter_ref_value = FND_API.G_MISS_CHAR
2103             THEN
2104                 p_line_param_list(lv_param_index).parameter_ref_value := NULL;
2105             END IF;
2106 
2107             EXIT WHEN lv_param_index = p_line_param_list.last;
2108             lv_param_index := p_line_param_list.next(lv_param_index);
2109         END LOOP;
2110    END IF;
2111 END;
2112 
2113 
2114 END XDP_INTERFACES_PUB;