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