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