[Home] [Help]
Skip to content
PACKAGE BODY: APPS.XNP_FA_CB
Source
1 PACKAGE BODY XNP_FA_CB AS
2 /* $Header: XNPFACBB.pls 120.2 2006/02/13 07:48:01 dputhiye ship $ */
3
4
5 ------------------------------------------------------------------
6 -- Gets the FE_ID,FEATURE_TYPE for which the provisioning
7 -- system has responded to. Gets the number range
8 -- and updates the XNP_SV_SMS_FE_MAPS to the
9 -- provisioning status returned in the FA_DONE message
10 -- The correct provisioning operation is derived and
11 -- the right function is invoked to take it from there
12 ------------------------------------------------------------------
13 PROCEDURE PROCESS_FA_DONE
14 (p_MESSAGE_ID IN NUMBER
15 ,p_PROCESS_REFERENCE IN VARCHAR2
16 ,x_ERROR_CODE OUT NOCOPY NUMBER
17 ,x_ERROR_MESSAGE OUT NOCOPY VARCHAR2
18 )
19 IS
20 l_feature_type_n_fe_id VARCHAR2(256) ;
21 l_wf_type VARCHAR2(256) ;
22 l_wf_key VARCHAR2(256) ;
23 l_fnd_message VARCHAR2(4000) ;
24 l_reference_id VARCHAR2(512) := null;
25 l_fa_instance_id NUMBER := 0;
26 l_fe_id NUMBER := 0;
27 l_feature_type VARCHAR2(40) := NULL;
28 l_tmp_fe_id VARCHAR2(40) := NULL;
29 l_provisioning_operation VARCHAR2(240) := NULL;
30 l_workitem_instance_id NUMBER := 0;
31 l_order_id NUMBER ;
32 l_lineitem_id NUMBER ;
33
34 l_starting_number VARCHAR2(80) := null;
35 l_ending_number VARCHAR2(80) := null;
36
37 -- Should change to CLOB later
38
39 l_msg_text VARCHAR2(32767) ;
40
41 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
42 l_sdp_result_code VARCHAR2(20) := NULL;
43
44 e_workflow_parameters_invalid EXCEPTION ;
45 e_NO_FE_FOUND EXCEPTION ;
46
47 CURSOR c_FE_ID is
48 select FE_ID
49 from XDP_FA_RUNTIME_LIST
50 where FA_INSTANCE_ID = l_fa_instance_id;
51
52 BEGIN
53
54 x_error_code := 0 ;
55 x_error_message := NULL ;
56
57 ------------------------------------------------------------------
58 -- Derive the workflow itemtype, itemkey and activity
59 ------------------------------------------------------------------
60
61 xnp_utils.get_wf_instance
62 ( p_process_reference
63 , l_wf_type
64 , l_wf_key
65 , l_feature_type_n_fe_id
66 ) ;
67
68
69 IF( (l_wf_key IS NULL) OR (l_wf_type IS NULL) OR (l_feature_type_n_fe_id IS NULL) )
70 THEN
71 raise e_workflow_parameters_invalid;
72 END IF;
73
74 ------------------------------------------------------------------
75 -- Set the MESSAGE_BODY item attribute
76 ------------------------------------------------------------------
77 XNP_MESSAGE.GET(p_msg_id => p_message_id,
78 x_msg_header => l_msg_header,
79 x_msg_text => l_msg_text);
80
81 -- Get the result code
82
83 XNP_XML_UTILS.DECODE (l_msg_text,
84 'SDP_RESULT_CODE',
85 l_sdp_result_code) ;
86
87 -- Get the reference id
88 l_reference_id := l_msg_header.reference_id;
89
90 -- Get the FA Instance Id
91 l_fa_instance_id := to_number(l_reference_id);
92
93 -- Get the workitem instance id
94
95 xnp_utils.get_workitem_instance_id
96 (p_reference_id =>l_reference_id
97 ,x_workitem_instance_id =>l_workitem_instance_id
98 ,x_error_code =>x_error_code
99 ,x_error_message =>x_error_message
100 );
101
102
103 if(x_error_code <> 0) then
104 return;
105 end if;
106
107 SELECT order_id
108 INTO l_order_id
109 FROM xdp_fulfill_worklist
110 WHERE workitem_instance_id = l_workitem_instance_id ;
111
112 BEGIN
113 l_starting_number :=
114 xnp_standard.get_mandatory_wi_param_value
115 (p_WORKITEM_INSTANCE_ID=>l_workitem_instance_id
116 ,p_PARAMETER_NAME=>'STARTING_NUMBER'
117 );
118 EXCEPTION
119 WHEN NO_DATA_FOUND THEN
120 x_error_code := SQLCODE;
121 FND_MESSAGE.set_name ('XNP', 'GET_MANDATORY_WI_PARAM_ERR') ;
122 FND_MESSAGE.set_token ('WIID', l_workitem_instance_id) ;
123 FND_MESSAGE.set_token ('PARAM_NAME', 'STARTING_NUMBER') ;
124 FND_MESSAGE.set_token ('ERRTEXT', SQLERRM) ;
125 x_error_message := FND_MESSAGE.get ;
126 return;
127 WHEN OTHERS THEN
128 x_error_code := SQLCODE;
129 x_error_message := SQLERRM;
130 return;
131 END;
132
133 BEGIN
134 l_ending_number :=
135 xnp_standard.get_mandatory_wi_param_value
136 (p_WORKITEM_INSTANCE_ID=>l_workitem_instance_id
137 ,p_PARAMETER_NAME=>'ENDING_NUMBER'
138 );
139 EXCEPTION
140 WHEN NO_DATA_FOUND THEN
141 x_error_code := SQLCODE;
142 FND_MESSAGE.set_name ('XNP', 'GET_MANDATORY_WI_PARAM_ERR') ;
143 FND_MESSAGE.set_token ('WIID', l_workitem_instance_id) ;
144 FND_MESSAGE.set_token ('PARAM_NAME', 'ENDING_NUMBER') ;
145 FND_MESSAGE.set_token ('ERRTEXT', SQLERRM) ;
146 x_error_message := FND_MESSAGE.get ;
147 return;
148 WHEN OTHERS THEN
149 x_error_code := SQLCODE;
150 x_error_message := SQLERRM;
151 return;
152 END;
153
154 xnp_utils.get_wf_instance
155 ( l_feature_type_n_fe_id
156 , l_provisioning_operation
157 , l_feature_type
158 , l_tmp_fe_id
159 ) ;
160 l_fe_id := to_number(l_tmp_fe_id);
161
162 if ( l_provisioning_operation = 'PROV')
163 then
164 xnp_fa_cb.provision_fe
165 (p_STARTING_NUMBER =>l_STARTING_NUMBER
166 ,p_ENDING_NUMBER =>l_ENDING_NUMBER
167 ,p_FE_ID =>l_FE_ID
168 ,p_FEATURE_TYPE =>l_FEATURE_TYPE
169 ,p_PROV_STATUS =>l_SDP_RESULT_CODE
170 ,p_ORDER_ID =>l_ORDER_ID
171 ,p_LINEITEM_ID =>l_LINEITEM_ID
172 ,p_WORKITEM_INSTANCE_ID =>l_WORKITEM_INSTANCE_ID
173 ,p_FA_INSTANCE_ID =>l_FA_INSTANCE_ID
174 ,x_ERROR_CODE =>x_ERROR_CODE
175 ,x_ERROR_MESSAGE =>x_ERROR_MESSAGE
176 );
177 elsif ( l_provisioning_operation = 'MOD') then
178 xnp_fa_cb.modify_fe
179 (p_STARTING_NUMBER =>l_STARTING_NUMBER
180 ,p_ENDING_NUMBER =>l_ENDING_NUMBER
181 ,p_FE_ID =>l_FE_ID
182 ,p_FEATURE_TYPE =>l_FEATURE_TYPE
183 ,p_PROV_STATUS =>l_SDP_RESULT_CODE
184 ,p_ORDER_ID =>l_ORDER_ID
185 ,p_LINEITEM_ID =>l_LINEITEM_ID
186 ,p_WORKITEM_INSTANCE_ID =>l_WORKITEM_INSTANCE_ID
187 ,p_FA_INSTANCE_ID =>l_FA_INSTANCE_ID
188 ,x_ERROR_CODE =>x_ERROR_CODE
189 ,x_ERROR_MESSAGE =>x_ERROR_MESSAGE
190 );
191 elsif ( l_provisioning_operation = 'DEPROV') then
192 xnp_fa_cb.deprovision_fe
193 (p_STARTING_NUMBER =>l_STARTING_NUMBER
194 ,p_ENDING_NUMBER =>l_ENDING_NUMBER
195 ,p_FE_ID =>l_FE_ID
196 ,p_FEATURE_TYPE =>l_FEATURE_TYPE
197 ,p_PROV_STATUS =>l_SDP_RESULT_CODE
198 ,p_ORDER_ID =>l_ORDER_ID
199 ,p_LINEITEM_ID =>l_LINEITEM_ID
200 ,p_WORKITEM_INSTANCE_ID =>l_WORKITEM_INSTANCE_ID
201 ,p_FA_INSTANCE_ID =>l_FA_INSTANCE_ID
202 ,x_ERROR_CODE =>x_ERROR_CODE
203 ,x_ERROR_MESSAGE =>x_ERROR_MESSAGE
204 );
205 else
206 null; -- ingnore it
207 end if;
208 EXCEPTION
209 WHEN e_workflow_parameters_invalid THEN
210 FND_MESSAGE.set_name ('XNP', 'INVALID_WF_SPECIFIED') ;
211 FND_MESSAGE.set_token ('MSG_ID', l_msg_header.message_id) ;
212 FND_MESSAGE.set_token ('p_REFERENCE', p_process_reference) ;
213 l_fnd_message := FND_MESSAGE.get ;
214
215 XNP_MESSAGE.UPDATE_STATUS
216 (p_message_id
217 ,'FAILED'
218 ,l_fnd_message
219 ) ;
220
221 x_error_code := XNP_ERRORS.G_INVALID_WORKFLOW ;
222 x_error_message := l_fnd_message ;
223
224 if (c_fe_id%ISOPEN) then
225 close c_fe_id;
226 end if;
227 return;
228
229 WHEN e_NO_FE_FOUND THEN
230 FND_MESSAGE.set_name ('XNP', 'XNP_NO_FE_FOUND_ERR') ;
231 FND_MESSAGE.set_token ('FA_INSTANCE_ID', l_reference_id) ;
232 x_error_message := FND_MESSAGE.get ;
233 x_error_code := SQLCODE;
234 XNP_MESSAGE.UPDATE_STATUS
235 (p_message_id
236 ,'FAILED'
237 ,x_error_message
238 ) ;
239
240 if (c_fe_id%ISOPEN) then
241 close c_fe_id;
242 end if;
243 return;
244
245 WHEN OTHERS THEN
246 x_error_code := SQLCODE ;
247 x_error_message := SQLERRM ;
248 XNP_MESSAGE.UPDATE_STATUS
249 (p_message_id
250 ,'FAILED'
251 ,x_error_message
252 ) ;
253
254 if (c_fe_id%ISOPEN) then
255 close c_fe_id;
256 end if;
257 return;
258
259 END PROCESS_FA_DONE ;
260
261 PROCEDURE PROVISION_FE
262 (p_STARTING_NUMBER VARCHAR2
263 ,p_ENDING_NUMBER VARCHAR2
264 ,p_FE_ID NUMBER
265 ,p_FEATURE_TYPE VARCHAR2
266 ,p_PROV_STATUS VARCHAR2
267 ,p_ORDER_ID IN NUMBER
268 ,p_LINEITEM_ID IN NUMBER
269 ,p_WORKITEM_INSTANCE_ID IN NUMBER
270 ,p_FA_INSTANCE_ID IN NUMBER
271 ,x_ERROR_CODE OUT NOCOPY NUMBER
272 ,x_ERROR_MESSAGE OUT NOCOPY VARCHAR2
273 )
274 IS
275 BEGIN
276
277 XNP_CORE.SMS_UPDATE_FE_MAP_STATUS
278 (p_STARTING_NUMBER =>p_STARTING_NUMBER
279 ,p_ENDING_NUMBER =>p_ENDING_NUMBER
280 ,p_FE_ID =>p_FE_ID
281 ,p_FEATURE_TYPE =>p_FEATURE_TYPE
282 ,p_PROV_STATUS =>p_PROV_STATUS
283 ,p_ORDER_ID =>p_ORDER_ID
284 ,p_LINEITEM_ID =>p_LINEITEM_ID
285 ,p_WORKITEM_INSTANCE_ID =>p_WORKITEM_INSTANCE_ID
286 ,p_FA_INSTANCE_ID =>p_FA_INSTANCE_ID
287 ,x_ERROR_CODE =>x_ERROR_CODE
288 ,x_ERROR_MESSAGE =>x_ERROR_MESSAGE
289 );
290
291 END PROVISION_FE;
292
293 PROCEDURE MODIFY_FE
294 (p_STARTING_NUMBER VARCHAR2
295 ,p_ENDING_NUMBER VARCHAR2
296 ,p_FE_ID NUMBER
297 ,p_FEATURE_TYPE VARCHAR2
298 ,p_PROV_STATUS VARCHAR2
299 ,p_ORDER_ID IN NUMBER
300 ,p_LINEITEM_ID IN NUMBER
301 ,p_WORKITEM_INSTANCE_ID IN NUMBER
302 ,p_FA_INSTANCE_ID IN NUMBER
303 ,x_ERROR_CODE OUT NOCOPY NUMBER
304 ,x_ERROR_MESSAGE OUT NOCOPY VARCHAR2
305 )
306 IS
307 BEGIN
308
309 if((p_prov_status = 'ERROR') or (p_prov_status = 'SUCCESS')) then
310
311 XNP_CORE.SMS_UPDATE_FE_MAP_STATUS
312 (P_STARTING_NUMBER =>P_STARTING_NUMBER
313 ,p_ENDING_NUMBER =>P_ENDING_NUMBER
314 ,p_FE_ID =>p_FE_ID
315 ,p_FEATURE_TYPE =>p_FEATURE_TYPE
316 ,p_PROV_STATUS =>p_PROV_STATUS
317 ,p_ORDER_ID =>p_ORDER_ID
318 ,p_LINEITEM_ID =>p_LINEITEM_ID
319 ,p_WORKITEM_INSTANCE_ID =>p_WORKITEM_INSTANCE_ID
320 ,p_FA_INSTANCE_ID =>p_FA_INSTANCE_ID
321 ,x_ERROR_CODE =>x_ERROR_CODE
322 ,x_ERROR_MESSAGE =>x_ERROR_MESSAGE
323 );
324
325 end if;
326
327 END MODIFY_FE;
328
329 PROCEDURE DEPROVISION_FE
330 (p_STARTING_NUMBER VARCHAR2
331 ,p_ENDING_NUMBER VARCHAR2
332 ,p_FE_ID NUMBER
333 ,p_FEATURE_TYPE VARCHAR2
334 ,p_PROV_STATUS VARCHAR2
335 ,p_ORDER_ID IN NUMBER
336 ,p_LINEITEM_ID IN NUMBER
337 ,p_WORKITEM_INSTANCE_ID IN NUMBER
338 ,p_FA_INSTANCE_ID IN NUMBER
339 ,x_ERROR_CODE OUT NOCOPY NUMBER
340 ,x_ERROR_MESSAGE OUT NOCOPY VARCHAR2
341 )
342 IS
343 BEGIN
344
345 -- Delete the fe map entries for this FE_ID
346
347 XNP_CORE.SMS_DELETE_FE_MAP
348 (p_STARTING_NUMBER => p_starting_number
349 ,p_ENDING_NUMBER => p_ending_number
350 ,p_FE_ID => p_fe_id
351 ,p_FEATURE_TYPE => p_feature_type
352 ,x_ERROR_CODE => x_error_code
353 ,x_ERROR_MESSAGE => x_error_message
354 );
355
356 XNP_CORE.SMS_DELETE_PORTED_NUMBER
357 (p_STARTING_NUMBER => p_starting_number
358 ,p_ENDING_NUMBER => p_ending_number
359 ,x_ERROR_CODE => x_error_code
360 ,x_ERROR_MESSAGE => x_error_message
361 );
362
363 END DEPROVISION_FE;
364
365 END XNP_FA_CB;