DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_DRC_UTIL_PUB

Source


1 PACKAGE BODY XDP_DRC_UTIL_PUB AS
2 /* $Header: XDPDRCUB.pls 120.2 2005/07/07 02:15:41 appldev ship $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'XDP_DRC_UTIL_PUB';
5 
6  PROCEDURE Process_DRC_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 := FND_API.G_VALID_LEVEL_FULL,
11  	x_RETURN_STATUS 	OUT NOCOPY     VARCHAR2,
12 	x_msg_count		OUT NOCOPY     NUMBER,
13 	x_msg_data		OUT NOCOPY     VARCHAR2,
14  	P_WORKITEM_ID 		IN      NUMBER,
15  	P_TASK_PARAMETER 	IN      XDP_TYPES.ORDER_PARAMETER_LIST,
16 	x_SDP_ORDER_ID		OUT NOCOPY     NUMBER)
17   IS
18 
19    l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_DRC_ORDER';
20    l_api_version	CONSTANT NUMBER := 11.5;
21    lv_ret number;
22    lv_str varchar2(800);
23    lv_line_id number;
24    lv_wi_instance_id number;
25    lv_index binary_integer;
26    lv_count number;
27    lv_done varchar2(1);
28    lv_proc varchar2(80);
29 	l_return_code		varchar2(1);
30 	l_data			Varchar2(100);
31 	l_count			Number;
32 	l_workitem_id			number ;
33  	l_task_parameter 	XDP_TYPES.ORDER_PARAMETER_LIST;
34 	l_sdp_order_id		number;
35 	l_OAI_array		JTF_USR_HKS.OAI_data_array_type ;
36 	l_bind_data_id number;
37  BEGIN
38 
39 	-- Standard Start of API savepoint
40 	-- SAVEPOINT	l_order_tag;
41 
42 	-- Standard call to check for call compatibility.
43 	IF NOT FND_API.Compatible_API_Call (
44 					l_api_version,
45 					p_api_version,
46 					l_api_name,
47 					G_PKG_NAME )
48 	THEN
49 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
50 	END IF;
51 
52 	-- Initialize message list if p_init_msg_list is set to TRUE.
53 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
54 		FND_MSG_PUB.initialize;
55 	END IF;
56 
57 
58     /******* Prepare for going into pre processing *******/
59 
60 	l_workitem_id :=  p_workitem_id;
61 	l_task_parameter := p_task_parameter;
62 	l_sdp_order_id := x_SDP_ORDER_ID;
63 
64 	if   JTF_USR_HKS.Ok_to_Execute(
65 					'XDP_DRC_UTIL_CUHK',
66 					'PROCESS_DRC_ORDER_PRE',
67 					'B',
68 					'C' )
69 	then
70 		XDP_DRC_UTIL_CUHK.Process_DRC_order_Pre(
71 				p_workitem_id => l_workitem_id,
72 				p_task_parameter => l_task_parameter,
73 				p_sdp_order_id => l_sdp_order_id,
74 				x_data => l_data,
75 				x_count => l_count,
76 			  	x_return_code => l_return_code );
77 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
78 			RAISE FND_API.G_EXC_ERROR;
79 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
80 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
81 		end if;
82 	 end if;
83 
84 	if   JTF_USR_HKS.Ok_to_Execute(
85 					'XDP_DRC_UTIL_VUHK',
86 					'PROCESS_DRC_ORDER_PRE',
87 					'B',
88 					'V' )
89 	then
90 		XDP_DRC_UTIL_VUHK.Process_DRC_order_Pre(
91 				p_workitem_id => l_workitem_id,
92 				p_task_parameter => l_task_parameter,
93 				p_sdp_order_id => l_sdp_order_id,
94 				x_data => l_data,
95 				x_count => l_count,
96 			  	x_return_code => l_return_code );
97 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
98 			RAISE FND_API.G_EXC_ERROR;
99 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
100 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
101 		end if;
102 	end if;
103 
104 
105     /******* Start of API Body *******/
106 
107 	XDP_INTERFACES.Process_DRC_Order(
108 		p_workitem_id => P_WORKITEM_ID,
109 		p_task_parameter => P_TASK_PARAMETER,
110 		x_order_id => x_SDP_ORDER_ID,
111 		x_return_code => lv_ret,
112 		x_error_description => lv_str);
113 
114 	if lv_ret <> 0 then
115         dbms_output.put_line('Error ' ||lv_str);
116 		x_return_status := FND_API.G_RET_STS_ERROR ;
117 		FND_MESSAGE.SET_NAME('XDP', 'XDP_DRC_ORDER_FAILURE');
118 		FND_MESSAGE.SET_TOKEN('ERROR_MSG',lv_str);
119 		FND_MSG_PUB.Add;
120 		FND_MSG_PUB.COUNT_AND_GET
121 		 (  p_count => x_msg_count,
122 			p_data => x_msg_data
123 		 );
124         x_msg_data := lv_str;
125 		return;
126 	end if;
127 
128 
129      /******* End of API Body *******/
130 
131 
132     /******* Post Processing call *******/
133 
134 	l_sdp_order_id := x_sdp_order_id;
135 
136 	if   JTF_USR_HKS.Ok_to_Execute(
137 					'XDP_DRC_UTIL_VUHK',
138 					'PROCESS_DRC_ORDER_POST',
139 					'A',
140 					'V' )
141 	then
142 		XDP_DRC_UTIL_VUHK.Process_DRC_order_Post(
143 				p_workitem_id => l_workitem_id,
144 				p_task_parameter => l_task_parameter,
145 				p_sdp_order_id => l_sdp_order_id,
146 				x_data => l_data,
147 				x_count => l_count,
148 			  	x_return_code => l_return_code );
149 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
150 			RAISE FND_API.G_EXC_ERROR;
151 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
152 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
153 		end if;
154 	end if;
155 	if   JTF_USR_HKS.Ok_to_Execute(
156 					'XDP_DRC_UTIL_CUHK',
157 					'PROCESS_DRC_ORDER_POST',
158 					'A',
159 					'C' )
160 	then
161 		XDP_DRC_UTIL_CUHK.Process_DRC_order_Post(
162 				p_workitem_id => l_workitem_id,
163 				p_task_parameter => l_task_parameter,
164 				p_sdp_order_id => l_sdp_order_id,
165 				x_data => l_data,
166 				x_count => l_count,
167 			  	x_return_code => l_return_code );
168 		if (  l_return_code = FND_API.G_RET_STS_ERROR )  then
169 			RAISE FND_API.G_EXC_ERROR;
170 		elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR ) then
171 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
172 		end if;
173 	 end if;
174 
175 
176       /******* Message Generation Section ********/
177 
178       if JTF_USR_HKS.Ok_to_Execute('XDP_DRC_UTIL_CUHK',
179                                    'Ok_to_Generate_msg',
180                                    'M',
181                                    'M'
182                                    ) then
183 
184         if (XDP_DRC_UTIL_CUHK.Ok_to_Generate_msg(
185 				p_workitem_id => l_workitem_id,
186 			    p_task_parameter => l_task_parameter,
187 			    p_sdp_order_id => l_sdp_order_id
188 				                ))  then
189 
190 	    --XMLGEN.clearBindValues;
191 	    --XMLGEN.setBindValue('ORDER_ID', l_sdp_order_id);
192 
193 		  l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
194 	   	  JTF_USR_HKS.Load_Bind_Data(
195 					l_bind_data_id,
196 					'ORDER_ID',
197 					TO_CHAR(l_sdp_order_id),
198 					'S',
199 					'NUMBER');
200 
201 	       JTF_USR_HKS.generate_message(
202 						p_prod_code => 'XDP',
203 	                    p_bus_obj_code => 'DO',
204 	                    p_action_code => 'I',
205 	                    p_correlation => NULL,
206 	                    p_bind_data_id => l_bind_data_id,
207 	                    x_return_code => l_return_code
208 	                         );
209 
210            if (l_return_code = FND_API.G_RET_STS_ERROR) then
211                RAISE FND_API.G_EXC_ERROR;
212            elsif (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR) then
213                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
214            end if;
215           end if;
216         end if;
217 
218       /******* End of Message Generation Section ********/
219 
220 	x_return_status := FND_API.G_RET_STS_SUCCESS;
221 
222 -- Standard check of p_commit.
223 	IF FND_API.To_Boolean( p_commit ) THEN
224 			COMMIT WORK;
225 	END IF;
226 
227 -- Standard call to get message count and if count is 1, get message info.
228 	FND_MSG_PUB.Count_And_Get (
229 			p_count	=> x_msg_count,
230 			p_data 	=> x_msg_data      );
231 
232 EXCEPTION
233 	WHEN FND_API.G_EXC_ERROR THEN
234 		-- ROLLBACK TO l_order_tag;
235 		x_return_status := FND_API.G_RET_STS_ERROR ;
236 		FND_MSG_PUB.Count_And_Get
237 		(  	p_count	=>   x_msg_count ,
238 			p_data 	=>   x_msg_data
239 		);
240 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
241 		-- ROLLBACK TO l_order_tag;
242 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
243 		FND_MSG_PUB.Count_And_Get
244 		(  	p_count	=>   x_msg_count,
245 			p_data 	=>   x_msg_data
246 		);
247 	WHEN OTHERS THEN
248 		-- ROLLBACK TO l_order_tag;
249 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
250 		IF 	FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
251 		THEN
252 			FND_MSG_PUB.Add_Exc_Msg
253 				(	G_PKG_NAME  	    ,
254 					l_api_name
255 				);
256 		END IF;
257 		FND_MSG_PUB.Count_And_Get
258 		(  	p_count	=> x_msg_count,
259 			p_data  => x_msg_data
260 		);
261 
262  END Process_DRC_Order;
263 
264  PROCEDURE Process_DRC_Order(
265 	p_api_version 	IN 	NUMBER,
266 	p_init_msg_list	IN 	VARCHAR2 := FND_API.G_FALSE,
267 	p_commit		IN	VARCHAR2 := FND_API.G_FALSE,
268 	p_validation_level	IN 	NUMBER :=
269         FND_API.G_VALID_LEVEL_FULL,
270  	x_RETURN_STATUS 	OUT NOCOPY VARCHAR2,
271 	x_msg_count			OUT NOCOPY NUMBER,
272 	x_msg_data			OUT NOCOPY VARCHAR2,
273  	P_WORKITEM_ID 		IN  NUMBER,
274  	P_TASK_PARAMETER 	IN XDP_TYPES.ORDER_PARAMETER_LIST,
275 	x_SDP_ORDER_ID		OUT NOCOPY NUMBER,
276 	x_sdp_Fulfillment_Status	OUT NOCOPY VARCHAR2,
277 	x_sdp_Fulfillment_Result	OUT NOCOPY VARCHAR2) AS
278 BEGIN
279 	Process_DRC_Order(	p_api_version ,
280 						p_init_msg_list,
281 						p_commit,
282 						p_validation_level,
283  						x_RETURN_STATUS,
284 						x_msg_count,
285 						x_msg_data,
286  						P_WORKITEM_ID,
287  						P_TASK_PARAMETER,
288 						x_SDP_ORDER_ID
289 					);
290 --
291 --To retreive fulfillment status and result
292 -- when things going OK
293 --
294 -- Changes are made here to test if order id return from SFM is null, or the return status is success or not
295 -- Will not get order_fulfillment if these conditions are not satisfied.
296 -- 19/03/2000
297 --
298 
299 	IF (X_SDP_ORDER_ID IS NOT NULL) AND (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
300 		x_sdp_Fulfillment_Status := XDP_ENGINE.GET_ORDER_PARAM_VALUE(X_SDP_ORDER_ID,'FULFILLMENT_STATUS');
301 		x_sdp_Fulfillment_Result := XDP_ENGINE.GET_ORDER_PARAM_VALUE(X_SDP_ORDER_ID,'FULFILLMENT_RESULT');
302 	END IF;
303 EXCEPTION
304 	WHEN OTHERS THEN
305 		x_sdp_Fulfillment_Status := FND_API.G_RET_STS_UNEXP_ERROR;
306 		x_sdp_Fulfillment_Result := SUBSTR(SQLERRM,1,256);
307 
308 END Process_DRC_Order;
309 
310 END XDP_DRC_UTIL_PUB;