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