[Home] [Help]
PACKAGE BODY: APPS.XDPCORE_ORU
Source
1 PACKAGE BODY XDPCORE_ORU AS
2 /* $Header: XDPCORUB.pls 120.1 2005/06/15 22:40:59 appldev $ */
3
4
5 /****
6 All Private Procedures for the Package
7 ****/
8
9 FUNCTION HandleOtherWFFuncmode (funcmode IN VARCHAR2) RETURN VARCHAR2;
10
11 PROCEDURE InitializeORUProcess(itemtype IN VARCHAR2,
12 itemkey IN VARCHAR2);
13
14 PROCEDURE LaunchResubmissionFAs(itemtype IN VARCHAR2,
15 itemkey IN VARCHAR2);
16
17 PROCEDURE SetORUStatus(itemtype IN VARCHAR2,
18 itemkey IN VARCHAR2);
19
20 TYPE RowidArrayType IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
21
22
23
24 /***********************************************
25 * END of Private Procedures/Function Definitions
26 ************************************************/
27
28 -- INITIALIZE_ORU_PROCESS
29 -- Resultout
30 -- Activity Performed - Activity was completed without any errors
31 --
32 -- Your Description here:
33
34 PROCEDURE INITIALIZE_ORU_PROCESS (itemtype IN VARCHAR2,
35 itemkey IN VARCHAR2,
36 actid IN NUMBER,
37 funcmode IN VARCHAR2,
38 resultout OUT NOCOPY VARCHAR2 ) IS
39
40 x_Progress VARCHAR2(2000);
41
42 BEGIN
43
44 -- RUN mode - normal process execution
45 --
46 IF (funcmode = 'RUN') THEN
47 InitializeORUProcess(itemtype, itemkey);
48 resultout := 'COMPLETE:ACTIVITY_PERFORMED';
49 return;
50 ELSE
51 resultout := HandleOtherWFFuncmode(funcmode);
52 return;
53 END IF;
54
55
56 EXCEPTION
57 WHEN OTHERS THEN
58 wf_core.context('XDPCORE_ORU', 'INITIALIZE_ORU_PROCESS', itemtype, itemkey, to_char(actid), funcmode);
59 raise;
60 END INITIALIZE_ORU_PROCESS;
61
62
63
64
65
66 -- LAUNCH_RESUBMISSION_FAS
67 -- Resultout
68 -- Activity Performed - Activity was completed without any errors
69 --
70 -- Your Description here:
71
72 PROCEDURE LAUNCH_RESUBMISSION_FAS (itemtype IN VARCHAR2,
73 itemkey IN VARCHAR2,
74 actid IN NUMBER,
75 funcmode IN VARCHAR2,
76 resultout OUT NOCOPY VARCHAR2 ) IS
77
78 x_Progress VARCHAR2(2000);
79
80 BEGIN
81
82 -- RUN mode - normal process execution
83 --
84 IF (funcmode = 'RUN') THEN
85 LaunchResubmissionFAs(itemtype, itemkey);
86 resultout := 'COMPLETE:ACTIVITY_PERFORMED';
87 return;
88 ELSE
89 resultout := HandleOtherWFFuncmode(funcmode);
90 return;
91 END IF;
92
93
94 EXCEPTION
95 WHEN OTHERS THEN
96 wf_core.context('XDPCORE_ORU', 'LAUNCH_RESUBMISSION_FAS', itemtype, itemkey, to_char(actid), funcmode);
97 raise;
98 END LAUNCH_RESUBMISSION_FAS;
99
100
101 -- SET_ORU_STATUS
102 -- Resultout
103 -- Activity Performed - Activity was completed without any errors
104 --
105 -- Your Description here:
106
107 PROCEDURE SET_ORU_STATUS (itemtype IN VARCHAR2,
108 itemkey IN VARCHAR2,
109 actid IN NUMBER,
110 funcmode IN VARCHAR2,
111 resultout OUT NOCOPY VARCHAR2 )
112 IS
113 x_Progress VARCHAR2(2000);
114
115 BEGIN
116
117 -- RUN mode - normal process execution
118 --
119 IF (funcmode = 'RUN') THEN
120 SetORUStatus(itemtype, itemkey);
121 resultout := 'COMPLETE:ACTIVITY_PERFORMED';
122 return;
123 ELSE
124 resultout := HandleOtherWFFuncmode(funcmode);
125 return;
126 END IF;
127
128
129
130 EXCEPTION
131 WHEN OTHERS THEN
132 wf_core.context('XDPCORE_ORU', 'SET_ORU_STATUS', itemtype, itemkey, to_char(actid), funcmode);
133 raise;
134 END SET_ORU_STATUS;
135
136 /****
137 All the Private Functions
138 ****/
139
140 FUNCTION HandleOtherWFFuncmode( funcmode IN VARCHAR2) RETURN VARCHAR2
141 IS
142
143 resultout VARCHAR2(30);
144 x_Progress VARCHAR2(2000);
145
146 BEGIN
147
148 IF (funcmode = 'CANCEL') THEN
149 resultout := 'COMPLETE';
150 END IF;
151
152 IF (funcmode = 'RESPOND') THEN
153 resultout := 'COMPLETE';
154 END IF;
155
156 IF (funcmode = 'FORWARD') THEN
157 resultout := 'COMPLETE';
158 END IF;
159
160 IF (funcmode = 'TRANSFER') THEN
161 resultout := 'COMPLETE';
162 END IF;
163
164 IF (funcmode = 'TIMEOUT') THEN
165 resultout := 'COMPLETE';
166 END IF;
167
168 IF (funcmode = 'others') THEN
169 resultout := 'COMPLETE';
170 END IF;
171
172
173 return resultout;
174
175 END;
176
177 PROCEDURE LaunchResubmissionFAs (itemtype IN VARCHAR2,
178 itemkey IN VARCHAR2)
179
180 IS
181
182 l_OrderID NUMBER;
183 l_WIINstanceID NUMBER;
184 l_FAInstanceID NUMBER;
185 l_LineItemID NUMBER;
186 l_Counter NUMBER := 0;
187 l_ResubmissionJOBID NUMBER;
188 l_tempKey VARCHAR2(240);
189
190 CURSOR c_GetResubFAs (ResubJobID number) IS
191 SELECT XFW.ORDER_ID,
192 XFR.WORKITEM_INSTANCE_ID,
193 XFR.FA_INSTANCE_ID,
194 XFW.LINE_ITEM_ID
195 FROM XDP_FA_RUNTIME_LIST XFR,
196 XDP_FULFILL_WORKLIST XFW
197 WHERE XFR.RESUBMISSION_JOB_ID = ResubJobID
198 AND XFR.WORKITEM_INSTANCE_ID = XFW.WORKITEM_INSTANCE_ID;
199
200 e_NoJobsFoundException EXCEPTION;
201 e_LaunchFAException EXCEPTION;
202 x_Progress VARCHAR2(2000);
203 ErrCode NUMBER;
204 ErrStr VARCHAR2(2000);
205
206 BEGIN
207
208 l_ResubmissionJOBID := wf_engine.GetItemAttrNumber(itemtype => itemtype,
209 itemkey => itemkey,
210 aname => 'RESUBMISSION_JOB_ID');
211
212 if c_GetResubFAs%ISOPEN then
213 close c_GetResubFAs;
214 end if;
215
216
217 Open c_GetResubFAs(l_ResubmissionJOBID);
218
219 LOOP
220
221 FETCH C_GetResubFAs
222 INTO l_OrderID,
223 l_WIInstanceID,
224 l_FAInstanceID,
225 l_LineItemID;
226
227 EXIT WHEN c_GetResubFAs%NOTFOUND;
228
229 l_Counter := l_Counter + 1;
230
231 XDP_ENG_UTIL.Execute_Resubmit_FA (p_order_id => l_OrderID,
232 p_line_item_id => l_LineItemID,
233 p_wi_instance_id => l_WIInstanceID,
234 p_fa_instance_id => l_FAInstanceID,
235 p_oru_item_type => itemtype,
236 p_oru_item_key => itemkey,
237 p_resubmission_job_id => l_ResubmissionJOBID,
238 p_fa_master => 'WAITFORFLOW-FA-IND',
239 p_return_code => ErrCode,
240 p_error_description => ErrStr,
241 p_fa_caller => 'INTERNAL');
242
243
244 IF ErrCode <>0 THEN
245 x_progress := 'Error when launch FA Proces for Resubmission JOB ID: ' || to_char(l_ResubmissionJobID)
246 || ' OrderID: ' || to_char(l_OrderID) || ' WIInstanceID:' || to_char(l_WIInstanceID) || ' FA:'
247 || to_char(l_FAInstanceID) || ' Error:' || SUBSTR(ErrStr, 1, 1000);
248 raise e_LaunchFAException;
249 END IF;
250
251 END LOOP;
252
253 CLOSE c_GetResubFAs;
254
255 IF l_Counter = 0 THEN
256 x_Progress := 'XDPCORE_ORU.LaunchResubmissionFAs. No Jobs found to be processed for Resubmission Job ID: ' || l_ResubmissionJOBID;
257 RAISE e_NoJobsFoundException;
258
259 ELSE
260 null;
261
262 END IF;
263
264
265 EXCEPTION
266 WHEN e_LaunchFAException THEN
267
268 wf_core.context('XDPCORE_ORU', 'LaunchResubmissionFAs', itemtype, itemkey, null,x_progress);
269 raise;
270
271 when e_NoJobsFoundException THEN
272
273 IF c_GetResubFAs%ISOPEN THEN
274 close c_GetResubFAs;
275 END IF;
276
277 wf_core.context('XDPCORE_ORU', 'LaunchResubmissionFAs', itemtype, itemkey, null,null);
278 raise;
279
280 WHEN others THEN
281
282 IF c_GetResubFAs%ISOPEN THEN
283 close c_GetResubFAs;
284 END IF;
285
286 x_Progress := 'XDPCORE_ORU.LaunchResubmissionFAs. Unhandled Exception: ' || SUBSTR(SQLERRM, 1, 1500);
287 wf_core.context('XDPCORE_ORU', 'LaunchResubmissionFAs', itemtype, itemkey, null,null);
288 raise;
289 END LaunchResubmissionFAs;
290
291
292
293
294 PROCEDURE InitializeORUProcess (itemtype IN VARCHAR2,
295 itemkey IN VARCHAR2)
296
297 IS
298 l_ResubmissionJOBID NUMBER;
299 x_Progress VARCHAR2(2000);
300
301 BEGIN
302
303 l_ResubmissionJobID := wf_engine.GetItemAttrNumber(itemtype => itemtype,
304 itemkey => itemkey,
305 aname => 'RESUBMISSION_JOB_ID');
306
307 UPDATE XDP_FA_RESUBMISSION_LOG
308 SET status_code = 'IN PROGRESS',
309 last_update_date = sysdate,
310 last_updated_by = fnd_global.user_id,
311 last_update_login = fnd_global.login_id
312 WHERE resubmission_job_id = l_ResubmissionJobID;
313
314 EXCEPTION
315 WHEN others THEN
316 x_Progress := 'XDPCORE_ORU.InitializeORUProcess. Unhandled Exception: ' || SUBSTR(SQLERRM, 1, 1500);
317 wf_core.context('XDPCORE_ORU', 'InitializeORUProcess', itemtype, itemkey, null,null);
318 raise;
319 END InitializeORUProcess;
320
321
322 PROCEDURE SetORUStatus (itemtype IN VARCHAR2,
323 itemkey IN VARCHAR2)
324
325 IS
326 l_ResubmissionJobID NUMBER;
327 x_Progress VARCHAR2(2000);
328
329 begin
330
331 l_ResubmissionJobID := wf_engine.GetItemAttrNumber(itemtype => itemtype,
332 itemkey => itemkey,
333 aname => 'RESUBMISSION_JOB_ID');
334
335 UPDATE XDP_FA_RESUBMISSION_LOG
336 SET status_code = 'SUCCESS',
337 completion_date = sysdate,
338 last_update_date = sysdate,
339 last_updated_by = fnd_global.user_id,
340 last_update_login = fnd_global.login_id
341 WHERE resubmission_job_id = l_ResubmissionJobID;
342
343 EXCEPTION
344 WHEN others THEN
345 x_Progress := 'XDPCORE_ORU.SetORUStatus. Unhandled Exception: ' || SUBSTR(SQLERRM, 1, 1500);
346 wf_core.context('XDPCORE_ORU', 'SetORUStatus', itemtype, itemkey, null,null);
347 raise;
348 END SetORUStatus;
349
350 END XDPCORE_ORU;