DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_RESALE_WF_PVT

Source


1 PACKAGE BODY OZF_RESALE_WF_PVT AS
2 /* $Header: ozfvrwfb.pls 120.13.12020000.3 2013/02/11 09:16:24 annsrini ship $ */
3 
4 -- Package name     : OZF_RESALE_WF_PVT
5 -- Purpose          : Called from Resale Data processing and Payment initiation workflows.
6 -- History          : CREATED       VANSUB      02-18-2004
7 --                  : MODIFICATIONS SLKRISHN    02-28-2004
8 -- NOTE             :
9 -- END of Comments
10 
11 G_FILE_NAME         CONSTANT VARCHAR2(30) := 'ozfvrwfb.pls';
12 
13 OZF_DEBUG_HIGH_ON            BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.g_msg_lvl_debug_high);
14 OZF_DEBUG_LOW_ON             BOOLEAN := FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.g_msg_lvl_debug_low);
15 OZF_UNEXP_ERROR     CONSTANT BOOLEAN := FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.g_msg_lvl_unexp_error);
16 OZF_ERROR           CONSTANT BOOLEAN := FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.g_msg_lvl_error);
17 
18 ---------------------------------------------------------------------
19 -- PROCEDURE
20 --    Handle_Error
21 --
22 -- PURPOSE
23 --    This procedure handles workflow errors
24 --
25 -- PARAMETERS
26 --
27 --
28 -- NOTES
29 ---------------------------------------------------------------------
30 PROCEDURE Handle_Error (
31     p_itemtype                 IN  VARCHAR2,
32     p_itemkey                  IN  VARCHAR2,
33     p_msg_count                IN  NUMBER,
34     p_msg_data                 IN  VARCHAR2,
35     p_process_name             IN  VARCHAR2,
36     x_error_msg                OUT NOCOPY VARCHAR2
37 )
38 IS
39 l_api_name            VARCHAR2(30) := 'Handle_Error';
40 l_msg_count           NUMBER ;
41 l_msg_data            VARCHAR2(2000);
42 l_error_msg           VARCHAR2(4000);
43 l_final_msg           VARCHAR2(4000);
44 l_msg_index           NUMBER;
45 --
46 l_resale_batch_id     NUMBER;
47 l_temp_mesg           VARCHAR2(2500);
48 BEGIN
49 
50    l_resale_batch_id := WF_ENGINE.GetItemAttrText(
51                            itemtype => p_itemtype,
52                            itemkey  => p_itemkey,
53                            aname    => G_WF_ATTR_BATCH_ID);
54 
55    FOR i IN 1..p_msg_count LOOP
56       FND_MSG_PUB.get(
57          p_msg_index       => p_msg_count - i +1 ,
58          p_encoded         => FND_API.g_false,
59          p_data            => l_msg_data,
60          p_msg_index_out   => l_msg_index
61       );
62       l_temp_mesg := l_msg_index ||': ' ||
63                      l_msg_data || fnd_global.local_chr(10);
64       IF length (l_final_msg ) + length (l_temp_mesg) >= 4000 THEN
65          goto end_loop_error;
66       END IF;
67       l_final_msg := l_final_msg ||
68                      l_msg_index ||': ' ||
69                      l_msg_data || fnd_global.local_chr(10);
70 
71       << end_loop_error >>
72       null;
73    END LOOP ;
74    x_error_msg   := l_final_msg;
75 
76    WF_ENGINE.SetItemAttrText(
77        itemtype   => p_itemtype,
78        itemkey    => p_itemkey ,
79        aname      => G_WF_ATTR_ERROR_MESG,
80        avalue     => l_final_msg );
81 EXCEPTION
82    WHEN OTHERS THEN
83       IF OZF_UNEXP_ERROR THEN
84          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
85       END IF;
86       RAISE;
87 END Handle_Error;
88 ---------------------------------------------------------------------
89 -- PROCEDURE
90 --    Re_Initilize_Context
91 --
92 -- PURPOSE
93 --    Private procedure to Will re initilize the application context
94 --
95 -- PARAMETERS
96 --
97 --
98 -- NOTES
99 --   Created for bugfix: 10431933
100 ---------------------------------------------------------------------
101 PROCEDURE  Re_Initilize_Context (
102    itemtype   in varchar2,
103    itemkey    in varchar2
104   )
105 IS
106 l_user_id                  NUMBER;
107 l_resp_id                  NUMBER;
108 l_appl_id                  NUMBER;
109 l_api_name        CONSTANT VARCHAR2(30) := 'Re_Initilize_Context';
110 
111 BEGIN
112    IF OZF_DEBUG_HIGH_ON THEN
113       OZF_UTILITY_PVT.debug_message('IN: Re_Initilize_Context' );
114     END IF;
115 
116        l_user_id := WF_ENGINE.GetItemAttrText( itemtype => itemtype
117                                                ,itemkey  => itemkey
118                                                ,aname    => G_WF_ATTR_USER_ID
119                                              );
120 
121        l_resp_id := WF_ENGINE.GetItemAttrText( itemtype => itemtype
122                                               ,itemkey  => itemkey
123                                               ,aname    => G_WF_ATTR_RESP_ID
124                                              );
125 
126        l_appl_id := WF_ENGINE.GetItemAttrText( itemtype => itemtype
127                                               ,itemkey  => itemkey
128                                               ,aname    => G_WF_ATTR_APPL_ID
129                                              );
130 
131    IF OZF_DEBUG_HIGH_ON THEN
132       OZF_UTILITY_PVT.debug_message('l_user_id ' || l_user_id );
133       OZF_UTILITY_PVT.debug_message('l_resp_id ' || l_resp_id );
134       OZF_UTILITY_PVT.debug_message('l_appl_id ' || l_appl_id );
135    END IF;
136   --//Initilize the session
137    FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_appl_id);
138 
139 EXCEPTION
140   WHEN OTHERS THEN
141       IF OZF_UNEXP_ERROR THEN
142          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
143       END IF;
144       RAISE;
145 END Re_Initilize_Context;
146 ---------------------------------------------------------------------
147 -- PROCEDURE
148 --    Check_Duplicates
149 --
150 -- PURPOSE
151 --    This procedure validates all the lines IN the batch
152 --
153 -- PARAMETERS
154 --
155 --
156 -- NOTES
157 ---------------------------------------------------------------------
158 PROCEDURE Check_Duplicates
159 (
160    itemtype   IN varchar2,
161    itemkey    IN varchar2,
162    actid      IN number,
163    funcmode   IN varchar2,
164    resultout  IN OUT NOCOPY varchar2
165 )
166 IS
167    l_api_name            CONSTANT VARCHAR2(30) := 'Check_Duplicates';
168    l_api_version_number  CONSTANT NUMBER   := 1.0;
169 
170    l_resultout           VARCHAR2(30);
171    l_batch_id            NUMBER;
172    l_return_status       VARCHAR2(1);
173    l_msg_count           NUMBER;
174    l_msg_data            VARCHAR2(2000);
175    l_error_msg           VARCHAR2(4000);
176    l_batch_type          VARCHAR2(30);
177    l_batch_status        VARCHAR2(30);
178    l_batch_return_status        VARCHAR2(30);
179 
180 CURSOR batch_status_csr(p_id number) IS
181 SELECT status_code
182  --FROM  ozf_resale_batches
183  FROM  ozf_resale_batches_all
184  WHERE resale_batch_id = p_id;
185 
186 l_batch_org_id               NUMBER;
187 
188 BEGIN
189    IF OZF_DEBUG_HIGH_ON THEN
190       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
191    END IF;
192 
193    -- R12 MOAC Enhancement (+)
194    l_batch_org_id := WF_ENGINE.GetItemAttrText(
195                         itemtype  => itemtype,
196                         itemkey   => itemkey,
197                         aname     => 'OZF_BATCH_ORG_ID'
198                      );
199 
200 -- nepanda : Fix for Bug 13819601
201 /*   IF (funcmode = 'TEST_CTX') THEN
202       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
203           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
204          resultout := 'FALSE';
205       ELSE
206          resultout := 'TRUE';
207       END IF;
208       RETURN;
209    END IF;
210 
211    IF (funcmode = 'SET_CTX') THEN
212       MO_GLOBAL.set_policy_context(
213          p_access_mode  => 'S',
214          p_org_id       => l_batch_org_id
215       );
216       --resultout := 'COMPLETE:';
217       RETURN;
218    END IF;*/
219    -- R12 MOAC Enhancement (-)
220 
221    IF (funcmode = 'RUN') THEN
222      -- nepanda : Fix for bug 12716192 : Setting Context in case of FUNCMODE = RUN
223 -- nepanda : Fix for Bug 13819601 commented extra set context
224 --     MO_GLOBAL.set_policy_context(
225 --         p_access_mode  => 'S',
226 --         p_org_id       => l_batch_org_id
227 --      );
228 
229       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype   => itemtype,
230                                               itemkey  => itemkey,
231                                               aname    => G_WF_ATTR_BATCH_ID);
232       IF OZF_DEBUG_LOW_ON THEN
233          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
234       END IF;
235 
236       IF l_batch_id IS NOT NULL THEN
237          l_batch_type := WF_ENGINE.GetItemAttrText (itemtype => itemType,
238                                     itemkey  => itemKey,
239                                     aname    => G_WF_ATTR_BATCH_TYPE);
240 
241          OPEN batch_status_csr(l_batch_id);
242          FETCH batch_status_csr into l_batch_status;
243          CLOSE batch_status_csr;
244 
245          IF l_batch_status = OZF_RESALE_COMMON_PVT.G_BATCH_PENDING_PAYMENT THEN
246            l_batch_return_status := l_batch_status;
247          ELSE
248            OZF_RESALE_COMMON_PVT.Update_Duplicates (
249             p_api_version        => 1.0,
250             p_init_msg_list      => FND_API.G_FALSE,
251             p_commit             => FND_API.G_FALSE,
252             p_validation_level   => FND_API.G_VALID_LEVEL_FULL,
253             p_resale_batch_id    => l_batch_id,
254             p_resale_batch_type  => l_batch_type,
255             p_batch_status       => l_batch_status,
256             x_batch_status       => l_batch_return_status,
257             x_return_status      => l_return_status,
258             x_msg_count          => l_msg_count,
259             x_msg_data           => l_msg_data);
260 
261            IF OZF_DEBUG_LOW_ON THEN
262             OZF_UTILITY_PVT.debug_message('Check duplicate line is complete '||l_return_status);
263             OZF_UTILITY_PVT.debug_message('batch status '||l_batch_return_status);
264            END IF;
265            IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
266             RAISE FND_API.G_EXC_ERROR;
267            END IF;
268          END IF;
269       ELSE
270          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
271          RAISE FND_API.G_EXC_ERROR;
272       END IF;
273 
274       WF_ENGINE.SetItemAttrText(
275          itemtype   => itemtype,
276          itemkey    => itemkey ,
277          aname      => G_WF_ATTR_BATCH_STATUS,
278          avalue     => l_batch_return_status );
279 
280       IF l_batch_return_status not in (OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSED,
281                                 OZF_RESALE_COMMON_PVT.G_BATCH_REJECTED,
282                                 OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED) THEN
283          l_resultout := 'COMPLETE:OTHER';
284       ELSE
285          l_resultout := 'COMPLETE:' || l_batch_return_status;
286       END IF;
287       --
288    ELSIF (funcmode = 'CANCEL') THEN
289       l_resultout := 'COMPLETE:';
290    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
291       l_resultout := 'COMPLETE:';
292    ELSIF (funcmode = 'TIMEOUT') THEN
293       l_resultout := 'COMPLETE:';
294    END IF;
295 
296    resultout := l_resultout;
297 
298 EXCEPTION
299    WHEN FND_API.G_EXC_ERROR THEN
300       FND_MSG_PUB.Count_And_Get (
301           p_encoded => FND_API.G_FALSE,
302           p_count => l_msg_count,
303           p_data  => l_msg_data
304       );
305       Handle_Error(
306           p_itemtype     => itemtype
307          ,p_itemkey      => itemkey
308          ,p_msg_count    => l_msg_count
309          ,p_msg_data     => l_msg_data
310          ,p_process_name => l_api_name
311          ,x_error_msg    => l_error_msg
312       );
313       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
314       RAISE;
315    WHEN OTHERS THEN
316       IF OZF_UNEXP_ERROR THEN
317          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
318       END IF;
319       FND_MSG_PUB.Count_And_Get (
320           p_encoded => FND_API.G_FALSE,
321           p_count => l_msg_count,
322           p_data  => l_msg_data
323       );
324       Handle_Error(
325           p_itemtype     => itemtype
326          ,p_itemkey      => itemkey
327          ,p_msg_count    => l_msg_count
328          ,p_msg_data     => l_msg_data
329          ,p_process_name => l_api_name
330          ,x_error_msg    => l_error_msg
331       );
332       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
333       RAISE;
334 END Check_Duplicates;
335 
336 ---------------------------------------------------------------------
337 -- PROCEDURE
338 --    Get_Auto_Accrual_Flag
339 --
340 -- PURPOSE
341 --    This procedure returns values of auto_tp_accrual_flag from system parameter
342 --
343 -- PARAMETERS
344 --
345 --
346 -- NOTES
347 --      returns F or T
348 ---------------------------------------------------------------------
349 PROCEDURE Get_Auto_Accrual_Flag(
350    itemtype   in varchar2,
351    itemkey    in varchar2,
352    actid      in number,
353    funcmode   in varchar2,
354    resultout  in OUT NOCOPY varchar2
355 )IS
356 l_api_name            CONSTANT VARCHAR2(30) := 'Get_Auto_Accrual_Flag';
357 l_api_version_number  CONSTANT NUMBER   := 1.0;
358 l_return_status       VARCHAR2(1);
359 l_msg_count           NUMBER;
360 l_msg_data            VARCHAR2(2000);
361 l_error_msg           VARCHAR2(4000);
362 
363 l_resultout            VARCHAR2(30);
364 l_auto_tp_accrual      VARCHAR2(1);
365 --
366 CURSOR auto_tp_accrual_csr IS
367 SELECT auto_tp_accrual_flag
368   FROM ozf_sys_parameters;
369 
370 l_batch_org_id               NUMBER;
371 BEGIN
372    IF OZF_DEBUG_HIGH_ON THEN
373       OZF_UTILITY_PVT.debug_message('IN ' || l_api_name || ' Funcmode: ' || funcmode);
374    END IF;
375 
376    -- R12 MOAC Enhancement (+)
377    l_batch_org_id := WF_ENGINE.GetItemAttrText(
378                         itemtype  => itemtype,
379                         itemkey   => itemkey,
380                         aname     => 'OZF_BATCH_ORG_ID'
381                      );
382 
383 -- nepanda : Fix for Bug 13819601
384  /*  IF (funcmode = 'TEST_CTX') THEN
385       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
386           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
387          resultout := 'FALSE';
388       ELSE
389          resultout := 'TRUE';
390       END IF;
391       RETURN;
392    END IF;
393 
394    IF (funcmode = 'SET_CTX') THEN
395       MO_GLOBAL.set_policy_context(
396          p_access_mode  => 'S',
397          p_org_id       => l_batch_org_id
398       );
399       --resultout := 'COMPLETE:';
400       RETURN;
401    END IF;*/
402    -- R12 MOAC Enhancement (-)
403 
404    IF (funcmode = 'RUN') THEN
405       --
406       OPEN auto_tp_accrual_csr;
407       FETCH auto_tp_accrual_csr INTO l_auto_tp_accrual;
408       CLOSE auto_tp_accrual_csr;
409 
410 
411       IF l_auto_tp_accrual is NULL THEN
412          -- 11/23/04 yizhang: default flag to FALSE instead of raising an error
413          l_auto_tp_accrual := 'F';
414          --OZF_UTILITY_PVT.error_message('OZF_RESALE_AUTO_TP_NULL');
415          --RAISE FND_API.G_EXC_ERROR;
416       ELSE
417       -- START: Added for bug#9598648 fix
418 	FND_REQUEST.set_org_id(l_batch_org_id);
419       -- END: Added for bug#9598648 fix
420 
421       END IF;
422       l_resultout := 'COMPLETE:' || l_auto_tp_accrual;
423       --
424    ELSIF (funcmode = 'CANCEL') THEN
425       l_resultout := 'COMPLETE:';
426    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
427       l_resultout := 'COMPLETE:';
428    ELSIF (funcmode = 'TIMEOUT') THEN
429       l_resultout := 'COMPLETE:';
430    END IF;
431 
432    resultout := l_resultout;
433 
434 EXCEPTION
435    WHEN FND_API.G_EXC_ERROR THEN
436       FND_MSG_PUB.Count_And_Get (
437           p_encoded => FND_API.G_FALSE,
438           p_count => l_msg_count,
439           p_data  => l_msg_data
440       );
441       Handle_Error(
442           p_itemtype     => itemtype
443          ,p_itemkey      => itemkey
444          ,p_msg_count    => l_msg_count
445          ,p_msg_data     => l_msg_data
446          ,p_process_name => l_api_name
447          ,x_error_msg    => l_error_msg
448       );
449       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
450       RAISE;
451    WHEN OTHERS THEN
452       IF OZF_UNEXP_ERROR THEN
453          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
454       END IF;
455       FND_MSG_PUB.Count_And_Get (
456           p_encoded => FND_API.G_FALSE,
457           p_count => l_msg_count,
458           p_data  => l_msg_data
459       );
460       Handle_Error(
461           p_itemtype     => itemtype
462          ,p_itemkey      => itemkey
463          ,p_msg_count    => l_msg_count
464          ,p_msg_data     => l_msg_data
465          ,p_process_name => l_api_name
466          ,x_error_msg    => l_error_msg
467       );
468       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
469       RAISE;
470 END Get_Auto_Accrual_Flag;
471 
472 ---------------------------------------------------------------------
473 -- PROCEDURE
474 --    Get_Batch_Caller
475 --
476 -- PURPOSE
477 --    This procedure returns the batch type to workflow
478 --
479 -- PARAMETERS
480 --
481 --
482 -- NOTES
483 ---------------------------------------------------------------------
484 PROCEDURE Get_Batch_Caller (
485    itemtype   IN varchar2,
486    itemkey    IN varchar2,
487    actid      IN number,
488    funcmode   IN varchar2,
489    resultout  IN OUT NOCOPY varchar2
490 )
491 IS
492 l_api_name            CONSTANT VARCHAR2(30) := 'Get_Batch_Caller';
493 l_api_version_number  CONSTANT NUMBER   := 1.0;
494 
495 l_resultout            VARCHAR2(30);
496 l_batch_id             NUMBER;
497 l_return_status        VARCHAR2(1);
498 l_msg_count            NUMBER;
499 l_msg_data             VARCHAR2(2000);
500 l_error_msg            VARCHAR2(4000);
501 l_batch_caller         VARCHAR2(30);
502 l_batch_num_w_date     VARCHAR2(240);
503 l_batch_number         VARCHAR2(240);
504 l_batch_org_id               NUMBER;
505 
506 BEGIN
507    IF OZF_DEBUG_HIGH_ON THEN
508       OZF_UTILITY_PVT.debug_message('IN ' || l_api_name || ' Funcmode: ' || funcmode);
509    END IF;
510 
511    -- R12 MOAC Enhancement (+)
512    l_batch_org_id := WF_ENGINE.GetItemAttrText(
513                         itemtype  => itemtype,
514                         itemkey   => itemkey,
515                         aname     => 'OZF_BATCH_ORG_ID'
516                      );
517 
518 -- nepanda : Fix for Bug 13819601
519   /* IF (funcmode = 'TEST_CTX') THEN
520       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
521           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
522          resultout := 'FALSE';
523       ELSE
524          resultout := 'TRUE';
525       END IF;
526       RETURN;
527    END IF;
528 
529    IF (funcmode = 'SET_CTX') THEN
530       MO_GLOBAL.set_policy_context(
531          p_access_mode  => 'S',
532          p_org_id       => l_batch_org_id
533       );
534       --resultout := 'COMPLETE:';
535       RETURN;
536    END IF;*/
537    -- R12 MOAC Enhancement (-)
538 
539    IF (funcmode = 'RUN') THEN
540       --
541       l_batch_caller := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
542                                                 itemkey  => itemkey,
543                                                 aname    => G_WF_ATTR_BATCH_CALLER);
544 
545       IF l_batch_caller is NULL THEN
546          -- default caller to be UI
547          l_batch_caller := G_WF_LKUP_UI;
548          WF_ENGINE.SetItemAttrText(
549             itemtype   => itemtype,
550             itemkey    => itemkey ,
551             aname      => G_WF_ATTR_BATCH_CALLER,
552             avalue     => l_batch_caller);
553       END IF;
554 
555       IF l_batch_caller NOT IN (G_WF_LKUP_UI, G_WF_LKUP_XML, G_WF_LKUP_WEBADI)
556       THEN
557          OZF_UTILITY_PVT.error_message('OZF_API_DEBUG_MESSAGE','TEXT','Invalid Batch caller '|| l_batch_caller);
558          RAISE FND_API.G_EXC_ERROR;
559       END IF;
560 
561       -- SET attribute OZF_BATCH_NUM_W_DATE for event key
562       l_batch_number := WF_ENGINE.GetItemAttrText(
563                         itemtype => itemtype,
564                         itemkey  => itemkey,
565                         aname    => G_WF_ATTR_BATCH_NUMBER
566                   );
567       l_batch_num_w_date :='ResaleBatch:'||l_batch_number||'-'|| to_char(sysdate,'MM/DD/YYYY HH:MI:SS');
568 
569       WF_ENGINE.SetItemAttrText(
570          itemtype   => itemtype,
571          itemkey    => itemkey ,
572          aname      => G_WF_ATTR_BATCH_NUM_W_DATE,
573          avalue     => l_batch_num_w_date);
574 
575       IF OZF_DEBUG_LOW_ON THEN
576          OZF_UTILITY_PVT.debug_message('Batch caller'||   l_batch_caller );
577       END IF;
578       l_resultout := 'COMPLETE:' || l_batch_caller;
579       --
580    ELSIF (funcmode = 'CANCEL') THEN
581       l_resultout := 'COMPLETE:';
582    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
583       l_resultout := 'COMPLETE:';
584    ELSIF (funcmode = 'TIMEOUT') THEN
585       l_resultout := 'COMPLETE:';
586    END IF;
587 
588    resultout := l_resultout;
589 
590 EXCEPTION
591    WHEN FND_API.G_EXC_ERROR THEN
592       FND_MSG_PUB.Count_And_Get (
593           p_encoded => FND_API.G_FALSE,
594           p_count => l_msg_count,
595           p_data  => l_msg_data
596       );
597       Handle_Error(
598           p_itemtype     => itemtype
599          ,p_itemkey      => itemkey
600          ,p_msg_count    => l_msg_count
601          ,p_msg_data     => l_msg_data
602          ,p_process_name => l_api_name
603          ,x_error_msg    => l_error_msg
604       );
605       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
606       RAISE;
607    WHEN OTHERS THEN
608       IF OZF_UNEXP_ERROR THEN
609          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
610       END IF;
611       FND_MSG_PUB.Count_And_Get (
612           p_encoded => FND_API.G_FALSE,
613           p_count => l_msg_count,
614           p_data  => l_msg_data
615       );
616       Handle_Error(
617           p_itemtype     => itemtype
618          ,p_itemkey      => itemkey
619          ,p_msg_count    => l_msg_count
620          ,p_msg_data     => l_msg_data
621          ,p_process_name => l_api_name
622          ,x_error_msg    => l_error_msg
623       );
624       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
625       RAISE;
626 END Get_Batch_Caller;
627 
628 ---------------------------------------------------------------------
629 -- PROCEDURE
630 --    Get_Batch_Status
631 --
632 -- PURPOSE
633 --    This procedure returns the value of batch status
634 --
635 -- PARAMETERS
636 --
637 --
638 -- NOTES
639 ---------------------------------------------------------------------
640 PROCEDURE Get_Batch_Status (
641    itemtype   in varchar2,
642    itemkey    in varchar2,
643    actid      in number,
644    funcmode   in varchar2,
645    resultout  in OUT NOCOPY varchar2 )
646 IS
647    l_api_name            CONSTANT VARCHAR2(30) := 'Get_Batch_Status';
648    l_api_version_number  CONSTANT NUMBER   := 1.0;
649 
650    l_resultout            VARCHAR2(30);
651    l_batch_id             NUMBER;
652    l_return_status        VARCHAR2(1);
653    l_msg_count            NUMBER;
654    l_msg_data             VARCHAR2(2000);
655    l_error_msg            VARCHAR2(4000);
656    l_status_code          VARCHAR2(30);
657 
658 CURSOR batch_status_csr(p_id number) IS
659 SELECT status_code
660  --FROM  ozf_resale_batches
661  FROM  ozf_resale_batches_all
662  WHERE resale_batch_id = p_id;
663 
664 l_batch_org_id               NUMBER;
665 BEGIN
666    IF OZF_DEBUG_HIGH_ON THEN
667       OZF_UTILITY_PVT.debug_message('IN ' || l_api_name || ' Funcmode: ' || funcmode);
668    END IF;
669 
670    -- R12 MOAC Enhancement (+)
671    l_batch_org_id := WF_ENGINE.GetItemAttrText(
672                         itemtype  => itemtype,
673                         itemkey   => itemkey,
674                         aname     => 'OZF_BATCH_ORG_ID'
675                      );
676 
677 -- nepanda : Fix for Bug 13819601
678  /*  IF (funcmode = 'TEST_CTX') THEN
679       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
680           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
681          resultout := 'FALSE';
682       ELSE
683          resultout := 'TRUE';
684       END IF;
685       RETURN;
686    END IF;
687 
688    IF (funcmode = 'SET_CTX') THEN
689       MO_GLOBAL.set_policy_context(
690          p_access_mode  => 'S',
691          p_org_id       => l_batch_org_id
692       );
693       --resultout := 'COMPLETE:';
694       RETURN;
695    END IF;*/
696    -- R12 MOAC Enhancement (-)
697 
698    IF (funcmode = 'RUN') THEN
699       --
700       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
701                                                 itemkey  => itemkey,
702                                                 aname    => G_WF_ATTR_BATCH_ID);
703 
704       OPEN batch_status_csr(l_batch_id);
705       FETCH batch_status_csr into l_status_code;
706       CLOSE batch_status_csr;
707 
708       IF OZF_DEBUG_LOW_ON THEN
709          OZF_UTILITY_PVT.debug_message('Batch status '||   l_status_code );
710       END IF;
711       IF l_status_code not in ( OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSED,
712                                 OZF_RESALE_COMMON_PVT.G_BATCH_REJECTED,
713                                 OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED) THEN
714          l_resultout := 'COMPLETE:OTHER';
715       ELSE
716          l_resultout := 'COMPLETE:' || l_status_code;
717       END IF;
718       --
719    ELSIF (funcmode = 'CANCEL') THEN
720       l_resultout := 'COMPLETE:';
721    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
722       l_resultout := 'COMPLETE:';
723    ELSIF (funcmode = 'TIMEOUT') THEN
724       l_resultout := 'COMPLETE:';
725    END IF;
726 
727    resultout := l_resultout;
728 
729 EXCEPTION
730    WHEN FND_API.G_EXC_ERROR THEN
731       FND_MSG_PUB.Count_And_Get (
732           p_encoded => FND_API.G_FALSE,
733           p_count => l_msg_count,
734           p_data  => l_msg_data
735       );
736       Handle_Error(
737           p_itemtype     => itemtype
738          ,p_itemkey      => itemkey
739          ,p_msg_count    => l_msg_count
740          ,p_msg_data     => l_msg_data
741          ,p_process_name => l_api_name
742          ,x_error_msg    => l_error_msg
743       );
744       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
745       RAISE;
746    WHEN OTHERS THEN
747       IF OZF_UNEXP_ERROR THEN
748          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
749       END IF;
750       FND_MSG_PUB.Count_And_Get (
751           p_encoded => FND_API.G_FALSE,
752           p_count => l_msg_count,
753           p_data  => l_msg_data
754       );
755       Handle_Error(
756           p_itemtype     => itemtype
757          ,p_itemkey      => itemkey
758          ,p_msg_count    => l_msg_count
759          ,p_msg_data     => l_msg_data
760          ,p_process_name => l_api_name
761          ,x_error_msg    => l_error_msg
762       );
763       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
764       RAISE;
765 END Get_Batch_Status;
766 
767 ---------------------------------------------------------------------
768 -- PROCEDURE
769 --    Get_Batch_Type
770 --
771 -- PURPOSE
772 --    This procedure returns the batch type to workflow
773 --
774 -- PARAMETERS
775 --
776 --
777 -- NOTES
778 ---------------------------------------------------------------------
779 PROCEDURE Get_Batch_Type (
780    itemtype   IN varchar2,
781    itemkey    IN varchar2,
782    actid      IN number,
783    funcmode   IN varchar2,
784    resultout  IN OUT NOCOPY varchar2
785 )
786 IS
787    l_api_name            CONSTANT VARCHAR2(30) := 'Get_Batch_Type';
788    l_api_version_number  CONSTANT NUMBER   := 1.0;
789 
790    l_resultout            VARCHAR2(30);
791    l_batch_id             NUMBER;
792    l_return_status        VARCHAR2(1);
793    l_msg_count            NUMBER;
794    l_msg_data             VARCHAR2(2000);
795    l_error_msg            VARCHAR2(4000);
796    l_batch_type           VARCHAR2(30);
797 
798 l_batch_org_id               NUMBER;
799 BEGIN
800    IF OZF_DEBUG_HIGH_ON THEN
801       OZF_UTILITY_PVT.debug_message('IN ' || l_api_name || ' Funcmode: ' || funcmode);
802    END IF;
803 
804    -- R12 MOAC Enhancement (+)
805    l_batch_org_id := WF_ENGINE.GetItemAttrText(
806                         itemtype  => itemtype,
807                         itemkey   => itemkey,
808                         aname     => 'OZF_BATCH_ORG_ID'
809                      );
810 
811 -- nepanda : Fix for Bug 13819601
812 /*   IF (funcmode = 'TEST_CTX') THEN
813       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
814           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
815          resultout := 'FALSE';
816       ELSE
817          resultout := 'TRUE';
818       END IF;
819       RETURN;
820    END IF;
821 
822    IF (funcmode = 'SET_CTX') THEN
823       MO_GLOBAL.set_policy_context(
824          p_access_mode  => 'S',
825          p_org_id       => l_batch_org_id
826       );
827       --resultout := 'COMPLETE:';
828       RETURN;
829    END IF;*/
830    -- R12 MOAC Enhancement (-)
831 
832    IF (funcmode = 'RUN') THEN
833       --
834       l_batch_type := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
835                                                 itemkey  => itemkey,
836                                                 aname    => G_WF_ATTR_BATCH_TYPE);
837 
838       IF l_batch_type NOT IN (G_WF_LKUP_CHARGEBACK, G_WF_LKUP_SPECIALPRICE, G_WF_LKUP_TRACING) OR
839          l_batch_type IS NULL
840       THEN
841          OZF_UTILITY_PVT.error_message('OZF_API_DEBUG_MESSAGE','TEXT','Invalid Batch Type '|| l_batch_type);
842          RAISE FND_API.G_EXC_ERROR;
843       END IF;
844 
845       IF OZF_DEBUG_LOW_ON THEN
846          OZF_UTILITY_PVT.debug_message('Batch Type '||   l_batch_type );
847       END IF;
848       l_resultout := 'COMPLETE:' || l_batch_type;
849       --
850    ELSIF (funcmode = 'CANCEL') THEN
851       l_resultout := 'COMPLETE:';
852    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
853       l_resultout := 'COMPLETE:';
854    ELSIF (funcmode = 'TIMEOUT') THEN
855       l_resultout := 'COMPLETE:';
856    END IF;
857 
858    resultout := l_resultout;
859 
860 EXCEPTION
861    WHEN FND_API.G_EXC_ERROR THEN
862       FND_MSG_PUB.Count_And_Get (
863           p_encoded => FND_API.G_FALSE,
864           p_count => l_msg_count,
865           p_data  => l_msg_data
866       );
867       Handle_Error(
868           p_itemtype     => itemtype
869          ,p_itemkey      => itemkey
870          ,p_msg_count    => l_msg_count
871          ,p_msg_data     => l_msg_data
872          ,p_process_name => l_api_name
873          ,x_error_msg    => l_error_msg
874       );
875       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
876       RAISE;
877    WHEN OTHERS THEN
878       IF OZF_UNEXP_ERROR THEN
879          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
880       END IF;
881       FND_MSG_PUB.Count_And_Get (
882           p_encoded => FND_API.G_FALSE,
883           p_count => l_msg_count,
884           p_data  => l_msg_data
885       );
886       Handle_Error(
887           p_itemtype     => itemtype
888          ,p_itemkey      => itemkey
889          ,p_msg_count    => l_msg_count
890          ,p_msg_data     => l_msg_data
891          ,p_process_name => l_api_name
892          ,x_error_msg    => l_error_msg
893       );
894       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
895       RAISE;
896 END Get_Batch_Type;
897 ---------------------------------------------------------------------
898 -- PROCEDURE
899 --    Init_attributes
900 --
901 -- PURPOSE
902 --    This api will be initialize the attributes used IN the workflow
903 --
904 ---------------------------------------------------------------------
905 PROCEDURE Init_Attributes(
906    itemtype    IN     VARCHAR2,
907    itemkey     IN     VARCHAR2,
908    actid       IN     NUMBER,
909    funcmode    IN     VARCHAR2,
910    result      OUT NOCOPY    VARCHAR2
911 )
912 IS
913 l_api_name            CONSTANT VARCHAR2(30) := 'Init_Attributes';
914 l_api_version_number  CONSTANT NUMBER   := 1.0;
915 --
916 l_resale_batch_id NUMBER;
917 --
918 l_batch_number         VARCHAR2(240);
919 l_batch_type           VARCHAR2(30);
920 l_last_updated_by        Number;
921 --
922 --l_emp_id          NUMBER;
923 --l_user_name       VARCHAR2(100);
924 --l_display_name    VARCHAR2(100);
925 l_return_status   VARCHAR2(1);
926 l_error_msg       VARCHAR2(4000);
927 l_msg_count       NUMBER;
928 l_msg_data        VARCHAR2(2000);
929 --
930 CURSOR batch_num_csr(p_id number) IS
931  SELECT batch_number
932      , batch_type
933      , last_updated_by
934      , org_id
935  FROM ozf_resale_batches_all
936  WHERE resale_batch_id = p_id;
937 
938 /*
939 CURSOR emp_infor_csr(p_res_id NUMBER) IS
940 SELECT employee_id
941   FROM ams_jtf_rs_emp_v
942  WHERE  resource_id = p_res_id;
943 */
944 l_batch_org_id     NUMBER;
945 --
946 BEGIN
947    IF OZF_DEBUG_HIGH_ON THEN
948       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
949    END IF;
950    IF (funcmode = 'RUN') THEN
951       -- Clear the error stack for one time
952       FND_MSG_PUB.initialize;
953 
954       l_resale_batch_id := WF_ENGINE.GetItemAttrText(
955                               itemtype => itemtype,
956                               itemkey  => itemkey,
957                               aname    => G_WF_ATTR_BATCH_ID
958                         );
959       IF l_resale_batch_id is NULL THEN
960          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
961          RAISE FND_API.G_EXC_ERROR;
962       END IF;
963 
964       OPEN batch_num_csr (l_resale_batch_id);
965       FETCH batch_num_csr into l_batch_number
966                              , l_batch_type
967                              , l_last_updated_by
968                              , l_batch_org_id;
969       CLOSE batch_num_csr;
970 
971 
972 
973       WF_ENGINE.SetItemAttrText(
974           itemtype   => itemtype,
975           itemkey    => itemkey ,
976           aname      => G_WF_ATTR_BATCH_NUMBER,
977           avalue     => l_batch_number );
978 
979       WF_ENGINE.SetItemAttrText(
980           itemtype   => itemtype,
981           itemkey    => itemkey ,
982           aname      => G_WF_ATTR_BATCH_TYPE,
983           avalue     => l_batch_type );
984 
985       WF_ENGINE.SetItemAttrText(
986           itemtype   => itemtype,
987           itemkey    => itemkey ,
988           aname      => 'OZF_BATCH_ORG_ID',
989           avalue     => l_batch_org_id
990       );
991 
992       /*
993       -- The following is moved to workflow first activity-Set_Batch_Status.
994       OPEN emp_infor_csr(OZF_UTILITY_PVT.get_resource_id(l_last_updated_by));
995       FETCH emp_infor_csr INTO l_emp_id;
996       CLOSE emp_infor_csr;
997 
998       WF_DIRECTORY.GetRoleName
999            ( p_orig_system      => 'PER',
1000              p_orig_system_id   => l_emp_id ,
1001              p_name             => l_user_name,
1002              p_display_name     => l_display_name );
1003 
1004       WF_ENGINE.SetItemAttrText(
1005           itemtype   => itemtype,
1006           itemkey    => itemkey ,
1007           aname      => G_WF_ATTR_WF_ADMINISTRATOR,
1008           avalue     => l_user_name);
1009 
1010       -- set workflow process owner
1011       WF_ENGINE.SetItemOwner(
1012           itemtype  => itemtype,
1013           itemkey   => itemkey,
1014           owner     => l_user_name);
1015       */
1016    --
1017    END IF;
1018 
1019    --  CANCEL mode  - Normal Process Execution
1020    IF (funcmode = 'CANCEL') THEN
1021       RETURN;
1022    END IF;
1023 
1024    --  Other mode  - Normal Process Execution
1025    IF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1026       RETURN;
1027    END IF;
1028 
1029    --  TIMEOUT mode  - Normal Process Execution
1030    IF (funcmode = 'TIMEOUT') THEN
1031       RETURN;
1032    END IF;
1033    --
1034 EXCEPTION
1035    WHEN FND_API.G_EXC_ERROR THEN
1036       FND_MSG_PUB.Count_And_Get (
1037           p_encoded => FND_API.G_FALSE,
1038           p_count => l_msg_count,
1039           p_data  => l_msg_data
1040       );
1041       Handle_Error(
1042           p_itemtype     => itemtype
1043          ,p_itemkey      => itemkey
1044          ,p_msg_count    => l_msg_count
1045          ,p_msg_data     => l_msg_data
1046          ,p_process_name => l_api_name
1047          ,x_error_msg    => l_error_msg
1048       );
1049       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1050       RAISE;
1051    WHEN OTHERS THEN
1052       IF OZF_UNEXP_ERROR THEN
1053          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1054       END IF;
1055       FND_MSG_PUB.Count_And_Get (
1056           p_encoded => FND_API.G_FALSE,
1057           p_count => l_msg_count,
1058           p_data  => l_msg_data
1059       );
1060       Handle_Error(
1061           p_itemtype     => itemtype
1062          ,p_itemkey      => itemkey
1063          ,p_msg_count    => l_msg_count
1064          ,p_msg_data     => l_msg_data
1065          ,p_process_name => l_api_name
1066          ,x_error_msg    => l_error_msg
1067       );
1068       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1069       RAISE;
1070 END Init_Attributes;
1071 
1072 ---------------------------------------------------------------------
1073 -- PROCEDURE
1074 --    Initiate_Payment
1075 --
1076 -- PURPOSE
1077 --    This procedure inities payment processing
1078 --
1079 -- PARAMETERS
1080 --
1081 --
1082 -- NOTES
1083 ---------------------------------------------------------------------
1084 PROCEDURE  Initiate_Payment (
1085    itemtype   IN varchar2,
1086    itemkey    IN varchar2,
1087    actid      IN number,
1088    funcmode   IN varchar2,
1089    resultout  IN OUT NOCOPY varchar2)
1090 IS
1091    l_api_name            CONSTANT VARCHAR2(30) := 'Initiate_Payment';
1092    l_api_version_number  CONSTANT NUMBER   := 1.0;
1093    l_resultout           VARCHAR2(30);
1094    l_resale_batch_id     NUMBER;
1095    l_return_status       VARCHAR2(1);
1096    l_msg_count           NUMBER;
1097    l_msg_data            VARCHAR2(2000);
1098    l_error_msg           VARCHAR2(4000);
1099 
1100 l_batch_org_id               NUMBER;
1101 
1102 BEGIN
1103    IF OZF_DEBUG_HIGH_ON THEN
1104       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1105    END IF;
1106 
1107    -- R12 MOAC Enhancement (+)
1108    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1109                         itemtype  => itemtype,
1110                         itemkey   => itemkey,
1111                         aname     => 'OZF_BATCH_ORG_ID'
1112                      );
1113 
1114 -- nepanda : Fix for Bug 13819601
1115  /*  IF (funcmode = 'TEST_CTX') THEN
1116       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1117           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1118          resultout := 'FALSE';
1119       ELSE
1120          resultout := 'TRUE';
1121       END IF;
1122       RETURN;
1123    END IF;
1124 
1125    IF (funcmode = 'SET_CTX') THEN
1126       MO_GLOBAL.set_policy_context(
1127          p_access_mode  => 'S',
1128          p_org_id       => l_batch_org_id
1129       );
1130       --resultout := 'COMPLETE:';
1131       RETURN;
1132    END IF;*/
1133    -- R12 MOAC Enhancement (-)
1134 
1135    IF (funcmode = 'RUN') THEN
1136    --
1137       l_resale_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
1138                                               itemkey  => itemkey,
1139                                               aname    => G_WF_ATTR_BATCH_ID);
1140       OZF_RESALE_PVT.Initiate_Payment (
1141           p_api_version      => 1.0
1142          ,p_init_msg_list    => FND_API.G_FALSE
1143          ,p_commit           => FND_API.G_FALSE
1144          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1145          ,p_resale_batch_id  => l_resale_batch_id
1146          ,x_return_status    => l_return_status
1147          ,x_msg_data         => l_msg_data
1148          ,x_msg_count        => l_msg_count
1149       );
1150       IF OZF_DEBUG_LOW_ON THEN
1151          OZF_UTILITY_PVT.debug_message('subscribe process iface is complete ');
1152       END IF;
1153       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1154          RAISE FND_API.G_EXC_ERROR;
1155       END IF;
1156       l_resultout := 'COMPLETE:SUCCESS';
1157    --
1158    ELSIF (funcmode = 'CANCEL') THEN
1159       l_resultout := 'COMPLETE:';
1160    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1161       l_resultout := 'COMPLETE:';
1162    ELSIF (funcmode = 'TIMEOUT') THEN
1163       l_resultout := 'COMPLETE:';
1164    END IF;
1165 
1166    resultout := l_resultout;
1167 
1168 EXCEPTION
1169    WHEN FND_API.G_EXC_ERROR THEN
1170       FND_MSG_PUB.Count_And_Get (
1171           p_encoded => FND_API.G_FALSE,
1172           p_count => l_msg_count,
1173           p_data  => l_msg_data
1174       );
1175       Handle_Error(
1176           p_itemtype     => itemtype
1177          ,p_itemkey      => itemkey
1178          ,p_msg_count    => l_msg_count
1179          ,p_msg_data     => l_msg_data
1180          ,p_process_name => l_api_name
1181          ,x_error_msg    => l_error_msg
1182       );
1183       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1184       resultout := 'COMPLETE:ERROR';
1185       RETURN;
1186    WHEN OTHERS THEN
1187       IF OZF_UNEXP_ERROR THEN
1188          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1189       END IF;
1190       FND_MSG_PUB.Count_And_Get (
1191           p_encoded => FND_API.G_FALSE,
1192           p_count => l_msg_count,
1193           p_data  => l_msg_data
1194       );
1195       Handle_Error(
1196           p_itemtype     => itemtype
1197          ,p_itemkey      => itemkey
1198          ,p_msg_count    => l_msg_count
1199          ,p_msg_data     => l_msg_data
1200          ,p_process_name => l_api_name
1201          ,x_error_msg    => l_error_msg
1202       );
1203       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1204       RAISE;
1205 END Initiate_Payment;
1206 
1207 
1208 ---------------------------------------------------------------------
1209 -- PROCEDURE
1210 --    Initiate_Payment_chargeback
1211 --
1212 -- PURPOSE
1213 --    This procedure inities payment processing for chargeback
1214 --
1215 -- PARAMETERS
1216 --
1217 --
1218 -- NOTES
1219 --   returns success or error
1220 ---------------------------------------------------------------------
1221 PROCEDURE  Initiate_Payment_chargeback (
1222    itemtype   in varchar2,
1223    itemkey    in varchar2,
1224    actid      in number,
1225    funcmode   in varchar2,
1226    resultout  in OUT NOCOPY varchar2 )
1227 IS
1228    l_api_name            CONSTANT VARCHAR2(30) := 'Initiate_Payment_chargeback';
1229    l_api_version_number  CONSTANT NUMBER   := 1.0;
1230    l_resultout           VARCHAR2(30);
1231    l_resale_batch_id     NUMBER;
1232    l_return_status       VARCHAR2(1);
1233    l_msg_count           NUMBER;
1234    l_msg_data            VARCHAR2(2000);
1235    l_error_msg           VARCHAR2(4000);
1236 
1237 l_batch_org_id               NUMBER;
1238 
1239 CURSOR get_batch_info(p_resale_batch_id IN NUMBER) IS
1240    SELECT status_code
1241    ,      last_updated_by
1242    ,      batch_type
1243    ,      batch_number
1244    ,      org_id
1245    FROM  ozf_resale_batches_all
1246    WHERE resale_batch_id = p_resale_batch_id;
1247 
1248    l_batch_info    get_batch_info%ROWTYPE;
1249 
1250 BEGIN
1251    IF OZF_DEBUG_HIGH_ON THEN
1252       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1253    END IF;
1254 
1255    -- R12 MOAC Enhancement (+)
1256    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1257                         itemtype  => itemtype,
1258                         itemkey   => itemkey,
1259                         aname     => 'OZF_BATCH_ORG_ID'
1260                      );
1261 
1262 -- nepanda : Fix for Bug 13819601
1263  /*  IF (funcmode = 'TEST_CTX') THEN
1264       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1265           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1266          resultout := 'FALSE';
1267       ELSE
1268          resultout := 'TRUE';
1269       END IF;
1270       RETURN;
1271    END IF;
1272 
1273    IF (funcmode = 'SET_CTX') THEN
1274       MO_GLOBAL.set_policy_context(
1275          p_access_mode  => 'S',
1276          p_org_id       => l_batch_org_id
1277       );
1278       --resultout := 'COMPLETE:';
1279       RETURN;
1280    END IF; */
1281    -- R12 MOAC Enhancement (-)
1282 
1283    IF (funcmode = 'RUN') THEN
1284    --
1285       l_resale_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
1286                                               itemkey  => itemkey,
1287                                               aname    => G_WF_ATTR_BATCH_ID);
1288 -- Fix for Bug#8867381 (+)
1289 
1290    OPEN get_batch_info(l_resale_batch_id);
1291    FETCH get_batch_info INTO l_batch_info;
1292    CLOSE get_batch_info;
1293 
1294    --//Bugfix : 10431933
1295     -- The session is re-initialized when it is lost.
1296     --FND_GLOBAL.APPS_INITIALIZE(l_batch_info.last_updated_by, 0, 682);
1297 
1298 
1299     --//Re Initilize Session Context
1300 -- nepanda : Fix for Bug 13819601 commented extra set context
1301 --    Re_Initilize_Context(itemtype => itemtype
1302 --                         ,itemkey  => itemkey);
1303 
1304 
1305 -- For Bug#8867381 (-)
1306       OZF_CHARGEBACK_PVT.Initiate_Payment (
1307           p_api_version      => 1.0
1308          ,p_init_msg_list    => FND_API.G_FALSE
1309          ,p_commit           => FND_API.G_FALSE
1310          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1311          ,p_resale_batch_id  => l_resale_batch_id
1312          ,x_return_status    => l_return_status
1313          ,x_msg_data         => l_msg_data
1314          ,x_msg_count        => l_msg_count
1315       );
1316       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1317          RAISE FND_API.G_EXC_ERROR;
1318       END IF;
1319       l_resultout := 'COMPLETE:SUCCESS';
1320    --
1321    ELSIF (funcmode = 'CANCEL') THEN
1322       l_resultout := 'COMPLETE:';
1323    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1324       l_resultout := 'COMPLETE:';
1325    ELSIF (funcmode = 'TIMEOUT') THEN
1326       l_resultout := 'COMPLETE:';
1327    END IF;
1328 
1329    resultout := l_resultout;
1330 
1331 EXCEPTION
1332    WHEN FND_API.G_EXC_ERROR THEN
1333       FND_MSG_PUB.Count_And_Get (
1334           p_encoded => FND_API.G_FALSE,
1335           p_count => l_msg_count,
1336           p_data  => l_msg_data
1337       );
1338       Handle_Error(
1339           p_itemtype     => itemtype
1340          ,p_itemkey      => itemkey
1341          ,p_msg_count    => l_msg_count
1342          ,p_msg_data     => l_msg_data
1343          ,p_process_name => l_api_name
1344          ,x_error_msg    => l_error_msg
1345       );
1346       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1347       resultout := 'COMPLETE:ERROR';
1348       RETURN;
1349    WHEN OTHERS THEN
1350       IF OZF_UNEXP_ERROR THEN
1351          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1352       END IF;
1353       FND_MSG_PUB.Count_And_Get (
1354           p_encoded => FND_API.G_FALSE,
1355           p_count => l_msg_count,
1356           p_data  => l_msg_data
1357       );
1358       Handle_Error(
1359           p_itemtype     => itemtype
1360          ,p_itemkey      => itemkey
1361          ,p_msg_count    => l_msg_count
1362          ,p_msg_data     => l_msg_data
1363          ,p_process_name => l_api_name
1364          ,x_error_msg    => l_error_msg
1365       );
1366       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1367       RAISE;
1368 END Initiate_Payment_Chargeback;
1369 
1370 
1371 ---------------------------------------------------------------------
1372 -- PROCEDURE
1373 --    Initiate_Payment__SPP
1374 --
1375 -- PURPOSE
1376 --    This procedure inities payment processing for special pricing
1377 --
1378 -- PARAMETERS
1379 --
1380 --
1381 -- NOTES
1382 ---------------------------------------------------------------------
1383 PROCEDURE  Initiate_Payment_SPP(
1384    itemtype   in varchar2,
1385    itemkey    in varchar2,
1386    actid      in number,
1387    funcmode   in varchar2,
1388    resultout  in OUT NOCOPY varchar2 )
1389 IS
1390    l_api_name            CONSTANT VARCHAR2(30) := 'Initiate_Payment_SPP';
1391    l_api_version_number  CONSTANT NUMBER   := 1.0;
1392    l_resultout           VARCHAR2(30);
1393    l_resale_batch_id     NUMBER;
1394    l_return_status       VARCHAR2(1);
1395    l_msg_count           NUMBER;
1396    l_msg_data            VARCHAR2(2000);
1397    l_error_msg           VARCHAR2(4000);
1398 
1399 l_batch_org_id               NUMBER;
1400 
1401 BEGIN
1402    IF OZF_DEBUG_HIGH_ON THEN
1403       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1404    END IF;
1405 
1406    -- R12 MOAC Enhancement (+)
1407    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1408                         itemtype  => itemtype,
1409                         itemkey   => itemkey,
1410                         aname     => 'OZF_BATCH_ORG_ID'
1411                      );
1412 -- nepanda : Fix for Bug 13819601
1413 /*   IF (funcmode = 'TEST_CTX') THEN
1414       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1415           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1416          resultout := 'FALSE';
1417       ELSE
1418          resultout := 'TRUE';
1419       END IF;
1420       RETURN;
1421    END IF;
1422 
1423    IF (funcmode = 'SET_CTX') THEN
1424       MO_GLOBAL.set_policy_context(
1425          p_access_mode  => 'S',
1426          p_org_id       => l_batch_org_id
1427       );
1428       --resultout := 'COMPLETE:';
1429       RETURN;
1430    END IF;*/
1431    -- R12 MOAC Enhancement (-)
1432 
1433    IF (funcmode = 'RUN') THEN
1434    --
1435       l_resale_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
1436                                               itemkey  => itemkey,
1437                                               aname    => G_WF_ATTR_BATCH_ID);
1438 
1439       --//Bugfix : 10431933
1440       --//Re Initilize Session Context
1441 -- nepanda : Fix for Bug 13819601 commented extra set context
1442 --      Re_Initilize_Context(itemtype => itemtype
1443 --                           ,itemkey  => itemkey);
1444 
1445       OZF_SPECIAL_PRICING_PVT.Initiate_Payment (
1446           p_api_version      => 1.0
1447          ,p_init_msg_list    => FND_API.G_FALSE
1448          ,p_commit           => FND_API.G_FALSE
1449          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1450          ,p_resale_batch_id  => l_resale_batch_id
1451          ,x_return_status    => l_return_status
1452          ,x_msg_data         => l_msg_data
1453          ,x_msg_count        => l_msg_count
1454       );
1455       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1456          RAISE FND_API.G_EXC_ERROR;
1457       END IF;
1458       l_resultout := 'COMPLETE:SUCCESS';
1459    --
1460    ELSIF (funcmode = 'CANCEL') THEN
1461       l_resultout := 'COMPLETE:';
1462    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1463       l_resultout := 'COMPLETE:';
1464    ELSIF (funcmode = 'TIMEOUT') THEN
1465       l_resultout := 'COMPLETE:';
1466    END IF;
1467 
1468    resultout := l_resultout;
1469 
1470 EXCEPTION
1471    WHEN FND_API.G_EXC_ERROR THEN
1472       FND_MSG_PUB.Count_And_Get (
1473           p_encoded => FND_API.G_FALSE,
1474           p_count => l_msg_count,
1475           p_data  => l_msg_data
1476       );
1477       Handle_Error(
1478           p_itemtype     => itemtype
1479          ,p_itemkey      => itemkey
1480          ,p_msg_count    => l_msg_count
1481          ,p_msg_data     => l_msg_data
1482          ,p_process_name => l_api_name
1483          ,x_error_msg    => l_error_msg
1484       );
1485       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1486       resultout := 'COMPLETE:ERROR';
1487       RETURN;
1488    WHEN OTHERS THEN
1489       IF OZF_UNEXP_ERROR THEN
1490          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1491       END IF;
1492       FND_MSG_PUB.Count_And_Get (
1493           p_encoded => FND_API.G_FALSE,
1494           p_count => l_msg_count,
1495           p_data  => l_msg_data
1496       );
1497       Handle_Error(
1498           p_itemtype     => itemtype
1499          ,p_itemkey      => itemkey
1500          ,p_msg_count    => l_msg_count
1501          ,p_msg_data     => l_msg_data
1502          ,p_process_name => l_api_name
1503          ,x_error_msg    => l_error_msg
1504       );
1505       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1506       RAISE;
1507 END Initiate_Payment_SPP;
1508 
1509 
1510 ---------------------------------------------------------------------
1511 -- PROCEDURE
1512 --    Initiate_Payment_Tracing
1513 --
1514 -- PURPOSE
1515 --    This procedure inities payment processing for tracing order
1516 --
1517 -- PARAMETERS
1518 --
1519 --
1520 -- NOTES
1521 ---------------------------------------------------------------------
1522 PROCEDURE  Initiate_Payment_Tracing (
1523    itemtype   in varchar2,
1524    itemkey    in varchar2,
1525    actid      in number,
1526    funcmode   in varchar2,
1527    resultout  in OUT NOCOPY varchar2 )
1528 IS
1529    l_api_name            CONSTANT VARCHAR2(30) := 'Initiate_Payment_Tracing';
1530    l_api_version_number  CONSTANT NUMBER   := 1.0;
1531    l_resultout           VARCHAR2(30);
1532    l_resale_batch_id     NUMBER;
1533    l_return_status       VARCHAR2(1);
1534    l_msg_count           NUMBER;
1535    l_msg_data            VARCHAR2(2000);
1536    l_error_msg           VARCHAR2(4000);
1537 BEGIN
1538    IF OZF_DEBUG_HIGH_ON THEN
1539       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1540    END IF;
1541    IF (funcmode = 'RUN') THEN
1542    --
1543       l_resale_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
1544                                               itemkey  => itemkey,
1545                                               aname    => G_WF_ATTR_BATCH_ID);
1546 
1547       --//Bugfix : 10431933
1548       --//Re Initilize Session Context
1549 -- nepanda : Fix for Bug 13819601 commented extra set context
1550 --      Re_Initilize_Context(itemtype => itemtype
1551 --                           ,itemkey  => itemkey);
1552 
1553       OZF_TRACING_ORDER_PVT.Initiate_Payment (
1554           p_api_version      => 1.0
1555          ,p_init_msg_list    => FND_API.G_FALSE
1556          ,p_commit           => FND_API.G_FALSE
1557          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1558          ,p_resale_batch_id  => l_resale_batch_id
1559          ,x_return_status    => l_return_status
1560          ,x_msg_data         => l_msg_data
1561          ,x_msg_count        => l_msg_count
1562       );
1563       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1564          RAISE FND_API.G_EXC_ERROR;
1565       END IF;
1566       l_resultout := 'COMPLETE:SUCCESS';
1567    --
1568    ELSIF (funcmode = 'CANCEL') THEN
1569       l_resultout := 'COMPLETE:';
1570    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1571       l_resultout := 'COMPLETE:';
1572    ELSIF (funcmode = 'TIMEOUT') THEN
1573       l_resultout := 'COMPLETE:';
1574    END IF;
1575 
1576    resultout := l_resultout;
1577 
1578 EXCEPTION
1579    WHEN FND_API.G_EXC_ERROR THEN
1580       FND_MSG_PUB.Count_And_Get (
1581           p_encoded => FND_API.G_FALSE,
1582           p_count => l_msg_count,
1583           p_data  => l_msg_data
1584       );
1585       Handle_Error(
1586           p_itemtype     => itemtype
1587          ,p_itemkey      => itemkey
1588          ,p_msg_count    => l_msg_count
1589          ,p_msg_data     => l_msg_data
1590          ,p_process_name => l_api_name
1591          ,x_error_msg    => l_error_msg
1592       );
1593       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1594       resultout := 'COMPLETE:ERROR';
1595       RETURN;
1596    WHEN OTHERS THEN
1597       IF OZF_UNEXP_ERROR THEN
1598          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1599       END IF;
1600       FND_MSG_PUB.Count_And_Get (
1601           p_encoded => FND_API.G_FALSE,
1602           p_count => l_msg_count,
1603           p_data  => l_msg_data
1604       );
1605       Handle_Error(
1606           p_itemtype     => itemtype
1607          ,p_itemkey      => itemkey
1608          ,p_msg_count    => l_msg_count
1609          ,p_msg_data     => l_msg_data
1610          ,p_process_name => l_api_name
1611          ,x_error_msg    => l_error_msg
1612       );
1613       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1614       RAISE;
1615 END Initiate_Payment_Tracing;
1616 
1617 ---------------------------------------------------------------------
1618 -- PROCEDURE
1619 --    Process_Chargeback
1620 --
1621 -- PURPOSE
1622 --    This procedure inities indirect sales data processing for chargeback
1623 --
1624 -- PARAMETERS
1625 --
1626 --
1627 -- NOTES
1628 ---------------------------------------------------------------------
1629 PROCEDURE  Process_Chargeback (
1630    itemtype   IN varchar2,
1631    itemkey    IN varchar2,
1632    actid      IN number,
1633    funcmode   IN varchar2,
1634    resultout  IN OUT NOCOPY varchar2)
1635 IS
1636    l_api_name            CONSTANT VARCHAR2(30) := 'Process_Chargeback';
1637    l_api_version_number  CONSTANT NUMBER   := 1.0;
1638    l_resultout           VARCHAR2(30);
1639    l_resale_batch_id     NUMBER;
1640    l_return_status       VARCHAR2(1);
1641    l_msg_count           NUMBER;
1642    l_msg_data            VARCHAR2(2000);
1643    l_error_msg           VARCHAR2(4000);
1644 
1645 l_batch_org_id           NUMBER;
1646 
1647 BEGIN
1648    IF OZF_DEBUG_HIGH_ON THEN
1649       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1650    END IF;
1651 
1652    -- R12 MOAC Enhancement (+)
1653    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1654                         itemtype  => itemtype,
1655                         itemkey   => itemkey,
1656                         aname     => 'OZF_BATCH_ORG_ID'
1657                      );
1658 
1659 -- nepanda : Fix for Bug 13819601
1660 /*   IF (funcmode = 'TEST_CTX') THEN
1661       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1662           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1663          resultout := 'FALSE';
1664       ELSE
1665          resultout := 'TRUE';
1666       END IF;
1667       RETURN;
1668    END IF;
1669 
1670    IF (funcmode = 'SET_CTX') THEN
1671       MO_GLOBAL.set_policy_context(
1672          p_access_mode  => 'S',
1673          p_org_id       => l_batch_org_id
1674       );
1675       --resultout := 'COMPLETE:';
1676       RETURN;
1677    END IF;*/
1678    -- R12 MOAC Enhancement (-)
1679 
1680    IF (funcmode = 'RUN') THEN
1681    --
1682       l_resale_batch_id := WF_ENGINE.GetItemAttrNumber(itemtype => itemtype,
1683                                               itemkey  => itemkey,
1684                                               aname    => G_WF_ATTR_BATCH_ID);
1685       OZF_CHARGEBACK_PVT.Process_Order(
1686           p_api_version      => 1.0
1687          ,p_init_msg_list    => FND_API.G_FALSE
1688          ,p_commit           => FND_API.G_FALSE
1689          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1690          ,p_resale_batch_id  => l_resale_batch_id
1691          ,x_return_status    => l_return_status
1692          ,x_msg_data         => l_msg_data
1693          ,x_msg_count        => l_msg_count
1694       );
1695       IF OZF_DEBUG_LOW_ON THEN
1696          OZF_UTILITY_PVT.debug_message('subscribe process chargeback order complete ');
1697       END IF;
1698       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1699          RAISE FND_API.G_EXC_ERROR;
1700       END IF;
1701       l_resultout := 'COMPLETE:SUCCESS';
1702    --
1703    ELSIF (funcmode = 'CANCEL') THEN
1704       l_resultout := 'COMPLETE:';
1705    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1706       l_resultout := 'COMPLETE:';
1707    ELSIF (funcmode = 'TIMEOUT') THEN
1708       l_resultout := 'COMPLETE:';
1709    END IF;
1710 
1711    resultout := l_resultout;
1712 
1713 EXCEPTION
1714    WHEN FND_API.G_EXC_ERROR THEN
1715       FND_MSG_PUB.Count_And_Get (
1716           p_encoded => FND_API.G_FALSE,
1717           p_count => l_msg_count,
1718           p_data  => l_msg_data
1719       );
1720       Handle_Error(
1721           p_itemtype     => itemtype
1722          ,p_itemkey      => itemkey
1723          ,p_msg_count    => l_msg_count
1724          ,p_msg_data     => l_msg_data
1725          ,p_process_name => l_api_name
1726          ,x_error_msg    => l_error_msg
1727       );
1728       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1729       resultout := 'COMPLETE:ERROR';
1730       RETURN;
1731    WHEN OTHERS THEN
1732       IF OZF_UNEXP_ERROR THEN
1733          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1734       END IF;
1735       FND_MSG_PUB.Count_And_Get (
1736           p_encoded => FND_API.G_FALSE,
1737           p_count => l_msg_count,
1738           p_data  => l_msg_data
1739       );
1740       Handle_Error(
1741           p_itemtype     => itemtype
1742          ,p_itemkey      => itemkey
1743          ,p_msg_count    => l_msg_count
1744          ,p_msg_data     => l_msg_data
1745          ,p_process_name => l_api_name
1746          ,x_error_msg    => l_error_msg
1747       );
1748       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1749       resultout := 'COMPLETE:ERROR';
1750       RAISE;
1751 END Process_Chargeback;
1752 
1753 
1754 ---------------------------------------------------------------------
1755 -- PROCEDURE
1756 --    Process_Resale
1757 --
1758 -- PURPOSE
1759 --    This procedure initiates third party accrual process for resale data
1760 --
1761 -- PARAMETERS
1762 --
1763 --
1764 -- NOTES
1765 ---------------------------------------------------------------------
1766 PROCEDURE Process_Resale(
1767    itemtype   in varchar2,
1768    itemkey    in varchar2,
1769    actid      in number,
1770    funcmode   in varchar2,
1771    resultout  in OUT NOCOPY varchar2)
1772 IS
1773    l_api_name            CONSTANT VARCHAR2(30) := 'Process_Resale';
1774    l_api_version_number  CONSTANT NUMBER   := 1.0;
1775    l_resultout           VARCHAR2(30);
1776    l_resale_batch_id     NUMBER;
1777    l_return_status       VARCHAR2(1);
1778    l_msg_count           NUMBER;
1779    l_msg_data            VARCHAR2(2000);
1780    l_error_msg           VARCHAR2(4000);
1781 
1782 l_batch_org_id               NUMBER;
1783 
1784 BEGIN
1785    IF OZF_DEBUG_HIGH_ON THEN
1786       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1787    END IF;
1788 
1789    -- R12 MOAC Enhancement (+)
1790    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1791                         itemtype  => itemtype,
1792                         itemkey   => itemkey,
1793                         aname     => 'OZF_BATCH_ORG_ID'
1794                      );
1795 
1796 -- nepanda : Fix for Bug 13819601
1797 /*   IF (funcmode = 'TEST_CTX') THEN
1798       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1799           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1800          resultout := 'FALSE';
1801       ELSE
1802          resultout := 'TRUE';
1803       END IF;
1804       RETURN;
1805    END IF;
1806 
1807    IF (funcmode = 'SET_CTX') THEN
1808       MO_GLOBAL.set_policy_context(
1809          p_access_mode  => 'S',
1810          p_org_id       => l_batch_org_id
1811       );
1812       --resultout := 'COMPLETE:';
1813       RETURN;
1814    END IF;*/
1815    -- R12 MOAC Enhancement (-)
1816 
1817    IF (funcmode = 'RUN') THEN
1818    --
1819       l_resale_batch_id := WF_ENGINE.GetItemAttrNumber(itemtype => itemtype,
1820                                               itemkey  => itemkey,
1821                                               aname    => G_WF_ATTR_BATCH_ID);
1822       OZF_RESALE_PVT.Process_Resale (
1823           p_api_version       => 1
1824          ,p_init_msg_list     => FND_API.G_FALSE
1825          ,p_commit            => FND_API.G_FALSE
1826          ,p_validation_level  => FND_API.G_VALID_LEVEL_FULL
1827          ,p_resale_batch_id   => l_resale_batch_id
1828          ,x_return_status     => l_return_status
1829          ,x_msg_data          => l_msg_data
1830          ,x_msg_count         => l_msg_count
1831       );
1832       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1833          RAISE FND_API.G_EXC_ERROR;
1834       END IF;
1835       l_resultout := 'COMPLETE:SUCCESS';
1836    --
1837    ELSIF (funcmode = 'CANCEL') THEN
1838       l_resultout := 'COMPLETE:';
1839    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1840       l_resultout := 'COMPLETE:';
1841    ELSIF (funcmode = 'TIMEOUT') THEN
1842       l_resultout := 'COMPLETE:';
1843    END IF;
1844 
1845    resultout := l_resultout;
1846 
1847 EXCEPTION
1848    WHEN FND_API.G_EXC_ERROR THEN
1849       FND_MSG_PUB.Count_And_Get (
1850           p_encoded => FND_API.G_FALSE,
1851           p_count => l_msg_count,
1852           p_data  => l_msg_data
1853       );
1854       Handle_Error(
1855           p_itemtype     => itemtype
1856          ,p_itemkey      => itemkey
1857          ,p_msg_count    => l_msg_count
1858          ,p_msg_data     => l_msg_data
1859          ,p_process_name => l_api_name
1860          ,x_error_msg    => l_error_msg
1861       );
1862       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1863       resultout := 'COMPLETE:ERROR';
1864       RETURN;
1865    WHEN OTHERS THEN
1866       IF OZF_UNEXP_ERROR THEN
1867          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1868       END IF;
1869       FND_MSG_PUB.Count_And_Get (
1870           p_encoded => FND_API.G_FALSE,
1871           p_count => l_msg_count,
1872           p_data  => l_msg_data
1873       );
1874       Handle_Error(
1875           p_itemtype     => itemtype
1876          ,p_itemkey      => itemkey
1877          ,p_msg_count    => l_msg_count
1878          ,p_msg_data     => l_msg_data
1879          ,p_process_name => l_api_name
1880          ,x_error_msg    => l_error_msg
1881       );
1882       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1883       RAISE;
1884 END Process_Resale;
1885 
1886 
1887 ---------------------------------------------------------------------
1888 -- PROCEDURE
1889 --    Process_Special_Pricing
1890 --
1891 -- PURPOSE
1892 --    This procedure inities indirect sales data processing for special pricing
1893 --
1894 -- PARAMETERS
1895 --
1896 --
1897 -- NOTES
1898 ---------------------------------------------------------------------
1899 PROCEDURE  Process_Special_Pricing(
1900    itemtype   IN varchar2,
1901    itemkey    IN varchar2,
1902    actid      IN number,
1903    funcmode   IN varchar2,
1904    resultout  IN OUT NOCOPY varchar2)
1905 IS
1906    l_api_name            CONSTANT VARCHAR2(30) := 'Process_Special_Pricing';
1907    l_api_version_number  CONSTANT NUMBER   := 1.0;
1908    l_resultout           VARCHAR2(30);
1909    l_resale_batch_id     NUMBER;
1910    l_return_status       VARCHAR2(1);
1911    l_msg_count           NUMBER;
1912    l_msg_data            VARCHAR2(2000);
1913    l_error_msg           VARCHAR2(4000);
1914 
1915 l_batch_org_id               NUMBER;
1916 
1917 BEGIN
1918    IF OZF_DEBUG_HIGH_ON THEN
1919       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
1920    END IF;
1921 
1922    -- R12 MOAC Enhancement (+)
1923    l_batch_org_id := WF_ENGINE.GetItemAttrText(
1924                         itemtype  => itemtype,
1925                         itemkey   => itemkey,
1926                         aname     => 'OZF_BATCH_ORG_ID'
1927                      );
1928 
1929 -- nepanda : Fix for Bug 13819601
1930 /*   IF (funcmode = 'TEST_CTX') THEN
1931       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
1932           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
1933          resultout := 'FALSE';
1934       ELSE
1935          resultout := 'TRUE';
1936       END IF;
1937       RETURN;
1938    END IF;
1939 
1940    IF (funcmode = 'SET_CTX') THEN
1941       MO_GLOBAL.set_policy_context(
1942          p_access_mode  => 'S',
1943          p_org_id       => l_batch_org_id
1944       );
1945       --resultout := 'COMPLETE:';
1946       RETURN;
1947    END IF;*/
1948    -- R12 MOAC Enhancement (-)
1949 
1950    IF (funcmode = 'RUN') THEN
1951    --
1952       l_resale_batch_id := WF_ENGINE.GetItemAttrNumber(itemtype => itemtype,
1953                                               itemkey  => itemkey,
1954                                               aname    => G_WF_ATTR_BATCH_ID);
1955       OZF_SPECIAL_PRICING_PVT.Process_Order(
1956           p_api_version      => 1.0
1957          ,p_init_msg_list    => FND_API.G_FALSE
1958          ,p_commit           => FND_API.G_FALSE
1959          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1960          ,p_resale_batch_id  => l_resale_batch_id
1961          ,x_return_status    => l_return_status
1962          ,x_msg_data         => l_msg_data
1963          ,x_msg_count        => l_msg_count
1964       );
1965       IF OZF_DEBUG_LOW_ON THEN
1966          OZF_UTILITY_PVT.debug_message('subscribe process chargeback order complete ');
1967       END IF;
1968       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
1969          RAISE FND_API.G_EXC_ERROR;
1970       END IF;
1971       l_resultout := 'COMPLETE:SUCCESS';
1972    --
1973    ELSIF (funcmode = 'CANCEL') THEN
1974       l_resultout := 'COMPLETE:';
1975    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
1976       l_resultout := 'COMPLETE:';
1977    ELSIF (funcmode = 'TIMEOUT') THEN
1978       l_resultout := 'COMPLETE:';
1979    END IF;
1980 
1981    resultout := l_resultout;
1982 
1983 EXCEPTION
1984    WHEN FND_API.G_EXC_ERROR THEN
1985       FND_MSG_PUB.Count_And_Get (
1986           p_encoded => FND_API.G_FALSE,
1987           p_count => l_msg_count,
1988           p_data  => l_msg_data
1989       );
1990       Handle_Error(
1991           p_itemtype     => itemtype
1992          ,p_itemkey      => itemkey
1993          ,p_msg_count    => l_msg_count
1994          ,p_msg_data     => l_msg_data
1995          ,p_process_name => l_api_name
1996          ,x_error_msg    => l_error_msg
1997       );
1998       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
1999       resultout := 'COMPLETE:ERROR';
2000       RETURN;
2001    WHEN OTHERS THEN
2002       IF OZF_UNEXP_ERROR THEN
2003          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2004       END IF;
2005       FND_MSG_PUB.Count_And_Get (
2006           p_encoded => FND_API.G_FALSE,
2007           p_count => l_msg_count,
2008           p_data  => l_msg_data
2009       );
2010       Handle_Error(
2011           p_itemtype     => itemtype
2012          ,p_itemkey      => itemkey
2013          ,p_msg_count    => l_msg_count
2014          ,p_msg_data     => l_msg_data
2015          ,p_process_name => l_api_name
2016          ,x_error_msg    => l_error_msg
2017       );
2018       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2019       RAISE;
2020 END Process_Special_Pricing;
2021 
2022 
2023 ---------------------------------------------------------------------
2024 -- PROCEDURE
2025 --    Process_Tracing
2026 --
2027 -- PURPOSE
2028 --    This procedure inities indirect sales data processing for tracing data
2029 --
2030 -- PARAMETERS
2031 --
2032 --
2033 -- NOTES
2034 ---------------------------------------------------------------------
2035 PROCEDURE  Process_Tracing(
2036    itemtype   IN varchar2,
2037    itemkey    IN varchar2,
2038    actid      IN number,
2039    funcmode   IN varchar2,
2040    resultout  IN OUT NOCOPY varchar2)
2041 IS
2042    l_api_name            CONSTANT VARCHAR2(30) := 'Process_Tracing';
2043    l_api_version_number  CONSTANT NUMBER   := 1.0;
2044    l_resultout           VARCHAR2(30);
2045    l_resale_batch_id     NUMBER;
2046    l_return_status       VARCHAR2(1);
2047    l_msg_count           NUMBER;
2048    l_msg_data            VARCHAR2(2000);
2049    l_error_msg           VARCHAR2(4000);
2050 
2051 l_batch_org_id               NUMBER;
2052 
2053 BEGIN
2054    IF OZF_DEBUG_HIGH_ON THEN
2055       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
2056    END IF;
2057 
2058    -- R12 MOAC Enhancement (+)
2059    l_batch_org_id := WF_ENGINE.GetItemAttrText(
2060                         itemtype  => itemtype,
2061                         itemkey   => itemkey,
2062                         aname     => 'OZF_BATCH_ORG_ID'
2063                      );
2064 
2065 -- nepanda : Fix for Bug 13819601
2066 /*   IF (funcmode = 'TEST_CTX') THEN
2067       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
2068           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
2069          resultout := 'FALSE';
2070       ELSE
2071          resultout := 'TRUE';
2072       END IF;
2073       RETURN;
2074    END IF;
2075 
2076    IF (funcmode = 'SET_CTX') THEN
2077       MO_GLOBAL.set_policy_context(
2078          p_access_mode  => 'S',
2079          p_org_id       => l_batch_org_id
2080       );
2081       --resultout := 'COMPLETE:';
2082       RETURN;
2083    END IF;*/
2084    -- R12 MOAC Enhancement (-)
2085 
2086    IF (funcmode = 'RUN') THEN
2087    --
2088       l_resale_batch_id := WF_ENGINE.GetItemAttrNumber(itemtype => itemtype,
2089                                               itemkey  => itemkey,
2090                                               aname    => G_WF_ATTR_BATCH_ID);
2091       OZF_TRACING_ORDER_PVT.Process_Order(
2092           p_api_version      => 1.0
2093          ,p_init_msg_list    => FND_API.G_FALSE
2094          ,p_commit           => FND_API.G_FALSE
2095          ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
2096          ,p_resale_batch_id  => l_resale_batch_id
2097          ,x_return_status    => l_return_status
2098          ,x_msg_data         => l_msg_data
2099          ,x_msg_count        => l_msg_count
2100       );
2101       IF OZF_DEBUG_LOW_ON THEN
2102          OZF_UTILITY_PVT.debug_message('subscribe process tracing order complete ');
2103       END IF;
2104       IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
2105          RAISE FND_API.G_EXC_ERROR;
2106       END IF;
2107       l_resultout := 'COMPLETE:SUCCESS';
2108    --
2109    ELSIF (funcmode = 'CANCEL') THEN
2110       l_resultout := 'COMPLETE:';
2111    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
2112       l_resultout := 'COMPLETE:';
2113    ELSIF (funcmode = 'TIMEOUT') THEN
2114       l_resultout := 'COMPLETE:';
2115    END IF;
2116 
2117    resultout := l_resultout;
2118 
2119 EXCEPTION
2120    WHEN FND_API.G_EXC_ERROR THEN
2121       FND_MSG_PUB.Count_And_Get (
2122           p_encoded => FND_API.G_FALSE,
2123           p_count => l_msg_count,
2124           p_data  => l_msg_data
2125       );
2126       Handle_Error(
2127           p_itemtype     => itemtype
2128          ,p_itemkey      => itemkey
2129          ,p_msg_count    => l_msg_count
2130          ,p_msg_data     => l_msg_data
2131          ,p_process_name => l_api_name
2132          ,x_error_msg    => l_error_msg
2133       );
2134       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2135       resultout := 'COMPLETE:ERROR';
2136       RETURN;
2137    WHEN OTHERS THEN
2138       IF OZF_UNEXP_ERROR THEN
2139          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2140       END IF;
2141       FND_MSG_PUB.Count_And_Get (
2142           p_encoded => FND_API.G_FALSE,
2143           p_count => l_msg_count,
2144           p_data  => l_msg_data
2145       );
2146       Handle_Error(
2147           p_itemtype     => itemtype
2148          ,p_itemkey      => itemkey
2149          ,p_msg_count    => l_msg_count
2150          ,p_msg_data     => l_msg_data
2151          ,p_process_name => l_api_name
2152          ,x_error_msg    => l_error_msg
2153       );
2154       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2155       RAISE;
2156 END Process_Tracing;
2157 
2158 ---------------------------------------------------------------------
2159 -- PROCEDURE
2160 --    Reset_Status
2161 --
2162 -- PURPOSE
2163 --    This procedure is to reset the status of a batch IN case of exceptions
2164 --
2165 -- PARAMETERS
2166 --
2167 --
2168 -- NOTES
2169 ---------------------------------------------------------------------
2170 PROCEDURE Reset_Status (
2171    itemtype    IN     VARCHAR2,
2172    itemkey     IN     VARCHAR2,
2173    actid       IN     NUMBER,
2174    funcmode    IN     VARCHAR2,
2175    result      OUT NOCOPY    VARCHAR2
2176 )IS
2177 l_api_name          CONSTANT VARCHAR2(30) := 'Reset_Status';
2178 l_api_version       CONSTANT NUMBER := 1.0;
2179 l_full_name         CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
2180 --
2181 l_return_status     varchar2(30);
2182 l_msg_data          varchar2(2000);
2183 l_msg_count         number;
2184 --
2185 l_resale_batch_id NUMBER;
2186 l_batch_status        varchar2(30);
2187 l_lines_disputed      number;
2188 l_resultout           VARCHAR2(30);
2189 l_error_msg           VARCHAR2(4000);
2190 --
2191 CURSOR batch_status_csr(p_id number) IS
2192 SELECT status_code
2193      , lines_disputed
2194  --FROM  ozf_resale_batches
2195  FROM  ozf_resale_batches_all
2196  WHERE resale_batch_id = p_id;
2197 --
2198 BEGIN
2199    IF OZF_DEBUG_HIGH_ON THEN
2200       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
2201    END IF;
2202    IF (funcmode = 'RUN') THEN
2203       --
2204       l_resale_batch_id := WF_ENGINE.GetItemAttrText(
2205                               itemtype => itemtype,
2206                               itemkey  => itemkey,
2207                               aname    => G_WF_ATTR_BATCH_ID
2208                         );
2209 
2210       OPEN batch_status_csr(l_resale_batch_id);
2211       FETCH batch_status_csr into l_batch_status, l_lines_disputed;
2212       CLOSE batch_status_csr;
2213 
2214       IF l_batch_status is null THEN
2215          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_STATUS_NULL');
2216          RAISE FND_API.G_EXC_ERROR;
2217       END IF;
2218 
2219       -- reset the status based on # of disputed lines
2220       OPEN  OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr (l_resale_batch_id);
2221       FETCH OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr into l_lines_disputed;
2222       CLOSE OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr;
2223 
2224       IF l_batch_status = OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSING THEN
2225          IF l_lines_disputed = 0 THEN
2226             -- update status to Processed
2227             UPDATE ozf_resale_batches_all
2228                SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_OPEN
2229              WHERE resale_batch_id = l_resale_batch_id;
2230          ELSE
2231             -- update status to Disputed
2232             UPDATE ozf_resale_batches_all
2233                SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED
2234              WHERE resale_batch_id = l_resale_batch_id;
2235          END IF;
2236       ELSIF l_batch_status = OZF_RESALE_COMMON_PVT.G_BATCH_PENDING_PAYMENT THEN
2237 
2238          IF l_lines_disputed = 0 THEN
2239             -- update status to Processed
2240             UPDATE ozf_resale_batches_all
2241                SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSED
2242              WHERE resale_batch_id = l_resale_batch_id;
2243          ELSE
2244             -- update status to Disputed
2245             UPDATE ozf_resale_batches_all
2246                SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED
2247              WHERE resale_batch_id = l_resale_batch_id;
2248          END IF;
2249       END IF;
2250       l_resultout := 'COMPLETE';
2251       --
2252    END IF;
2253 
2254    --  CANCEL mode  - Normal Process Execution
2255    IF (funcmode = 'CANCEL') THEN
2256      l_resultout := 'COMPLETE:';
2257    END IF;
2258 
2259    --  TIMEOUT mode  - Normal Process Execution
2260    IF (funcmode = 'TIMEOUT') THEN
2261       l_resultout := 'COMPLETE:';
2262    END IF;
2263 
2264    result := l_resultout;
2265    RETURN;
2266    --
2267 EXCEPTION
2268    WHEN FND_API.G_EXC_ERROR THEN
2269       FND_MSG_PUB.Count_And_Get (
2270           p_encoded => FND_API.G_FALSE,
2271           p_count => l_msg_count,
2272           p_data  => l_msg_data
2273       );
2274       Handle_Error(
2275           p_itemtype     => itemtype
2276          ,p_itemkey      => itemkey
2277          ,p_msg_count    => l_msg_count
2278          ,p_msg_data     => l_msg_data
2279          ,p_process_name => l_api_name
2280          ,x_error_msg    => l_error_msg
2281       );
2282       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2283       RAISE;
2284    WHEN OTHERS THEN
2285       IF OZF_UNEXP_ERROR THEN
2286          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2287       END IF;
2288       FND_MSG_PUB.Count_And_Get (
2289           p_encoded => FND_API.G_FALSE,
2290           p_count => l_msg_count,
2291           p_data  => l_msg_data
2292       );
2293       Handle_Error(
2294           p_itemtype     => itemtype
2295          ,p_itemkey      => itemkey
2296          ,p_msg_count    => l_msg_count
2297          ,p_msg_data     => l_msg_data
2298          ,p_process_name => l_api_name
2299          ,x_error_msg    => l_error_msg
2300       );
2301       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2302       RAISE;
2303 END Reset_Status;
2304 
2305 ---------------------------------------------------------------------
2306 -- PROCEDURE
2307 --    Set_Batch_Status
2308 --
2309 -- PURPOSE
2310 --    This procedure is to set the status of a batch
2311 --
2312 -- PARAMETERS
2313 --
2314 --
2315 -- NOTES
2316 ---------------------------------------------------------------------
2317 PROCEDURE Set_Batch_Status (
2318    itemtype    IN     VARCHAR2,
2319    itemkey     IN     VARCHAR2,
2320    actid       IN     NUMBER,
2321    funcmode    IN     VARCHAR2,
2322    resultout  in OUT NOCOPY varchar2
2323 )IS
2324 l_api_name          CONSTANT VARCHAR2(30) := 'Set_Batch_Status';
2325 l_api_version       CONSTANT NUMBER := 1.0;
2326 l_full_name         CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
2327 --
2328 l_return_status     varchar2(30);
2329 l_msg_data          varchar2(2000);
2330 l_msg_count         number;
2331 --
2332 l_resale_batch_id NUMBER;
2333 l_batch_status        varchar2(30);
2334 l_batch_next_status        varchar2(30);
2335 l_lines_disputed      number;
2336 l_resultout           VARCHAR2(30);
2337 l_error_msg           VARCHAR2(4000);
2338 
2339 l_last_updated_by      NUMBER;
2340 l_emp_id               NUMBER;
2341 l_user_name            VARCHAR2(100);
2342 l_display_name         VARCHAR2(100);
2343 --
2344 CURSOR batch_status_csr(p_id number) IS
2345 SELECT last_updated_by
2346 ,      status_code
2347  --FROM  ozf_resale_batches
2348  FROM  ozf_resale_batches_all
2349  WHERE resale_batch_id = p_id;
2350 
2351 CURSOR emp_infor_csr(p_res_id NUMBER) IS
2352 -- BUBG 4953233 (+)
2353   SELECT  ppl.person_id
2354   FROM jtf_rs_resource_extns rsc
2355      , per_people_f ppl
2356   WHERE rsc.category = 'EMPLOYEE'
2357   AND ppl.person_id = rsc.source_id
2358   AND rsc.resource_id=p_res_id;
2359   -- SELECT employee_id
2360   -- FROM jtf_rs_res_emp_vl
2361   -- WHERE resource_id = p_res_id ;
2362 -- BUBG 4953233 (-)
2363 
2364 l_batch_org_id               NUMBER;
2365 
2366 --//Bugfix : 10431933
2367 l_resp_id    NUMBER;
2368 l_user_id    NUMBER;
2369 l_wf_user_id NUMBER;
2370 
2371 CURSOR wf_values_csr(p_item_type VARCHAR2,
2372                      p_item_key  VARCHAR2,
2373 		     p_name      VARCHAR2) IS
2374    SELECT number_value
2375    FROM    wf_item_attribute_values wiav
2376    WHERE   wiav.item_type = p_item_type
2377    AND     wiav.item_key like p_item_key||'%'
2378    AND     wiav.name      = p_name;
2379 
2380 BEGIN
2381    IF OZF_DEBUG_HIGH_ON THEN
2382       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
2383    END IF;
2384 
2385    -- R12 MOAC Enhancement (+)
2386    l_batch_org_id := WF_ENGINE.GetItemAttrText(
2387                         itemtype  => itemtype,
2388                         itemkey   => itemkey,
2389                         aname     => 'OZF_BATCH_ORG_ID'
2390                      );
2391 
2392 -- nepanda : Fix for Bug 13819601
2393  /*  IF (funcmode = 'TEST_CTX') THEN
2394       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
2395           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
2396          resultout := 'FALSE';
2397       ELSE
2398          resultout := 'TRUE';
2399       END IF;
2400       RETURN;
2401    END IF;
2402 
2403    IF (funcmode = 'SET_CTX') THEN
2404       MO_GLOBAL.set_policy_context(
2405          p_access_mode  => 'S',
2406          p_org_id       => l_batch_org_id
2407       );
2408       --resultout := 'COMPLETE:';
2409       RETURN;
2410    END IF;*/
2411    -- R12 MOAC Enhancement (-)
2412 
2413    IF (funcmode = 'RUN') THEN
2414       l_resale_batch_id := WF_ENGINE.GetItemAttrText(
2415                               itemtype => itemtype,
2416                               itemkey  => itemkey,
2417                               aname    => G_WF_ATTR_BATCH_ID
2418                         );
2419 
2420       --//Bugfix : 10431933
2421       IF OZF_DEBUG_HIGH_ON THEN
2422          OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' l_resale_batch_id : ' || l_resale_batch_id);
2423       END IF;
2424 
2425 
2426        IF SUBSTR(itemkey,1,11) = 'ResaleBatch' THEN
2427 
2428           OPEN wf_values_csr(itemtype,l_resale_batch_id,G_WF_ATTR_USER_ID);
2429 	  FETCH wf_values_csr INTO l_user_id;
2430 	  CLOSE wf_values_csr;
2431 
2432 	  OPEN wf_values_csr(itemtype,l_resale_batch_id,G_WF_ATTR_RESP_ID);
2433 	  FETCH wf_values_csr INTO l_resp_id;
2434 	  CLOSE wf_values_csr;
2435 
2436        ELSE
2437 
2438           l_user_id := WF_ENGINE.GetItemAttrText(
2439                               itemtype => itemtype,
2440                               itemkey  => itemkey,
2441                               aname    => G_WF_ATTR_USER_ID
2442                         );
2443 
2444            l_resp_id := WF_ENGINE.GetItemAttrText(
2445                               itemtype => itemtype,
2446                               itemkey  => itemkey,
2447                               aname    => G_WF_ATTR_RESP_ID
2448                         );
2449 
2450        END IF;
2451        --//End Bugfix : 10431933
2452 
2453       OPEN batch_status_csr(l_resale_batch_id);
2454       FETCH batch_status_csr INTO l_last_updated_by
2455                                 , l_batch_status;
2456       CLOSE batch_status_csr;
2457 
2458 
2459       OPEN emp_infor_csr(OZF_UTILITY_PVT.get_resource_id(l_last_updated_by));
2460       FETCH emp_infor_csr INTO l_emp_id;
2461       CLOSE emp_infor_csr;
2462 
2463        --//Bugfix : 10431933
2464       IF l_user_id = l_last_updated_by THEN
2465          l_wf_user_id := l_user_id;
2466       ELSE
2467          l_wf_user_id := l_last_updated_by;
2468       END IF;
2469 
2470       IF OZF_DEBUG_LOW_ON THEN
2471          OZF_UTILITY_PVT.debug_message('l_user_id :' || l_user_id);
2472          OZF_UTILITY_PVT.debug_message('l_wf_user_id :' || l_wf_user_id);
2473          OZF_UTILITY_PVT.debug_message('l_resp_id :' || l_resp_id);
2474       END IF;
2475 
2476       WF_DIRECTORY.GetRoleName(
2477              p_orig_system      => 'PER',
2478              p_orig_system_id   => l_emp_id ,
2479              p_name             => l_user_name,
2480              p_display_name     => l_display_name
2481       );
2482 
2483       WF_ENGINE.SetItemAttrText(
2484              itemtype           => itemtype,
2485              itemkey            => itemkey ,
2486              aname              => G_WF_ATTR_WF_ADMINISTRATOR,
2487              avalue             => l_user_name
2488       );
2489 
2490       -- set workflow process owner
2491       WF_ENGINE.SetItemOwner(
2492              itemtype           => itemtype,
2493              itemkey            => itemkey,
2494              owner              => l_user_name
2495       );
2496 
2497       --//Bugfix : 10431933
2498       WF_ENGINE.setitemattrnumber(
2499 		itemtype	=> itemtype
2500 	       ,itemkey		=> itemkey
2501 	       ,aname		=> G_WF_ATTR_USER_ID
2502 	       ,avalue		=> l_wf_user_id
2503         );
2504       WF_ENGINE.setitemattrnumber(
2505 		itemtype	=> itemtype
2506 	       ,itemkey		=> itemkey
2507 	       ,aname		=> G_WF_ATTR_RESP_ID
2508 	       ,avalue		=> l_resp_id
2509         );
2510 
2511 	WF_ENGINE.setitemattrnumber(
2512 		  itemtype	=> itemtype
2513 		 ,itemkey	=> itemkey
2514 		 ,aname		=> G_WF_ATTR_APPL_ID
2515 		 ,avalue	=> 682
2516         );
2517       --
2518       IF l_batch_status is null THEN
2519          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_STATUS_NULL');
2520          RAISE FND_API.G_EXC_ERROR;
2521       END IF;
2522 
2523 
2524       IF l_batch_status in (OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSING,
2525                             OZF_RESALE_COMMON_PVT.G_BATCH_PENDING_PAYMENT) THEN
2526          l_batch_next_status := l_batch_status;
2527       ELSE
2528          IF l_batch_status IN (OZF_RESALE_COMMON_PVT.G_BATCH_OPEN,
2529                                OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED) THEN
2530             l_batch_next_status := OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSING;
2531 
2532             UPDATE ozf_resale_batches_all
2533                SET status_code = l_batch_next_status
2534              WHERE resale_batch_id = l_resale_batch_id;
2535 
2536          ELSE
2537             OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_STATUS_ERR');
2538             RAISE FND_API.G_EXC_ERROR;
2539          END IF;
2540       END IF;
2541 
2542 
2543       l_resultout := 'COMPLETE:' || l_batch_next_status;
2544       --
2545    END IF;
2546 
2547    --  CANCEL mode  - Normal Process Execution
2548    IF (funcmode = 'CANCEL') THEN
2549      l_resultout := 'COMPLETE:';
2550    END IF;
2551 
2552    --  TIMEOUT mode  - Normal Process Execution
2553    IF (funcmode = 'TIMEOUT') THEN
2554       l_resultout := 'COMPLETE:';
2555    END IF;
2556 
2557    resultout := l_resultout;
2558    RETURN;
2559    --
2560 EXCEPTION
2561    WHEN FND_API.G_EXC_ERROR THEN
2562       FND_MSG_PUB.Count_And_Get (
2563           p_encoded => FND_API.G_FALSE,
2564           p_count => l_msg_count,
2565           p_data  => l_msg_data
2566       );
2567       Handle_Error(
2568           p_itemtype     => itemtype
2569          ,p_itemkey      => itemkey
2570          ,p_msg_count    => l_msg_count
2571          ,p_msg_data     => l_msg_data
2572          ,p_process_name => l_api_name
2573          ,x_error_msg    => l_error_msg
2574       );
2575       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2576       RAISE;
2577    WHEN OTHERS THEN
2578       IF OZF_UNEXP_ERROR THEN
2579          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2580       END IF;
2581       FND_MSG_PUB.Count_And_Get (
2582           p_encoded => FND_API.G_FALSE,
2583           p_count => l_msg_count,
2584           p_data  => l_msg_data
2585       );
2586       Handle_Error(
2587           p_itemtype     => itemtype
2588          ,p_itemkey      => itemkey
2589          ,p_msg_count    => l_msg_count
2590          ,p_msg_data     => l_msg_data
2591          ,p_process_name => l_api_name
2592          ,x_error_msg    => l_error_msg
2593       );
2594       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2595       RAISE;
2596 END Set_Batch_Status;
2597 
2598 ---------------------------------------------------------------------
2599 -- PROCEDURE
2600 --    Set_Payment_Pending
2601 --
2602 -- PURPOSE
2603 --    This procedure set the batch status to Payment_Pending
2604 --
2605 -- PARAMETERS
2606 --
2607 --
2608 -- NOTES
2609 ---------------------------------------------------------------------
2610 PROCEDURE Set_Payment_Pending(
2611    itemtype   in varchar2,
2612    itemkey    in varchar2,
2613    actid      in number,
2614    funcmode   in varchar2,
2615    resultout  in OUT NOCOPY varchar2 )
2616 IS
2617 l_api_name          CONSTANT VARCHAR2(30) := 'Set_Payment_Pending';
2618 l_api_version       CONSTANT NUMBER := 1.0;
2619 l_full_name         CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
2620 --
2621 l_return_status     varchar2(30);
2622 l_msg_data          varchar2(2000);
2623 l_msg_count         number;
2624 --
2625 l_resale_batch_id NUMBER;
2626 l_resultout           VARCHAR2(30);
2627 l_error_msg           VARCHAR2(4000);
2628 
2629 l_batch_org_id               NUMBER;
2630 BEGIN
2631    IF OZF_DEBUG_HIGH_ON THEN
2632       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
2633    END IF;
2634 
2635    -- R12 MOAC Enhancement (+)
2636    l_batch_org_id := WF_ENGINE.GetItemAttrText(
2637                         itemtype  => itemtype,
2638                         itemkey   => itemkey,
2639                         aname     => 'OZF_BATCH_ORG_ID'
2640                      );
2641 
2642 -- nepanda : Fix for Bug 13819601
2643 /*   IF (funcmode = 'TEST_CTX') THEN
2644       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
2645           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
2646          resultout := 'FALSE';
2647       ELSE
2648          resultout := 'TRUE';
2649       END IF;
2650       RETURN;
2651    END IF;
2652 
2653    IF (funcmode = 'SET_CTX') THEN
2654       MO_GLOBAL.set_policy_context(
2655          p_access_mode  => 'S',
2656          p_org_id       => l_batch_org_id
2657       );
2658       --resultout := 'COMPLETE:';
2659       RETURN;
2660    END IF;*/
2661    -- R12 MOAC Enhancement (-)
2662 
2663    IF (funcmode = 'RUN') THEN
2664       --
2665       l_resale_batch_id := WF_ENGINE.GetItemAttrText(
2666                               itemtype => itemtype,
2667                               itemkey  => itemkey,
2668                               aname    => G_WF_ATTR_BATCH_ID);
2669 
2670       UPDATE ozf_resale_batches_all
2671       SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_PENDING_PAYMENT
2672       WHERE resale_batch_id = l_resale_batch_id;
2673 
2674       l_resultout := 'COMPLETE';
2675       --
2676    END IF;
2677 
2678    --  CANCEL mode  - Normal Process Execution
2679    IF (funcmode = 'CANCEL') THEN
2680      l_resultout := 'COMPLETE:';
2681    END IF;
2682 
2683    --  TIMEOUT mode  - Normal Process Execution
2684    IF (funcmode = 'TIMEOUT') THEN
2685       l_resultout := 'COMPLETE:';
2686    END IF;
2687 
2688    resultout := l_resultout;
2689    RETURN;
2690    --
2691 EXCEPTION
2692    WHEN FND_API.G_EXC_ERROR THEN
2693       FND_MSG_PUB.Count_And_Get (
2694           p_encoded => FND_API.G_FALSE,
2695           p_count => l_msg_count,
2696           p_data  => l_msg_data
2697       );
2698       Handle_Error(
2699           p_itemtype     => itemtype
2700          ,p_itemkey      => itemkey
2701          ,p_msg_count    => l_msg_count
2702          ,p_msg_data     => l_msg_data
2703          ,p_process_name => l_api_name
2704          ,x_error_msg    => l_error_msg
2705       );
2706       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2707       RAISE;
2708    WHEN OTHERS THEN
2709       IF OZF_UNEXP_ERROR THEN
2710          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2711       END IF;
2712       FND_MSG_PUB.Count_And_Get (
2713           p_encoded => FND_API.G_FALSE,
2714           p_count => l_msg_count,
2715           p_data  => l_msg_data
2716       );
2717       Handle_Error(
2718           p_itemtype     => itemtype
2719          ,p_itemkey      => itemkey
2720          ,p_msg_count    => l_msg_count
2721          ,p_msg_data     => l_msg_data
2722          ,p_process_name => l_api_name
2723          ,x_error_msg    => l_error_msg
2724       );
2725       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2726       RAISE;
2727 END Set_Payment_Pending;
2728 
2729 ---------------------------------------------------------------------
2730 -- PROCEDURE
2731 --    Set_Tolerance_Level
2732 --
2733 -- PURPOSE
2734 --    This procedure set the batch status
2735 --
2736 -- PARAMETERS
2737 --
2738 --
2739 -- NOTES
2740 ---------------------------------------------------------------------
2741 PROCEDURE Set_Tolerance_Level(
2742    itemtype   in varchar2,
2743    itemkey    in varchar2,
2744    actid      in number,
2745    funcmode   in varchar2,
2746    resultout  in OUT NOCOPY varchar2 )
2747 IS
2748 l_api_name          CONSTANT VARCHAR2(30) := 'Set_Tolerance_Level';
2749 l_api_version       CONSTANT NUMBER := 1.0;
2750 l_full_name         CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
2751 --
2752 l_return_status     varchar2(30);
2753 l_msg_data          varchar2(2000);
2754 l_msg_count         number;
2755 --
2756 l_resale_batch_id NUMBER;
2757 l_resultout           VARCHAR2(30);
2758 l_error_msg           VARCHAR2(4000);
2759 --
2760 l_header_tolerance_operand   NUMBER;
2761 l_header_tolerance_calc_code VARCHAR2(30);
2762 
2763 l_line_tolerance_operand     NUMBER;
2764 l_line_tolerance_calc_code   VARCHAR2(30);
2765 
2766 l_creation_date   DATE;
2767 l_last_update_date DATE;
2768 l_partner_party_id       NUMBER;
2769 l_partner_cust_account_id  NUMBER;
2770 
2771 CURSOR batch_info_csr (p_batch_id NUMBER) IS
2772 SELECT creation_date,
2773        last_update_date,
2774        partner_party_id,
2775        partner_cust_account_id
2776 --FROM ozf_resale_batches
2777 FROM ozf_resale_batches_all
2778 WHERE resale_batch_id = p_batch_id;
2779 
2780 CURSOR header_tolerance_sys_csr IS
2781 SELECT header_tolerance_operand,
2782        header_tolerance_calc_code
2783 FROM ozf_sys_parameters;
2784 
2785 CURSOR header_tolerance_account_csr (p_cust_account_id NUMBER)IS
2786 SELECT header_tolerance_operand,
2787        header_tolerance_calc_code
2788 FROM ozf_cust_trd_prfls
2789 WHERE cust_account_id = p_cust_account_id;
2790 
2791 CURSOR header_tolerance_party_csr (p_party_id NUMBER)IS
2792 SELECT header_tolerance_operand,
2793        header_tolerance_calc_code
2794 FROM ozf_cust_trd_prfls
2795 WHERE party_id = p_party_id
2796 and  cust_account_id IS NULL;
2797 
2798 CURSOR line_tolerance_sys_csr IS
2799 SELECT line_tolerance_operand,
2800        line_tolerance_calc_code
2801 FROM ozf_sys_parameters;
2802 
2803 CURSOR line_tolerance_account_csr (p_cust_account_id NUMBER)IS
2804 SELECT line_tolerance_operand,
2805        line_tolerance_calc_code
2806 FROM ozf_cust_trd_prfls
2807 WHERE cust_account_id = p_cust_account_id;
2808 
2809 CURSOR line_tolerance_party_csr (p_party_id NUMBER)IS
2810 SELECT line_tolerance_operand,
2811        line_tolerance_calc_code
2812 FROM ozf_cust_trd_prfls
2813 WHERE party_id = p_party_id
2814 AND   cust_account_id IS NULL;
2815 
2816 l_batch_org_id               NUMBER;
2817 
2818 BEGIN
2819    IF OZF_DEBUG_HIGH_ON THEN
2820       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
2821    END IF;
2822 
2823    -- R12 MOAC Enhancement (+)
2824    l_batch_org_id := WF_ENGINE.GetItemAttrText(
2825                         itemtype  => itemtype,
2826                         itemkey   => itemkey,
2827                         aname     => 'OZF_BATCH_ORG_ID'
2828                      );
2829 
2830 -- nepanda : Fix for Bug 13819601
2831 /*   IF (funcmode = 'TEST_CTX') THEN
2832       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
2833           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
2834          resultout := 'FALSE';
2835       ELSE
2836          resultout := 'TRUE';
2837       END IF;
2838       RETURN;
2839    END IF;
2840 
2841    IF (funcmode = 'SET_CTX') THEN
2842       MO_GLOBAL.set_policy_context(
2843          p_access_mode  => 'S',
2844          p_org_id       => l_batch_org_id
2845       );
2846       --resultout := 'COMPLETE:';
2847       RETURN;
2848    END IF; */
2849    -- R12 MOAC Enhancement (-)
2850 
2851    IF (funcmode = 'RUN') THEN
2852       --
2853       l_resale_batch_id := WF_ENGINE.GetItemAttrText(
2854                               itemtype => itemtype,
2855                               itemkey  => itemkey,
2856                               aname    => G_WF_ATTR_BATCH_ID);
2857 
2858       OPEN batch_info_csr (l_resale_batch_id);
2859       FETCH batch_info_csr INTO  l_creation_date,
2860                                  l_last_update_date,
2861                                  l_partner_party_id,
2862                                  l_partner_cust_account_id;
2863       CLOSE batch_info_csr;
2864 
2865       IF l_creation_date = l_last_update_date THEN
2866          -- It is the first time this batch is processed. default toleracne
2867 
2868          -- Set header tolerance
2869          OPEN  header_tolerance_account_csr(l_partner_cust_account_id);
2870          FETCH header_tolerance_account_csr into l_header_tolerance_operand,
2871                                                       l_header_tolerance_calc_code;
2872          CLOSE header_tolerance_account_csr;
2873 
2874          IF l_header_tolerance_calc_code is NULL THEN
2875             OPEN  header_tolerance_party_csr(l_partner_party_id);
2876             FETCH header_tolerance_party_csr into l_header_tolerance_operand,
2877                                                  l_header_tolerance_calc_code;
2878             CLOSE header_tolerance_party_csr;
2879 
2880             IF l_header_tolerance_calc_code is NULL THEN
2881                OPEN  header_tolerance_sys_csr;
2882                FETCH header_tolerance_sys_csr into l_header_tolerance_operand,
2883                                                    l_header_tolerance_calc_code;
2884                CLOSE header_tolerance_sys_csr;
2885             END IF;
2886          END IF;
2887 
2888          -- Set line tolerance
2889          OPEN  line_tolerance_account_csr(l_partner_cust_account_id);
2890          FETCH line_tolerance_account_csr into l_line_tolerance_operand,
2891                                                     l_line_tolerance_calc_code;
2892          CLOSE line_tolerance_account_csr;
2893 
2894          IF l_line_tolerance_calc_code is NULL THEN
2895             OPEN  line_tolerance_party_csr(l_partner_party_id);
2896             FETCH line_tolerance_party_csr into l_line_tolerance_operand,
2897                                                 l_line_tolerance_calc_code;
2898             CLOSE line_tolerance_party_csr;
2899 
2900             IF l_line_tolerance_calc_code is NULL THEN
2901                OPEN  line_tolerance_sys_csr;
2902                FETCH line_tolerance_sys_csr into l_line_tolerance_operand,
2903                                                  l_line_tolerance_calc_code;
2904                CLOSE line_tolerance_sys_csr;
2905             END IF;
2906          END IF;
2907 
2908       END IF;
2909 
2910       UPDATE ozf_resale_batches_all
2911       SET   header_tolerance_operand = l_header_tolerance_operand,
2912             header_tolerance_calc_code = l_header_tolerance_calc_code,
2913             line_tolerance_operand  = l_line_tolerance_operand,
2914             line_tolerance_calc_code = l_line_tolerance_calc_code
2915       WHERE resale_batch_id = l_resale_batch_id;
2916 
2917       l_resultout := 'COMPLETE';
2918       --
2919    END IF;
2920 
2921    --  CANCEL mode  - Normal Process Execution
2922    IF (funcmode = 'CANCEL') THEN
2923      l_resultout := 'COMPLETE';
2924    END IF;
2925 
2926    --  TIMEOUT mode  - Normal Process Execution
2927    IF (funcmode = 'TIMEOUT') THEN
2928       l_resultout := 'COMPLETE';
2929    END IF;
2930 
2931    resultout := l_resultout;
2932    RETURN;
2933    --
2934 EXCEPTION
2935    WHEN FND_API.G_EXC_ERROR THEN
2936       FND_MSG_PUB.Count_And_Get (
2937           p_encoded => FND_API.G_FALSE,
2938           p_count => l_msg_count,
2939           p_data  => l_msg_data
2940       );
2941       Handle_Error(
2942           p_itemtype     => itemtype
2943          ,p_itemkey      => itemkey
2944          ,p_msg_count    => l_msg_count
2945          ,p_msg_data     => l_msg_data
2946          ,p_process_name => l_api_name
2947          ,x_error_msg    => l_error_msg
2948       );
2949       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2950       RAISE;
2951    WHEN OTHERS THEN
2952       IF OZF_UNEXP_ERROR THEN
2953          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2954       END IF;
2955       FND_MSG_PUB.Count_And_Get (
2956           p_encoded => FND_API.G_FALSE,
2957           p_count => l_msg_count,
2958           p_data  => l_msg_data
2959       );
2960       Handle_Error(
2961           p_itemtype     => itemtype
2962          ,p_itemkey      => itemkey
2963          ,p_msg_count    => l_msg_count
2964          ,p_msg_data     => l_msg_data
2965          ,p_process_name => l_api_name
2966          ,x_error_msg    => l_error_msg
2967       );
2968       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
2969       RAISE;
2970 END Set_Tolerance_Level;
2971 
2972 
2973 ---------------------------------------------------------------------
2974 -- PROCEDURE
2975 --    Validate_Batch
2976 --
2977 -- PURPOSE
2978 --    This procedure validates the batch details
2979 --
2980 -- PARAMETERS
2981 --
2982 --
2983 -- NOTES
2984 ---------------------------------------------------------------------
2985 PROCEDURE Validate_Batch (
2986    itemtype   IN varchar2,
2987    itemkey    IN varchar2,
2988    actid      IN number,
2989    funcmode   IN varchar2,
2990    resultout  IN OUT NOCOPY varchar2
2991 )
2992 IS
2993    l_api_name            CONSTANT VARCHAR2(30) := 'Validate_Batch';
2994    l_api_version_number  CONSTANT NUMBER   := 1.0;
2995 
2996    l_resultout                    VARCHAR2(30);
2997    l_batch_status                 VARCHAR2(30);
2998    l_batch_id                     NUMBER;
2999    l_return_status                VARCHAR2(1);
3000    l_msg_count                    NUMBER;
3001    l_msg_data                     VARCHAR2(2000);
3002    l_error_msg                    VARCHAR2(4000);
3003 
3004 l_batch_org_id               NUMBER;
3005 
3006 BEGIN
3007    IF OZF_DEBUG_HIGH_ON THEN
3008       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
3009    END IF;
3010 
3011    -- R12 MOAC Enhancement (+)
3012    l_batch_org_id := WF_ENGINE.GetItemAttrText(
3013                         itemtype  => itemtype,
3014                         itemkey   => itemkey,
3015                         aname     => 'OZF_BATCH_ORG_ID'
3016                      );
3017 
3018 -- nepanda : Fix for Bug 13819601
3019  /*  IF (funcmode = 'TEST_CTX') THEN
3020       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
3021           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
3022          resultout := 'FALSE';
3023       ELSE
3024          resultout := 'TRUE';
3025       END IF;
3026       RETURN;
3027    END IF;
3028 
3029    IF (funcmode = 'SET_CTX') THEN
3030       MO_GLOBAL.set_policy_context(
3031          p_access_mode  => 'S',
3032          p_org_id       => l_batch_org_id
3033       );
3034       --resultout := 'COMPLETE:';
3035       RETURN;
3036    END IF;*/
3037    -- R12 MOAC Enhancement (-)
3038 
3039    IF (funcmode = 'RUN') THEN
3040    --
3041       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype => itemtype,
3042                                               itemkey  => itemkey,
3043                                               aname    => G_WF_ATTR_BATCH_ID);
3044 
3045       IF OZF_DEBUG_LOW_ON THEN
3046          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
3047       END IF;
3048       IF l_batch_id IS NOT NULL THEN
3049          OZF_RESALE_COMMON_PVT.Validate_Batch (
3050             p_api_version         => 1.0,
3051             p_init_msg_list       => FND_API.G_FALSE,
3052             p_commit              => FND_API.G_FALSE,
3053             p_validation_level    => FND_API.G_VALID_LEVEL_FULL,
3054             p_resale_batch_id     => l_batch_id,
3055             x_batch_status        => l_batch_status,
3056             x_return_status       => l_return_status,
3057             x_msg_count           => l_msg_count,
3058             x_msg_data            => l_msg_data );
3059 
3060          IF OZF_DEBUG_LOW_ON THEN
3061             OZF_UTILITY_PVT.debug_message('Validate Batch is complete '||l_return_status);
3062          END IF;
3063          IF l_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
3064             RAISE FND_API.G_EXC_ERROR;
3065          END IF;
3066          l_resultout := 'COMPLETE:SUCCESS';
3067       ELSE
3068          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
3069          RAISE FND_API.G_EXC_ERROR;
3070       END IF;
3071       l_resultout := 'COMPLETE:SUCCESS';
3072    --
3073    ELSIF (funcmode = 'CANCEL') THEN
3074       l_resultout := 'COMPLETE:SUCCESS';
3075    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
3076       l_resultout := 'COMPLETE:SUCCESS';
3077    ELSIF (funcmode = 'TIMEOUT') THEN
3078       l_resultout := 'COMPLETE:SUCCESS';
3079    END IF;
3080 
3081    resultout := l_resultout;
3082 
3083 EXCEPTION
3084    WHEN FND_API.G_EXC_ERROR THEN
3085       FND_MSG_PUB.Count_And_Get (
3086           p_encoded => FND_API.G_FALSE,
3087           p_count => l_msg_count,
3088           p_data  => l_msg_data
3089       );
3090       Handle_Error(
3091           p_itemtype     => itemtype
3092          ,p_itemkey      => itemkey
3093          ,p_msg_count    => l_msg_count
3094          ,p_msg_data     => l_msg_data
3095          ,p_process_name => l_api_name
3096          ,x_error_msg    => l_error_msg
3097       );
3098       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3099       resultout := 'COMPLETE:ERROR';
3100       RETURN;
3101    WHEN OTHERS THEN
3102       IF OZF_UNEXP_ERROR THEN
3103          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3104       END IF;
3105       FND_MSG_PUB.Count_And_Get (
3106           p_encoded => FND_API.G_FALSE,
3107           p_count => l_msg_count,
3108           p_data  => l_msg_data
3109       );
3110       Handle_Error(
3111           p_itemtype     => itemtype
3112          ,p_itemkey      => itemkey
3113          ,p_msg_count    => l_msg_count
3114          ,p_msg_data     => l_msg_data
3115          ,p_process_name => l_api_name
3116          ,x_error_msg    => l_error_msg
3117       );
3118       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3119       RAISE;
3120 END Validate_Batch;
3121 
3122 ---------------------------------------------------------------------
3123 -- PROCEDURE
3124 --    Validate_Order
3125 --
3126 -- PURPOSE
3127 --    This procedure contains order level validations
3128 --
3129 -- PARAMETERS
3130 --
3131 --
3132 -- NOTES
3133 ---------------------------------------------------------------------
3134 PROCEDURE Validate_Order (
3135    itemtype   IN varchar2,
3136    itemkey    IN varchar2,
3137    actid      IN number,
3138    funcmode   IN varchar2,
3139    resultout  IN OUT NOCOPY varchar2
3140 )
3141 IS
3142    l_api_name            CONSTANT VARCHAR2(30) := 'Validate_Order';
3143    l_api_version_number  CONSTANT NUMBER   := 1.0;
3144 
3145    l_resultout                    VARCHAR2(30);
3146    l_batch_id                     NUMBER;
3147    l_return_status                VARCHAR2(1);
3148    l_msg_count                    NUMBER;
3149    l_msg_data                     VARCHAR2(2000);
3150    l_error_msg                    VARCHAR2(4000);
3151 
3152 l_batch_org_id               NUMBER;
3153 BEGIN
3154    IF OZF_DEBUG_HIGH_ON THEN
3155       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
3156    END IF;
3157 
3158    -- R12 MOAC Enhancement (+)
3159    l_batch_org_id := WF_ENGINE.GetItemAttrText(
3160                         itemtype  => itemtype,
3161                         itemkey   => itemkey,
3162                         aname     => 'OZF_BATCH_ORG_ID'
3163                      );
3164 -- nepanda : Fix for Bug 13819601
3165 /*   IF (funcmode = 'TEST_CTX') THEN
3166       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
3167           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
3168          resultout := 'FALSE';
3169       ELSE
3170          resultout := 'TRUE';
3171       END IF;
3172       RETURN;
3173    END IF;
3174 
3175    IF (funcmode = 'SET_CTX') THEN
3176       MO_GLOBAL.set_policy_context(
3177          p_access_mode  => 'S',
3178          p_org_id       => l_batch_org_id
3179       );
3180       --resultout := 'COMPLETE:';
3181       RETURN;
3182    END IF;*/
3183    -- R12 MOAC Enhancement (-)
3184 
3185    IF (funcmode = 'RUN') THEN
3186       --
3187       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype   => itemtype,
3188                                               itemkey  => itemkey,
3189                                               aname    => G_WF_ATTR_BATCH_ID);
3190 
3191       IF OZF_DEBUG_LOW_ON THEN
3192          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
3193       END IF;
3194       IF l_batch_id IS NOT NULL THEN
3195          -- Verify the line information for this batch
3196          OZF_RESALE_COMMON_PVT.Validate_Order_Record (
3197              p_api_version        => 1.0
3198             ,p_init_msg_list      => FND_API.G_FALSE
3199             ,p_commit             => FND_API.G_FALSE
3200             ,p_validation_level   => FND_API.G_VALID_LEVEL_FULL
3201             ,p_resale_batch_id    => l_batch_id
3202             ,x_return_status      => l_return_status
3203             ,x_msg_data           => l_msg_data
3204             ,x_msg_count          => l_msg_count
3205             );
3206          IF l_return_status<> FND_API.G_RET_STS_SUCCESS THEN
3207             OZF_UTILITY_PVT.error_message('OZF_RESALE_VALIDATE_ERR');
3208             RAISE FND_API.G_EXC_ERROR;
3209          END IF;
3210       ELSE
3211          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
3212          RAISE FND_API.G_EXC_ERROR;
3213       END IF;
3214 
3215       l_resultout := 'COMPLETE:SUCCESS';
3216       --
3217    ELSIF (funcmode = 'CANCEL') THEN
3218       l_resultout := 'COMPLETE:SUCCESS';
3219    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
3220       l_resultout := 'COMPLETE:SUCCESS';
3221    ELSIF (funcmode = 'TIMEOUT') THEN
3222       l_resultout := 'COMPLETE:SUCCESS';
3223    END IF;
3224 
3225    resultout := l_resultout;
3226 
3227 EXCEPTION
3228    WHEN FND_API.G_EXC_ERROR THEN
3229       FND_MSG_PUB.Count_And_Get (
3230           p_encoded => FND_API.G_FALSE,
3231           p_count => l_msg_count,
3232           p_data  => l_msg_data
3233       );
3234       Handle_Error(
3235           p_itemtype     => itemtype
3236          ,p_itemkey      => itemkey
3237          ,p_msg_count    => l_msg_count
3238          ,p_msg_data     => l_msg_data
3239          ,p_process_name => l_api_name
3240          ,x_error_msg    => l_error_msg
3241       );
3242       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3243       resultout := 'COMPLETE:ERROR';
3244       RETURN;
3245    WHEN OTHERS THEN
3246       IF OZF_UNEXP_ERROR THEN
3247          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3248       END IF;
3249       FND_MSG_PUB.Count_And_Get (
3250           p_encoded => FND_API.G_FALSE,
3251           p_count => l_msg_count,
3252           p_data  => l_msg_data
3253       );
3254       Handle_Error(
3255           p_itemtype     => itemtype
3256          ,p_itemkey      => itemkey
3257          ,p_msg_count    => l_msg_count
3258          ,p_msg_data     => l_msg_data
3259          ,p_process_name => l_api_name
3260          ,x_error_msg    => l_error_msg
3261       );
3262       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3263       RAISE;
3264 END Validate_Order;
3265 
3266 ---------------------------------------------------------------------
3267 -- PROCEDURE
3268 --    Validate_Chargeback
3269 --
3270 -- PURPOSE
3271 --    This procedure contains chargeback validations
3272 --
3273 -- PARAMETERS
3274 --
3275 --
3276 -- NOTES
3277 ---------------------------------------------------------------------
3278 PROCEDURE Validate_Chargeback
3279 (
3280    itemtype   IN varchar2,
3281    itemkey    IN varchar2,
3282    actid      IN number,
3283    funcmode   IN varchar2,
3284    resultout  IN OUT NOCOPY varchar2
3285 )
3286 IS
3287    l_api_name            CONSTANT VARCHAR2(30) := 'Validate_Chargeback';
3288    l_api_version_number  CONSTANT NUMBER   := 1.0;
3289 
3290    l_resultout           VARCHAR2(30);
3291    l_batch_id            NUMBER;
3292    l_return_status       VARCHAR2(1);
3293    l_msg_count           NUMBER;
3294    l_msg_data            VARCHAR2(2000);
3295    l_error_msg           VARCHAR2(4000);
3296 
3297 l_batch_org_id               NUMBER;
3298 
3299 BEGIN
3300    IF OZF_DEBUG_HIGH_ON THEN
3301       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
3302    END IF;
3303 
3304    -- R12 MOAC Enhancement (+)
3305    l_batch_org_id := WF_ENGINE.GetItemAttrText(
3306                         itemtype  => itemtype,
3307                         itemkey   => itemkey,
3308                         aname     => 'OZF_BATCH_ORG_ID'
3309                      );
3310 
3311 -- nepanda : Fix for Bug 13819601
3312  /*  IF (funcmode = 'TEST_CTX') THEN
3313       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
3314           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
3315          resultout := 'FALSE';
3316       ELSE
3317          resultout := 'TRUE';
3318       END IF;
3319       RETURN;
3320    END IF;
3321 
3322    IF (funcmode = 'SET_CTX') THEN
3323       MO_GLOBAL.set_policy_context(
3324          p_access_mode  => 'S',
3325          p_org_id       => l_batch_org_id
3326       );
3327       --resultout := 'COMPLETE:';
3328       RETURN;
3329    END IF;*/
3330    -- R12 MOAC Enhancement (-)
3331 
3332    IF (funcmode = 'RUN') THEN
3333       --
3334       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype   => itemtype,
3335                                               itemkey  => itemkey,
3336                                               aname    => G_WF_ATTR_BATCH_ID);
3337       IF OZF_DEBUG_LOW_ON THEN
3338          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
3339       END IF;
3340 
3341       IF l_batch_id IS NOT NULL THEN
3342          -- Verify the line information for this batch
3343          OZF_CHARGEBACK_PVT.Validate_Order_Record (
3344              p_api_version        => 1
3345             ,p_init_msg_list      => FND_API.G_FALSE
3346             ,p_commit             => FND_API.G_FALSE
3347             ,p_validation_level   => FND_API.G_VALID_LEVEL_FULL
3348             ,p_resale_batch_id    => l_batch_id
3349             ,x_return_status      => l_return_status
3350             ,x_msg_data           => l_msg_data
3351             ,x_msg_count          => l_msg_count
3352             );
3353          IF l_return_status<> FND_API.G_RET_STS_SUCCESS THEN
3354             OZF_UTILITY_PVT.error_message('OZF_RESALE_CHBK_VALIDATE_ERR');
3355             RAISE FND_API.G_EXC_ERROR;
3356          END IF;
3357       ELSE
3358          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
3359          RAISE FND_API.G_EXC_ERROR;
3360       END IF;
3361       l_resultout := 'COMPLETE:SUCCESS';
3362       --
3363    ELSIF (funcmode = 'CANCEL') THEN
3364         l_resultout := 'COMPLETE:SUCCESS';
3365    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
3366         l_resultout := 'COMPLETE:SUCCESS';
3367    ELSIF (funcmode = 'TIMEOUT') THEN
3368         l_resultout := 'COMPLETE:SUCCESS';
3369    END IF;
3370 
3371    resultout := l_resultout;
3372 
3373 EXCEPTION
3374    WHEN FND_API.G_EXC_ERROR THEN
3375       FND_MSG_PUB.Count_And_Get (
3376           p_encoded => FND_API.G_FALSE,
3377           p_count => l_msg_count,
3378           p_data  => l_msg_data
3379       );
3380       Handle_Error(
3381           p_itemtype     => itemtype
3382          ,p_itemkey      => itemkey
3383          ,p_msg_count    => l_msg_count
3384          ,p_msg_data     => l_msg_data
3385          ,p_process_name => l_api_name
3386          ,x_error_msg    => l_error_msg
3387       );
3388       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3389       l_resultout := 'COMPLETE:ERROR';
3390       RETURN;
3391    WHEN OTHERS THEN
3392       IF OZF_UNEXP_ERROR THEN
3393          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3394       END IF;
3395       FND_MSG_PUB.Count_And_Get (
3396           p_encoded => FND_API.G_FALSE,
3397           p_count => l_msg_count,
3398           p_data  => l_msg_data
3399       );
3400       Handle_Error(
3401           p_itemtype     => itemtype
3402          ,p_itemkey      => itemkey
3403          ,p_msg_count    => l_msg_count
3404          ,p_msg_data     => l_msg_data
3405          ,p_process_name => l_api_name
3406          ,x_error_msg    => l_error_msg
3407       );
3408       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3409       RAISE;
3410 END Validate_Chargeback;
3411 
3412 ---------------------------------------------------------------------
3413 -- PROCEDURE
3414 --    Validate_Special_Pricing
3415 --
3416 -- PURPOSE
3417 --    This procedure contains special pricing validations
3418 --
3419 -- PARAMETERS
3420 --
3421 --
3422 -- NOTES
3423 ---------------------------------------------------------------------
3424 PROCEDURE Validate_Special_Pricing
3425 (
3426    itemtype   IN varchar2,
3427    itemkey    IN varchar2,
3428    actid      IN number,
3429    funcmode   IN varchar2,
3430    resultout  IN OUT NOCOPY varchar2
3431 )
3432 IS
3433    l_api_name            CONSTANT VARCHAR2(30) := 'Validate_Special_Pricing';
3434    l_api_version_number  CONSTANT NUMBER   := 1.0;
3435 
3436    l_resultout           VARCHAR2(30);
3437    l_batch_id            NUMBER;
3438    l_return_status       VARCHAR2(1);
3439    l_msg_count           NUMBER;
3440    l_msg_data            VARCHAR2(2000);
3441    l_error_msg           VARCHAR2(4000);
3442 
3443 l_batch_org_id               NUMBER;
3444 BEGIN
3445    IF OZF_DEBUG_HIGH_ON THEN
3446       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
3447    END IF;
3448 
3449    -- R12 MOAC Enhancement (+)
3450    l_batch_org_id := WF_ENGINE.GetItemAttrText(
3451                         itemtype  => itemtype,
3452                         itemkey   => itemkey,
3453                         aname     => 'OZF_BATCH_ORG_ID'
3454                      );
3455 
3456 -- nepanda : Fix for Bug 13819601
3457  /*  IF (funcmode = 'TEST_CTX') THEN
3458       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
3459           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
3460          resultout := 'FALSE';
3461       ELSE
3462          resultout := 'TRUE';
3463       END IF;
3464       RETURN;
3465    END IF;
3466 
3467    IF (funcmode = 'SET_CTX') THEN
3468       MO_GLOBAL.set_policy_context(
3469          p_access_mode  => 'S',
3470          p_org_id       => l_batch_org_id
3471       );
3472       --resultout := 'COMPLETE:';
3473       RETURN;
3474    END IF;*/
3475    -- R12 MOAC Enhancement (-)
3476 
3477    IF (funcmode = 'RUN') THEN
3478       --
3479       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype   => itemtype,
3480                                               itemkey  => itemkey,
3481                                               aname    => G_WF_ATTR_BATCH_ID);
3482       IF OZF_DEBUG_LOW_ON THEN
3483          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
3484       END IF;
3485 
3486       IF l_batch_id IS NOT NULL THEN
3487          -- Verify the line information for this batch
3488          OZF_SPECIAL_PRICING_PVT.Validate_Order_Record (
3489              p_api_version        => 1
3490             ,p_init_msg_list      => FND_API.G_FALSE
3491             ,p_commit             => FND_API.G_FALSE
3492             ,p_validation_level   => FND_API.G_VALID_LEVEL_FULL
3493             ,p_resale_batch_id    => l_batch_id
3494             ,x_return_status      => l_return_status
3495             ,x_msg_data           => l_msg_data
3496             ,x_msg_count          => l_msg_count
3497             );
3498          IF l_return_status<> FND_API.G_RET_STS_SUCCESS THEN
3499             OZF_UTILITY_PVT.error_message('OZF_RESALE_CHBK_VALIDATE_ERR');
3500             RAISE FND_API.G_EXC_ERROR;
3501          END IF;
3502       ELSE
3503          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
3504          RAISE FND_API.G_EXC_ERROR;
3505       END IF;
3506       l_resultout := 'COMPLETE:SUCCESS';
3507       --
3508    ELSIF (funcmode = 'CANCEL') THEN
3509         l_resultout := 'COMPLETE:SUCCESS';
3510    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
3511         l_resultout := 'COMPLETE:SUCCESS';
3512    ELSIF (funcmode = 'TIMEOUT') THEN
3513         l_resultout := 'COMPLETE:SUCCESS';
3514    END IF;
3515 
3516    resultout := l_resultout;
3517 
3518 EXCEPTION
3519    WHEN FND_API.G_EXC_ERROR THEN
3520       FND_MSG_PUB.Count_And_Get (
3521           p_encoded => FND_API.G_FALSE,
3522           p_count => l_msg_count,
3523           p_data  => l_msg_data
3524       );
3525       Handle_Error(
3526           p_itemtype     => itemtype
3527          ,p_itemkey      => itemkey
3528          ,p_msg_count    => l_msg_count
3529          ,p_msg_data     => l_msg_data
3530          ,p_process_name => l_api_name
3531          ,x_error_msg    => l_error_msg
3532       );
3533       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3534       l_resultout := 'COMPLETE:ERROR';
3535       RETURN;
3536    WHEN OTHERS THEN
3537       IF OZF_UNEXP_ERROR THEN
3538          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3539       END IF;
3540       FND_MSG_PUB.Count_And_Get (
3541           p_encoded => FND_API.G_FALSE,
3542           p_count => l_msg_count,
3543           p_data  => l_msg_data
3544       );
3545       Handle_Error(
3546           p_itemtype     => itemtype
3547          ,p_itemkey      => itemkey
3548          ,p_msg_count    => l_msg_count
3549          ,p_msg_data     => l_msg_data
3550          ,p_process_name => l_api_name
3551          ,x_error_msg    => l_error_msg
3552       );
3553       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3554       RAISE;
3555 END Validate_Special_Pricing;
3556 
3557 ---------------------------------------------------------------------
3558 -- PROCEDURE
3559 --    Validate_Tracing
3560 --
3561 -- PURPOSE
3562 --    This procedure contains tracing data validations
3563 --
3564 -- PARAMETERS
3565 --
3566 --
3567 -- NOTES
3568 ---------------------------------------------------------------------
3569 PROCEDURE Validate_Tracing
3570 (
3571    itemtype   IN varchar2,
3572    itemkey    IN varchar2,
3573    actid      IN number,
3574    funcmode   IN varchar2,
3575    resultout  IN OUT NOCOPY varchar2
3576 )
3577 IS
3578    l_api_name            CONSTANT VARCHAR2(30) := 'Validate_Tracing';
3579    l_api_version_number  CONSTANT NUMBER   := 1.0;
3580 
3581    l_resultout           VARCHAR2(30);
3582    l_batch_id            NUMBER;
3583    l_return_status       VARCHAR2(1);
3584    l_msg_count           NUMBER;
3585    l_msg_data            VARCHAR2(2000);
3586    l_error_msg           VARCHAR2(4000);
3587 
3588 l_batch_org_id               NUMBER;
3589 
3590 BEGIN
3591    IF OZF_DEBUG_HIGH_ON THEN
3592       OZF_UTILITY_PVT.debug_message('IN: ' || l_api_name || ' Funcmode: ' || funcmode);
3593    END IF;
3594 
3595    -- R12 MOAC Enhancement (+)
3596    l_batch_org_id := WF_ENGINE.GetItemAttrText(
3597                         itemtype  => itemtype,
3598                         itemkey   => itemkey,
3599                         aname     => 'OZF_BATCH_ORG_ID'
3600                      );
3601 
3602 -- nepanda : Fix for Bug 13819601
3603 /*   IF (funcmode = 'TEST_CTX') THEN
3604       IF (NVL(MO_GLOBAL.get_access_mode, 'NULL') <> 'S') OR
3605           (NVL(MO_GLOBAL.get_current_org_id, -99) <> l_batch_org_id) THEN
3606          resultout := 'FALSE';
3607       ELSE
3608          resultout := 'TRUE';
3609       END IF;
3610       RETURN;
3611    END IF;
3612 
3613    IF (funcmode = 'SET_CTX') THEN
3614       MO_GLOBAL.set_policy_context(
3615          p_access_mode  => 'S',
3616          p_org_id       => l_batch_org_id
3617       );
3618       --resultout := 'COMPLETE:';
3619       RETURN;
3620    END IF;*/
3621    -- R12 MOAC Enhancement (-)
3622 
3623    IF (funcmode = 'RUN') THEN
3624       --
3625       l_batch_id := WF_ENGINE.GetItemAttrText(itemtype   => itemtype,
3626                                               itemkey  => itemkey,
3627                                               aname    => G_WF_ATTR_BATCH_ID);
3628       IF OZF_DEBUG_LOW_ON THEN
3629          OZF_UTILITY_PVT.debug_message('Batch ID '|| l_batch_id);
3630       END IF;
3631 
3632       IF l_batch_id IS NOT NULL THEN
3633          -- Verify the line information for this batch
3634          OZF_TRACING_ORDER_PVT.Validate_Order_Record (
3635              p_api_version        => 1
3636             ,p_init_msg_list      => FND_API.G_FALSE
3637             ,p_commit             => FND_API.G_FALSE
3638             ,p_validation_level   => FND_API.G_VALID_LEVEL_FULL
3639             ,p_resale_batch_id    => l_batch_id
3640             ,x_return_status      => l_return_status
3641             ,x_msg_data           => l_msg_data
3642             ,x_msg_count          => l_msg_count
3643             );
3644          IF l_return_status<> FND_API.G_RET_STS_SUCCESS THEN
3645             OZF_UTILITY_PVT.error_message('OZF_RESALE_TRAC_VALIDATE_ERR');
3646             RAISE FND_API.G_EXC_ERROR;
3647          END IF;
3648       ELSE
3649          OZF_UTILITY_PVT.error_message('OZF_RESALE_BATCH_ID_NULL');
3650          RAISE FND_API.G_EXC_ERROR;
3651       END IF;
3652       l_resultout := 'COMPLETE:SUCCESS';
3653       --
3654    ELSIF (funcmode = 'CANCEL') THEN
3655         l_resultout := 'COMPLETE:SUCCESS';
3656    ELSIF (funcmode IN ('RESPOND', 'FORWARD', 'TRANSFER')) THEN
3657         l_resultout := 'COMPLETE:SUCCESS';
3658    ELSIF (funcmode = 'TIMEOUT') THEN
3659         l_resultout := 'COMPLETE:SUCCESS';
3660    END IF;
3661 
3662    resultout := l_resultout;
3663 
3664 EXCEPTION
3665    WHEN FND_API.G_EXC_ERROR THEN
3666       FND_MSG_PUB.Count_And_Get (
3667           p_encoded => FND_API.G_FALSE,
3668           p_count => l_msg_count,
3669           p_data  => l_msg_data
3670       );
3671       Handle_Error(
3672           p_itemtype     => itemtype
3673          ,p_itemkey      => itemkey
3674          ,p_msg_count    => l_msg_count
3675          ,p_msg_data     => l_msg_data
3676          ,p_process_name => l_api_name
3677          ,x_error_msg    => l_error_msg
3678       );
3679       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3680       l_resultout := 'COMPLETE:ERROR';
3681       RETURN;
3682    WHEN OTHERS THEN
3683       IF OZF_UNEXP_ERROR THEN
3684          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3685       END IF;
3686       FND_MSG_PUB.Count_And_Get (
3687           p_encoded => FND_API.G_FALSE,
3688           p_count => l_msg_count,
3689           p_data  => l_msg_data
3690       );
3691       Handle_Error(
3692           p_itemtype     => itemtype
3693          ,p_itemkey      => itemkey
3694          ,p_msg_count    => l_msg_count
3695          ,p_msg_data     => l_msg_data
3696          ,p_process_name => l_api_name
3697          ,x_error_msg    => l_error_msg
3698       );
3699       WF_CORE.context( G_PKG_NAME,l_api_name,itemtype,itemkey,actid,l_error_msg);
3700       RAISE;
3701 END Validate_Tracing;
3702 
3703 
3704 PROCEDURE Start_Data_Process(
3705     p_resale_batch_id       IN  NUMBER
3706    ,p_caller_type           IN  VARCHAR2
3707 )
3708 IS
3709 l_api_name          CONSTANT VARCHAR2(30)    := 'Start_Data_Process';
3710 
3711 l_itemtype                   VARCHAR2(8)     := 'OZFRSIFD';
3712 l_process                    VARCHAR2(30)    := 'IFACE_DATA_PROCESS';
3713 l_itemkey                    VARCHAR2(240);
3714 l_itemuserkey                VARCHAR2(240);
3715 
3716 CURSOR get_batch_info(p_resale_batch_id IN NUMBER) IS
3717    SELECT status_code
3718    ,      last_updated_by
3719    ,      batch_type
3720    ,      batch_number
3721    ,      org_id                  -- nepanda : Fix for Bug 13819601
3722    FROM  ozf_resale_batches_all
3723    WHERE resale_batch_id = p_resale_batch_id;
3724 
3725 CURSOR emp_infor_csr(p_res_id NUMBER) IS
3726 -- BUBG 4953233 (+)
3727   SELECT  ppl.person_id
3728   FROM jtf_rs_resource_extns rsc
3729      , per_people_f ppl
3730   WHERE rsc.category = 'EMPLOYEE'
3731   AND ppl.person_id = rsc.source_id
3732   AND rsc.resource_id=p_res_id;
3733   -- SELECT employee_id
3734   -- FROM jtf_rs_res_emp_vl
3735   -- WHERE resource_id = p_res_id ;
3736 -- BUBG 4953233 (-)
3737 
3738 
3739 
3740 l_batch_info                 get_batch_info%ROWTYPE;
3741 l_emp_id                     NUMBER;
3742 l_user_name                  VARCHAR2(100);
3743 l_display_name               VARCHAR2(100);
3744 
3745 -- nepanda : Fix for bug # 12716192
3746 l_parameter_list  WF_PARAMETER_LIST_T;
3747 p_event		VARCHAR2(100)            :=  'oracle.apps.ozf.idsm.WEBADIProcess';
3748 l_user_id_fnd Number ;
3749 l_resp_id_fnd Number ;
3750 l_batch_process_mode VARCHAR2 (6) := 'SYNC' ;
3751 
3752 --//Bugfix : 10431933
3753 l_user_id                  NUMBER;
3754 l_wf_user_id               NUMBER;
3755 l_resp_id                  NUMBER;
3756 l_appl_id                  NUMBER := 682;
3757 
3758 
3759 CURSOR wf_values_csr(p_item_type VARCHAR2,
3760                      p_item_key  VARCHAR2,
3761 		     p_name      VARCHAR2) IS
3762    SELECT number_value
3763    FROM    wf_item_attribute_values wiav
3764    WHERE   wiav.item_type = p_item_type
3765    AND     wiav.item_key like p_item_key||'%'
3766    AND     wiav.name      = p_name;
3767 
3768 BEGIN
3769 -- nepanda : Fix for bug # 12716192
3770 l_user_id_fnd := FND_GLOBAL.user_id;
3771 l_resp_id_fnd := FND_GLOBAL.resp_id;
3772 l_batch_process_mode := NVL(fnd_profile.VALUE ('IDSM_BATCH_PROCESS_MODE'),'SYNC');
3773 
3774    OPEN get_batch_info(p_resale_batch_id);
3775    FETCH get_batch_info INTO l_batch_info;
3776    CLOSE get_batch_info;
3777 
3778    IF l_batch_info.status_code IN ('OPEN', 'DISPUTED') THEN
3779       UPDATE ozf_resale_batches_all
3780       SET status_code = 'PROCESSING'
3781       WHERE resale_batch_id = p_resale_batch_id;
3782    END IF;
3783    --Bugfix: 6510872
3784    --l_itemkey := p_resale_batch_id||'-'||TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
3785    l_itemkey :='IDP-'|| p_resale_batch_id||'-'||TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
3786    l_itemuserkey := l_batch_info.batch_type||'-'||
3787                     l_batch_info.batch_number||'-'||
3788                     TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
3789 
3790 	l_user_id := l_user_id_fnd ;
3791 	l_resp_id := l_resp_id_fnd ;
3792 
3793 	IF l_batch_info.last_updated_by = l_user_id THEN
3794 		l_wf_user_id := l_user_id;
3795 	ELSE
3796 		l_wf_user_id := l_batch_info.last_updated_by;
3797 	END IF;
3798 
3799 	OPEN emp_infor_csr(OZF_UTILITY_PVT.get_resource_id(l_batch_info.last_updated_by));
3800 	FETCH emp_infor_csr INTO l_emp_id;
3801 	CLOSE emp_infor_csr;
3802 
3803 	WF_DIRECTORY.GetRoleName(
3804 	  p_orig_system      => 'PER',
3805 	  p_orig_system_id   => l_emp_id ,
3806 	  p_name             => l_user_name,
3807 	  p_display_name     => l_display_name
3808 	);
3809 
3810 	IF OZF_DEBUG_LOW_ON THEN
3811 	 OZF_UTILITY_PVT.debug_message('l_user_id :' || l_user_id);
3812 	 OZF_UTILITY_PVT.debug_message('l_wf_user_id :' || l_wf_user_id);
3813 	 OZF_UTILITY_PVT.debug_message('l_resp_id :' || l_resp_id);
3814 	 OZF_UTILITY_PVT.debug_message('l_emp_id :' || l_emp_id);
3815 	END IF;
3816 
3817 -- nepanda : Fix for bug # 12716192
3818 -- If value of profile "OZF: IDSM Batch Processing Mode" is set to Synchronous then Batch Process will be done synchronously
3819 
3820 IF l_batch_process_mode = 'SYNC' THEN
3821 
3822    WF_ENGINE.CreateProcess(
3823          itemType   => l_itemtype,
3824          itemKey    => l_itemkey,
3825          process    => l_process
3826    );
3827 
3828    WF_ENGINE.SetItemUserKey(
3829          itemType   => l_itemtype,
3830          itemKey    => l_itemkey,
3831          userKey    => l_itemuserkey
3832    );
3833 
3834    WF_ENGINE.SetItemOwner(
3835           itemtype           => l_itemtype,
3836           itemkey            => l_itemkey,
3837           owner              => l_user_name
3838    );
3839 
3840    WF_ENGINE.SetItemAttrText(
3841           itemtype           => l_itemtype,
3842           itemkey            => l_itemkey ,
3843           aname              => 'OZF_RESALE_BATCH_ID',
3844           avalue             => p_resale_batch_id
3845    );
3846 
3847    WF_ENGINE.SetItemAttrText(
3848           itemtype           => l_itemtype,
3849           itemkey            => l_itemkey ,
3850           aname              => 'WF_ADMINISTRATOR',
3851           avalue             => l_user_name
3852    );
3853 
3854    WF_ENGINE.SetItemAttrText(
3855           itemtype           => l_itemtype,
3856           itemkey            => l_itemkey ,
3857           aname              => 'OZF_RESALE_BATCH_CALLER',
3858           avalue             => p_caller_type
3859    );
3860 
3861    --//Bugfix : 10312826
3862    WF_ENGINE.SetItemAttrNumber(
3863 	  itemtype           => l_itemtype,
3864           itemkey            => l_itemkey ,
3865           aname              => 'OZF_USER_ID',
3866           avalue             => l_wf_user_id
3867    );
3868 
3869    WF_ENGINE.SetItemAttrText(
3870           itemtype           => l_itemtype,
3871           itemkey            => l_itemkey ,
3872           aname              => 'OZF_RESPONSIBILITY_ID',
3873           avalue             => l_resp_id
3874    );
3875 
3876    WF_ENGINE.SetItemAttrText(
3877           itemtype           => l_itemtype,
3878           itemkey            => l_itemkey ,
3879           aname              => 'OZF_APPLICATION_ID',
3880           avalue             => l_appl_id
3881    );
3882 
3883 -- nepanda : Fix for Bug 13819601
3884    WF_ENGINE.SetItemAttrText(
3885           itemtype   => l_itemtype,
3886           itemkey    => l_itemkey ,
3887           aname      => 'OZF_BATCH_ORG_ID',
3888           avalue     => l_batch_info.org_id
3889       );
3890    WF_ENGINE.StartProcess(
3891           itemtype           => l_itemtype,
3892           itemkey            => l_itemkey
3893    );
3894 
3895 ELSE -- IF l_batch_process_mode = 'ASYNC' THEN
3896 -- If value of profile "OZF: IDSM Batch Processing Mode" is set to Asynchronous then Batch Process will be done Asynchronously
3897 
3898    wf_event.AddParameterToList(p_name           => 'OZF_RESALE_BATCH_ID',
3899                                p_value           => p_resale_batch_id,
3900                                p_parameterlist   => l_parameter_list);
3901 
3902 
3903    wf_event.AddParameterToList(p_name           => 'WF_ADMINISTRATOR',
3904                                p_value           => l_user_name,
3905                                p_parameterlist   => l_parameter_list);
3906 
3907 
3908    wf_event.AddParameterToList(p_name           => 'OZF_RESALE_BATCH_CALLER',
3909                               p_value           => p_caller_type,
3910                               p_parameterlist   => l_parameter_list);
3911 
3912    wf_event.AddParameterToList(p_name           => 'OZF_USER_ID',
3913                                     p_value           => l_wf_user_id,
3914                                     p_parameterlist   => l_parameter_list);
3915 
3916    wf_event.AddParameterToList(p_name  => 'OZF_RESPONSIBILITY_ID',
3917                               p_value => l_resp_id,
3918                               p_parameterlist => l_parameter_list);
3919 
3920    wf_event.AddParameterToList(p_name           => 'OZF_APPLICATION_ID',
3921                                     p_value           => l_appl_id,
3922                                     p_parameterlist   => l_parameter_list);
3923 
3924 -- nepanda : Fix for Bug 13819601
3925    wf_event.AddParameterToList(p_name           => 'OZF_BATCH_ORG_ID',
3926                                     p_value           => l_batch_info.org_id,
3927                                     p_parameterlist   => l_parameter_list);
3928 
3929 -- nepanda : Fix for Bug 13819601 commented extra set context
3930 --FND_GLOBAL.APPS_INITIALIZE(l_user_id,l_resp_id, l_appl_id);
3931      WF_EVENT.Raise
3932         ( p_event_name   =>  p_event,
3933           p_event_key    =>  l_itemkey,
3934           p_parameters   =>  l_parameter_list);
3935 
3936 END IF; -- IF l_batch_process_mode = 'SYNC' THEN
3937 
3938 EXCEPTION
3939  WHEN FND_API.G_EXC_ERROR THEN
3940    IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3941     FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
3942     FND_MESSAGE.Set_Token('TEXT',G_PKG_NAME||'.'||l_api_name||': Error');
3943     FND_MSG_PUB.Add;
3944    END IF;
3945    RAISE;
3946  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3947    IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3948     FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
3949     FND_MESSAGE.Set_Token('TEXT',G_PKG_NAME||'.'||l_api_name||': Error');
3950     FND_MSG_PUB.Add;
3951    END IF;
3952    RAISE;
3953  WHEN OTHERS THEN
3954    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3955      FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
3956    END IF;
3957    RAISE;
3958 END Start_Data_Process;
3959 
3960 
3961 PROCEDURE Start_Batch_Payment(
3962     p_resale_batch_id       IN  NUMBER
3963    ,p_caller_type           IN  VARCHAR2
3964 )
3965 IS
3966 l_api_name          CONSTANT VARCHAR2(30)    := 'Start_Batch_Payment';
3967 
3968 l_itemtype                   VARCHAR2(8)     := 'OZFRSIFD';
3969 l_process                    VARCHAR2(30)    := 'PAYMENT_INITIATION_PROCESS';
3970 l_itemkey                    VARCHAR2(240);
3971 l_itemuserkey                VARCHAR2(240);
3972 
3973 CURSOR get_batch_info(p_resale_batch_id IN NUMBER) IS
3974    SELECT status_code
3975    ,      last_updated_by
3976    ,      batch_type
3977    ,      batch_number
3978    ,      org_id                     -- nepanda : Fix for Bug 13819601
3979    FROM  ozf_resale_batches_all
3980    WHERE resale_batch_id = p_resale_batch_id;
3981 
3982 CURSOR emp_infor_csr(p_res_id NUMBER) IS
3983 -- BUBG 4953233 (+)
3984   SELECT  ppl.person_id
3985   FROM jtf_rs_resource_extns rsc
3986      , per_people_f ppl
3987   WHERE rsc.category = 'EMPLOYEE'
3988   AND ppl.person_id = rsc.source_id
3989   AND rsc.resource_id=p_res_id;
3990   -- SELECT employee_id
3991   -- FROM jtf_rs_res_emp_vl
3992   -- WHERE resource_id = p_res_id ;
3993 -- BUBG 4953233 (-)
3994 
3995 l_batch_info                 get_batch_info%ROWTYPE;
3996 l_emp_id                     NUMBER;
3997 l_user_name                  VARCHAR2(100);
3998 l_display_name               VARCHAR2(100);
3999 
4000 l_parameter_list  WF_PARAMETER_LIST_T;
4001 p_event		VARCHAR2(100)            :=  'oracle.apps.ozf.idsm.WEBADIPayment';
4002 
4003 l_user_id                  NUMBER;
4004 l_wf_user_id               NUMBER;
4005 l_resp_id                  NUMBER;
4006 l_appl_id                  NUMBER := 682;
4007 
4008 l_user_id_fnd Number ;
4009 l_resp_id_fnd Number ;
4010 
4011 CURSOR wf_values_csr(p_item_type VARCHAR2,
4012                      p_item_key  VARCHAR2,
4013 		     p_name      VARCHAR2) IS
4014    SELECT number_value
4015    FROM    wf_item_attribute_values wiav
4016    WHERE   wiav.item_type = p_item_type
4017    AND     wiav.item_key like p_item_key||'%'
4018    AND     wiav.name      = p_name;
4019 
4020 BEGIN
4021 
4022 l_user_id_fnd := FND_GLOBAL.user_id;
4023 l_resp_id_fnd := FND_GLOBAL.resp_id;
4024 
4025    OPEN get_batch_info(p_resale_batch_id);
4026    FETCH get_batch_info INTO l_batch_info;
4027    CLOSE get_batch_info;
4028 
4029    IF l_batch_info.status_code IN ('OPEN', 'DISPUTED', 'PROCESSED') THEN
4030       UPDATE ozf_resale_batches_all
4031       SET status_code = 'PENDING_PAYMENT'
4032       WHERE resale_batch_id = p_resale_batch_id;
4033    END IF;
4034    --Bugfix: 6510872
4035    --l_itemkey := p_resale_batch_id||'-'||TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
4036    l_itemkey := 'PIP-'||p_resale_batch_id||'-'||TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
4037    l_itemuserkey := l_batch_info.batch_type||'-'||
4038                     l_batch_info.batch_number||'-'||
4039                     TO_CHAR(sysdate, 'YYYY-MMDD-HH24MISS');
4040 
4041 
4042 -- For Bug#8867381 making the workflow event asynchronous by creating an event
4043 /*
4044    WF_ENGINE.CreateProcess(
4045          itemType   => l_itemtype,
4046          itemKey    => l_itemkey,
4047          process    => l_process
4048    );
4049 
4050    WF_ENGINE.SetItemUserKey(
4051          itemType   => l_itemtype,
4052          itemKey    => l_itemkey,
4053          userKey    => l_itemuserkey
4054    );
4055 */
4056 
4057    --//Bugfix : 10431933
4058    --//Get the context information from Batch Process Workflow
4059    OPEN wf_values_csr(l_itemtype,p_resale_batch_id,G_WF_ATTR_USER_ID);
4060    FETCH wf_values_csr INTO l_user_id;
4061    CLOSE wf_values_csr;
4062 
4063    OPEN wf_values_csr(l_itemtype,p_resale_batch_id,G_WF_ATTR_RESP_ID);
4064    FETCH wf_values_csr INTO l_resp_id;
4065    CLOSE wf_values_csr;
4066 
4067    OPEN emp_infor_csr(OZF_UTILITY_PVT.get_resource_id(l_batch_info.last_updated_by));
4068    FETCH emp_infor_csr INTO l_emp_id;
4069    CLOSE emp_infor_csr;
4070 
4071    -- fix for bug 16066424
4072    -- in case of Interface batch, no record in wf_item_attribute_values with Itemkey as p_batch_id ||'-'||to_char(sysdate,'MM/DD/YYYY HH:MI:SS')
4073 
4074    	l_user_id := l_user_id_fnd ;
4075 	l_resp_id := l_resp_id_fnd ;
4076 
4077    IF l_batch_info.last_updated_by = l_user_id THEN
4078       l_wf_user_id := l_user_id;
4079    ELSE
4080       l_wf_user_id := l_batch_info.last_updated_by;
4081    END IF;
4082 
4083 
4084    WF_DIRECTORY.GetRoleName(
4085           p_orig_system      => 'PER',
4086           p_orig_system_id   => l_emp_id ,
4087           p_name             => l_user_name,
4088           p_display_name     => l_display_name
4089    );
4090 
4091 -- For Bug#8867381 making the workflow event asynchronous by creating an event
4092 /*
4093    WF_ENGINE.SetItemOwner(
4094           itemtype           => l_itemtype,
4095           itemkey            => l_itemkey,
4096           owner              => l_user_name
4097    );
4098 
4099    WF_ENGINE.SetItemAttrText(
4100           itemtype           => l_itemtype,
4101           itemkey            => l_itemkey ,
4102           aname              => 'OZF_RESALE_BATCH_ID',
4103           avalue             => p_resale_batch_id
4104    );
4105 
4106    WF_ENGINE.SetItemAttrText(
4107           itemtype           => l_itemtype,
4108           itemkey            => l_itemkey ,
4109           aname              => 'WF_ADMINISTRATOR',
4110           avalue             => l_user_name
4111    );
4112 
4113    WF_ENGINE.SetItemAttrText(
4114           itemtype           => l_itemtype,
4115           itemkey            => l_itemkey ,
4116           aname              => 'OZF_RESALE_BATCH_CALLER',
4117           avalue             => p_caller_type
4118    );
4119 
4120    WF_ENGINE.StartProcess(
4121           itemtype           => l_itemtype,
4122           itemkey            => l_itemkey
4123    );
4124 */
4125 
4126 -- For Bug#8867381 making the workflow event asynchronous by raising an event
4127 
4128          wf_event.AddParameterToList(p_name           => 'OZF_RESALE_BATCH_ID',
4129                                     p_value           => p_resale_batch_id,
4130                                     p_parameterlist   => l_parameter_list);
4131 
4132          wf_event.AddParameterToList(p_name           => 'WF_ADMINISTRATOR',
4133                                     p_value           => l_user_name,
4134                                     p_parameterlist   => l_parameter_list);
4135 
4136          wf_event.AddParameterToList(p_name           => 'OZF_RESALE_BATCH_CALLER',
4137                                     p_value           => p_caller_type,
4138                                     p_parameterlist   => l_parameter_list);
4139 
4140          --//Bugfix : 10431933
4141 	 wf_event.AddParameterToList(p_name           => 'OZF_USER_ID',
4142                                     p_value           => l_wf_user_id,
4143                                     p_parameterlist   => l_parameter_list);
4144 
4145 	wf_event.AddParameterToList(p_name           => 'OZF_RESPONSIBILITY_ID',
4146                                     p_value           => l_resp_id,
4147                                     p_parameterlist   => l_parameter_list);
4148 
4149 	wf_event.AddParameterToList(p_name           => 'OZF_APPLICATION_ID',
4150                                     p_value           => l_appl_id,
4151                                     p_parameterlist   => l_parameter_list);
4152 
4153 	-- nepanda : Fix for Bug 13819601
4154 	wf_event.AddParameterToList(p_name           => 'OZF_BATCH_ORG_ID',
4155                                     p_value           => l_batch_info.org_id,
4156                                     p_parameterlist   => l_parameter_list);
4157         IF OZF_DEBUG_LOW_ON THEN
4158 	   OZF_UTILITY_PVT.debug_message('Before WF_EVENT.Raise');
4159 	   OZF_UTILITY_PVT.debug_message('p_event :'|| p_event);
4160 	   OZF_UTILITY_PVT.debug_message('l_itemkey :'|| l_itemkey);
4161 	   OZF_UTILITY_PVT.debug_message('l_user_id :'|| l_user_id);
4162 	   OZF_UTILITY_PVT.debug_message('l_resp_id :'|| l_resp_id);
4163         END IF;
4164 
4165 
4166          WF_EVENT.Raise
4167             ( p_event_name   =>  p_event,
4168               p_event_key    =>  l_itemkey,
4169               p_parameters   =>  l_parameter_list);
4170 
4171 
4172 
4173 
4174 EXCEPTION
4175  WHEN FND_API.G_EXC_ERROR THEN
4176    IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4177     FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
4178     FND_MESSAGE.Set_Token('TEXT',G_PKG_NAME||'.'||l_api_name||': Error');
4179     FND_MSG_PUB.Add;
4180    END IF;
4181    RAISE;
4182  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4183    IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4184     FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
4185     FND_MESSAGE.Set_Token('TEXT',G_PKG_NAME||'.'||l_api_name||': Error');
4186     FND_MSG_PUB.Add;
4187    END IF;
4188    RAISE;
4189  WHEN OTHERS THEN
4190    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4191      FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
4192    END IF;
4193    RAISE;
4194 END Start_Batch_Payment;
4195 
4196 --nepanda : Fix for Bug 13819601
4197 ---------------------------------------------------------------------
4198 -- PROCEDURE
4199 --    SET_CONTEXT
4200 --
4201 -- PURPOSE
4202 --  This is a selector function for OZF Resale Interface Data Processing.
4203 --  This method is called everytime a new process is called in the above workflow for an Item.
4204 --  Its 1st called in mode TEST_CTX, if the context is set properly then returns with result = TRUE.
4205 --  if the context is not set, then returns with result = NOTSET .
4206 --  If result is NOTSET then this procedure is called again with Mode SET_CTX and correct context is set.
4207 --
4208 -- PARAMETERS
4209 --
4210 --
4211 -- NOTES
4212 ---------------------------------------------------------------------
4213 PROCEDURE SET_CONTEXT
4214 (   p_itemtype in  varchar2
4215 ,   p_itemkey  in  varchar2
4216 ,   p_actid    in  number
4217 ,   p_funcmode in  varchar2
4218 ,   p_resultout   in out nocopy varchar2
4219 )
4220 IS
4221 
4222   l_wf_batch_org_id       NUMBER;
4223   l_wf_resp_id            NUMBER;
4224   l_wf_user_id            NUMBER;
4225   l_wf_appl_id            NUMBER := 682 ;
4226 
4227 BEGIN
4228 
4229 
4230   l_wf_user_id := WF_ENGINE.GetItemAttrText(
4231 		   itemtype => p_itemtype,
4232 		   itemkey  => p_itemkey,
4233 		   aname    => G_WF_ATTR_USER_ID
4234 	     );
4235 
4236    l_wf_resp_id := WF_ENGINE.GetItemAttrText(
4237 	      itemtype => p_itemtype,
4238 	      itemkey  => p_itemkey,
4239 	      aname    => G_WF_ATTR_RESP_ID
4240 	);
4241 
4242  l_wf_batch_org_id := WF_ENGINE.GetItemAttrText(
4243 		itemtype  => p_itemtype,
4244 		itemkey   => p_itemkey,
4245 		aname     => 'OZF_BATCH_ORG_ID'
4246 	     );
4247 
4248 
4249 IF (p_funcmode = 'RUN') THEN
4250    p_resultout := 'COMPLETE';
4251 END IF;
4252 
4253 	IF p_funcmode = 'TEST_CTX' THEN
4254 	    IF (NVL(mo_global.get_access_mode,'NULL') <> 'S') OR
4255 	       (NVL(mo_global.get_current_org_id,-99) <> l_wf_batch_org_id) OR
4256 	       (NVL(FND_GLOBAL.user_id,-99) <> l_wf_user_id) OR
4257 	       (NVL(FND_GLOBAL.resp_id,-99) <> l_wf_resp_id)
4258 	    THEN
4259 	      p_resultout := 'NOTSET';
4260 	    ELSE
4261 	      p_resultout := 'TRUE';
4262 	    END IF;
4263 	 END IF;
4264 
4265  IF p_funcmode = 'SET_CTX' THEN
4266 		 IF l_wf_user_id IS NOT NULL AND l_wf_resp_id IS NOT NULL THEN
4267 		     FND_GLOBAL.apps_initialize(l_wf_user_id, l_wf_resp_id, l_wf_appl_id);
4268 		  END IF;
4269 		  IF l_wf_batch_org_id IS NOT NULL THEN
4270 		     MO_GLOBAL.init('OZF');
4271 		     MO_GLOBAL.set_policy_context('S', l_wf_batch_org_id);
4272 		  END IF ;
4273       p_resultout := 'COMPLETE';
4274  END IF;
4275 
4276 EXCEPTION
4277 WHEN OTHERS THEN
4278    WF_CORE.context( 'OZF_RESALE_WF_PVT','SELECTOR',p_itemtype,p_itemkey,p_actid,p_funcmode);
4279    RAISE;
4280 
4281 END SET_CONTEXT;
4282 END OZF_RESALE_WF_PVT;