DBA Data[Home] [Help]

PACKAGE BODY: APPS.FV_TREASURY_PAYMENTS_PKG

Source


1 PACKAGE BODY FV_TREASURY_PAYMENTS_PKG AS
2 -- $Header: FVAPPAYB.pls 120.19 2006/12/26 09:41:53 samalhot noship $
3 
4  g_module_name        VARCHAR2(200) := 'fv.plsql.fv_treasury_payments_pkg.';
5  g_errmsg             VARCHAR2(1000);
6  g_ledger_id          gl_ledgers.ledger_id%TYPE;
7  g_org_id	      fv_operating_units.org_id%TYPE;
8  g_treasury_conf_id   fv_treasury_confirmations.treasury_confirmation_id%TYPE;
9  g_accounting_date    fv_treasury_confirmations.treasury_doc_date%TYPE;
10  g_payment_instr_id   iby_pay_instructions_all.payment_instruction_id%TYPE;
11  g_checkrun_name      ap_checks_all.checkrun_name%TYPE;
12  x_err_code           NUMBER;
13  x_err_stage          VARCHAR2(2000);
14  g_dit_flag           VARCHAR2(1);
15  G_LOG_LEVEL          CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
16 
17 
18  PROCEDURE CREATE_TREASURY_PAYMENT_EVENT
19                                         (p_calling_sequence IN VARCHAR2
20                                         ,p_event_type       IN VARCHAR2
21                                         ,p_treasury_conf_id IN NUMBER
22                                         ,x_status_code     OUT NOCOPY VARCHAR2
23                                         ,x_return_status   OUT NOCOPY VARCHAR2);
24  PROCEDURE DO_CONFIRM_PROCESS (x_status_code     OUT NOCOPY VARCHAR2
25                               ,x_return_status   OUT NOCOPY VARCHAR2);
26 
27  PROCEDURE DO_BACKOUT_PROCESS(x_status_code     OUT NOCOPY VARCHAR2
28                              ,x_return_status   OUT NOCOPY VARCHAR2);
29 
30  /* Bug: 5727409 - Forward declaration of Procedure get_open_period */
31 
32  PROCEDURE GET_OPEN_PERIOD(p_accounting_date IN OUT NOCOPY DATE);
33 
34  PROCEDURE Main(x_errbuf   OUT NOCOPY VARCHAR2
35                ,x_retcode  OUT NOCOPY VARCHAR2
36                ,p_treas_conf_id IN  VARCHAR2
37                ,p_button_name   IN  VARCHAR2)
38  IS
39     l_module_name VARCHAR2(200);
40     l_dummy       NUMBER;
41     l_dit_flag    fv_operating_units.dit_flag%TYPE;
42     X_status_code   VARCHAR2(100);
43     X_return_status VARCHAR2(100);
44  BEGIN
45      l_module_name         :=  g_module_name || 'Main ';
46       SAVEPOINT FV_TREAS;
47 	-- Initialize variables
48   	 x_err_code := 0;
49      g_treasury_conf_id := TO_NUMBER(p_treas_conf_id);
50 
51 
52      IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
53         FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
54                             'Treasury Confirmation Id = '||g_treasury_conf_id);
55      END IF;
56 
57       IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
58         FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
59                             'Org Id = '|| g_org_id);
60      END IF;
61 
62 
63      BEGIN
64  	   SELECT 1
65            INTO   l_dummy
66            FROM   gl_je_categories
67            WHERE  je_category_name = 'Treasury Confirmation';
68 
69      EXCEPTION
70           WHEN NO_DATA_FOUND THEN
71     	   l_dummy := 0;
72      END;
73 
74      IF (l_dummy = 0) THEN
75         IF p_button_name = 'TREASURY_CONFIRMATION.CONFIRM' THEN
76              UPDATE fv_treasury_confirmations
77       	    SET    confirmation_status_flag = 'N'
78     	    WHERE treasury_confirmation_id = g_treasury_conf_id;
79         ELSIF p_button_name = 'TREASURY_CONFIRMATION.BACK_OUT' THEN
80             UPDATE fv_treasury_confirmations
81  	        SET    confirmation_status_flag = 'Y'
82 	        WHERE treasury_confirmation_id = g_treasury_conf_id;
83          END IF;
84          commit;
85     	  x_retcode := 2;
86           x_errbuf  := 'The Treasury Confirmation journal category has not been seeded';
87           IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
88            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
89                                             'p_button_name = '||p_button_name);
90            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
91                             'Treasury Confirmation Id = '||g_treasury_conf_id);
92           END IF;
93           Return;
94      END IF;
95 
96 
97      BEGIN
98       SELECT payment_instruction_id
99             ,treasury_doc_date
100             ,set_of_books_id
101             ,org_id
102             ,checkrun_name
103       INTO   g_payment_instr_id
104             ,g_accounting_date
105             ,g_ledger_id
106             ,g_org_id
107             ,g_checkrun_name
108       FROM   fv_treasury_confirmations
109       WHERE  treasury_confirmation_id = g_treasury_conf_id;
110 
111    /* Bug: 5727409 - getting open period accounting date */
112    get_open_period(g_accounting_date);
113       --Check whether dit_flag is enabled in fv_operating_units table
114    g_dit_flag := Null;
115 
116     SELECT dit_flag
117 	INTO   l_dit_flag
118 	FROM   fv_operating_units
119     where org_id = g_org_id ;
120 
121     IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
122        FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
123                                                    'dit flag = '||l_dit_flag);
124     END IF;
125     g_dit_flag := l_dit_flag;
126 
127     IF l_dit_flag <> 'Y' THEN
128       x_retcode := 0;
129       x_errbuf := 'Disbursement in transit checkbox is disabled in Define Federal Options form'||
130                   '-no accounting created for Treasury Confirmation ';
131       IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
132            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
133            'No Accounting created for Treasury Confirmation -'||
134            'disbursement in transit checkbox is disabled in Define Federal Options form');
135         END IF;
136     END IF;
137 
138 
139 
140 
141       IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
142            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
143                                    'g_payment_instr_id = '||g_payment_instr_id);
144            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
145                                     'g_accounting_date = '||g_accounting_date);
146            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
147                                                 'g_ledger_id = '||g_ledger_id);
148            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
149                                                       'g_org_id = '||g_org_id);
150            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
151                                         'g_checkrun_name = '||g_checkrun_name);
152       END IF;
153      EXCEPTION
154       WHEN OTHERS THEN
155         x_retcode := 2;
156         x_errbuf := 'The Treasury Confirmation rows are not available';
157         IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
158            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
159                                             'p_button_name = '||p_button_name);
160            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
161                             'Treasury Confirmation Id = '||g_treasury_conf_id);
162         END IF;
163      END;
164 
165      IF (x_retcode = 2) THEN
166         IF p_button_name = 'TREASURY_CONFIRMATION.CONFIRM' THEN
167             UPDATE fv_treasury_confirmations
168      	    SET    confirmation_status_flag = 'N'
169 	    WHERE treasury_confirmation_id = g_treasury_conf_id;
170          ELSIF p_button_name = 'TREASURY_CONFIRMATION.BACK_OUT' THEN
171             UPDATE fv_treasury_confirmations
172  	    SET    confirmation_status_flag = 'Y'
173 	    WHERE treasury_confirmation_id = g_treasury_conf_id;
174          END IF;
175          commit;
176          RETURN;
177      END IF;
178 
179      FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
180                                     'Button='||p_button_name);
181 
182      IF p_button_name = 'TREASURY_CONFIRMATION.CONFIRM' THEN
183         IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
184      		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
185                                                 'Confirmation Process begins');
186 		END IF;
187         do_confirm_process(x_status_code,x_return_status);
188         x_retcode := x_status_code;
189 
190         IF (x_status_code = 'SUCCESS') THEN
191             UPDATE fv_treasury_confirmations
192      	    SET    confirmation_status_flag = 'Y'
193 	     	WHERE treasury_confirmation_id = g_treasury_conf_id;
194 
195             IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
196          		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
197                                                      'The Confirm Process is Successful');
198     	    END IF;
199        ELSE
200 
201 	   ROLLBACK TO FV_TREAS;
202 	    x_retcode:=2;
203 
204 
205        	    UPDATE fv_treasury_confirmations
206      	    SET    confirmation_status_flag = 'N'
207 	     	WHERE treasury_confirmation_id = g_treasury_conf_id;
208 
209             IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
210              		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
211                                                     'The Confirm Process has failed.');
212 		    END IF;
213 
214             END IF;
215 
216      ELSIF p_button_name = 'TREASURY_CONFIRMATION.BACK_OUT' THEN
217         IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
218      		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
219                                                      'Backout Process begins');
220 		END IF;
221           if g_dit_flag = 'Y' THEN
222 
223             do_backout_process(x_status_code,x_return_status);
224             x_retcode := x_status_code;
225          Else
226             x_retcode :=0;
227             x_status_code := 'SUCCESS';
228 
229          END IF;
230 
231 	      IF (x_status_code = 'SUCCESS') THEN
232         	    UPDATE fv_treasury_confirmations
233  	            SET    confirmation_status_flag = 'B'
234 	   	       WHERE treasury_confirmation_id = g_treasury_conf_id;
235 
236 	            IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
237          		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
238                                                      'The Backout Process is Successful');
239  		    END IF;
240 	      ELSE
241 			   ROLLBACK TO FV_TREAS;
242 			    x_retcode:=2;
243 
244         	    UPDATE fv_treasury_confirmations
245  	            SET    confirmation_status_flag = 'Y'
246 	   	        WHERE treasury_confirmation_id = g_treasury_conf_id;
247 
248         	    IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
249              		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
250                                                     'The Backout Process has failed.');
251 		    END IF;
252 
253 	     END IF;
254      ELSE
255       IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
256      		FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
257                                            'No Treasury Confirmation process');
258 	  END IF;
259       RETURN;
260      END IF;
261 
262 	Commit;
263 
264   EXCEPTION
265        WHEN OTHERS THEN
266             g_errmsg := SQLERRM;
267             FV_UTILITY.LOG_MESG(FND_LOG.LEVEL_UNEXPECTED, l_module_name,g_errmsg);
268             RAISE;
269  END Main;
270 
271 PROCEDURE DO_CONFIRM_PROCESS (x_status_code   OUT NOCOPY VARCHAR2
272                               ,x_return_status OUT NOCOPY VARCHAR2)
273  IS
274     l_dummy       NUMBER;
275     l_begin_doc	  fv_treasury_confirmations.begin_doc_num%TYPE;
276     l_end_doc	  fv_treasury_confirmations.end_doc_num%TYPE;
277     l_diff        NUMBER;
278     l_row_num     NUMBER;
279     l_module_name VARCHAR2(200);
280     l_void_count  NUMBER;
281 
282     l_void_status_code VARCHAR2(2000);
283     l_void_return_status VARCHAR2(1);
284 
285     --Variables used for 11i Upgrade rows
286     l_pay_fmt_program_name  ap_payment_programs.program_name%TYPE;
287     l_checkrun_name fv_treasury_confirmations_all.checkrun_name%TYPE;
288     l_select_str VARCHAR2(1000);
289     TYPE t_refcur IS REF CURSOR;
290     l_upg_check_id_cur  t_refcur;
291     l_corr_treas_pay_num fv_tc_offsets.corrected_treasury_pay_number%TYPE;
292     l_offset_check_id	fv_tc_offsets.check_id%TYPE;
293 
294    -- declare array to store check_ids
295     TYPE l_check_row IS RECORD (CHECK_ID NUMBER(15)) ;
296     TYPE l_check_tbl_type IS TABLE OF l_check_row INDEX BY BINARY_INTEGER;
297     l_check_tbl  l_check_tbl_type;
298 
299     CURSOR cur_get_checks IS
300     SELECT ac.check_id
301     FROM   ap_checks ac
302           ,fv_treasury_confirmations ftc
303     WHERE ftc.treasury_confirmation_id = g_treasury_conf_id
304     AND   ftc.payment_instruction_id   = ac.payment_instruction_id
305     AND   ac.org_id                   = g_org_id;
306 
307     CURSOR	cur_corr_treas_pay_num IS
308     SELECT	fto.corrected_treasury_pay_number, fto.check_id
309     FROM	fv_tc_offsets	fto,
310      	        ap_checks	ac,
311                 iby_pay_instructions_all ipa
312     WHERE 	ac.check_id = fto.check_id
313     AND     ipa.payment_instruction_id = ac.payment_instruction_id
314     AND     ipa.payment_instruction_id = g_payment_instr_id;
315 
316     CURSOR c_check_ranges IS
317     SELECT ftcr.range_from, ftcr.range_to
318     FROM   fv_treasury_check_ranges ftcr
319     WHERE  ftcr.treasury_confirmation_id = g_treasury_conf_id;
320 
321     l_calling_sequence VARCHAR2(1000);
322     l_return_status    VARCHAR2(100);
323     l_status_code    VARCHAR2(100);
324 
325  BEGIN
326 
327    l_module_name := g_module_name ||'do_confirm_process';
328 
329    l_calling_sequence := 'FV_TREASURY_PAYMENTS_PKG.do_confirm_process';
330 
331     l_void_count :=0;
332 
333     x_status_code := 'SUCCESS';
334 
335    -- select statement for 11i upgrade rows
336     BEGIN
337     SELECT checkrun_name
338     INTO  l_checkrun_name
339     FROM FV_TREASURY_CONFIRMATIONS_ALL
340     WHERE payment_instruction_id = g_payment_instr_id
341     AND   org_id                 = g_org_id;
342 
343     IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
344     	FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
345                              'l_checkrun_name = '||l_checkrun_name);
346     END IF;
347     EXCEPTION
348      WHEN OTHERS THEN
349       IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
350     	FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
351                                                       'No Upgrade entries');
352       END IF;
353     l_checkrun_name := NULL;
354     END;
355 
356     IF l_checkrun_name IS NOT NULL THEN
357 
358 
359 
360 	SELECT appp.program_name
361           INTO l_pay_fmt_program_name
362          FROM  ap_inv_selection_criteria_all apisc ,
363                ap_payment_programs appp
364          WHERE apisc.checkrun_name = g_checkrun_name
365          AND   apisc.org_id        = g_org_id
366          AND   appp.program_id     = apisc.program_id ;
367 
368 
369 	-- setting the predefined order of the check_ids based on Payment Format
370 
371      IF l_pay_fmt_program_name IN ('FVBLCCDP' , 'FVBLPPDP','FVTPCCD','FVTIACHP',
372 				                   'FVTPPPD','FVTPPPDP','FVSPCCD','FVSPCCDP',
373                    				   'FVSPPPDP','FVSPPPD' ) THEN
374          l_select_str := 'SELECT check_id FROM  fv_tc_check_v WHERE' ||
375                          ' checkrun_name = g_checkrun_name ORDER BY '||
376                          ' routing_transit_num , num_1099, check_number'   ;
377      ELSIF l_pay_fmt_program_name IN ('FVBLNCR','FVBLSLTR','FVTIACHB','FVSPNCR')
378      THEN
379          l_select_str := 'SELECT check_id FROM  fv_tc_check_v WHERE' ||
380                          ' checkrun_name = g_checkrun_name ORDER BY '||
381                          ' num_1099, check_number'   ;
382      ELSE
383          l_select_str := 'SELECT check_id FROM  fv_tc_check_v WHERE' ||
384                          ' checkrun_name = g_checkrun_name' ||
385         			     ' ORDER BY  check_number';
386      END IF;
387      -- Get all the 11i upgrade rows check_id values
388      l_row_num := 1;
389      OPEN l_upg_check_id_cur FOR l_select_str;
390      LOOP
391      FETCH l_upg_check_id_cur INTO l_check_tbl(l_row_num).check_id;
392         l_row_num := l_row_num + 1;
393       EXIT WHEN l_upg_check_id_cur %NOTFOUND;
394      END LOOP;
395    ELSE
396      --Get all the R12 checks related to this treasury confirmation id
397      l_row_num := 1;
398      OPEN cur_get_checks;
399      LOOP
400      FETCH cur_get_checks INTO l_check_tbl(l_row_num).check_id;
401         l_row_num := l_row_num + 1;
402      EXIT WHEN cur_get_checks %NOTFOUND;
403      END LOOP;
404 
405     END IF;
406 
407     l_row_num := 1;
408 
409      -- Assigning the treasury Pay number to the respective checks
410      FOR c_check_range_rec IN c_check_ranges
411      LOOP
412        l_begin_doc := c_check_range_rec.range_from;
413        l_end_doc   := c_check_range_rec.range_to;
414 
415         IF (l_begin_doc IS NULL) OR (l_end_doc IS NULL) OR
416            (g_payment_instr_id IS NULL)  OR ( g_accounting_date IS NULL) THEN
417             x_err_code := 20;
418             x_err_stage :=  'Data in treasury confirmation table is missing';
419             RETURN;
420         END IF;
421 
422         l_diff  := l_end_doc - l_begin_doc + 1;
423 
424         IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
425            FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
426                                                  'l_diff is ' || l_diff);
427         END IF;
428 
429       FOR i IN 1.. l_diff
430       LOOP
431        IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
432          FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
433                                                       'l_row_num:'||l_row_num);
434          FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
435                                       'l_check_tbl(l_row_num).check_id:'||
436                                        l_check_tbl(l_row_num).check_id);
437        END IF;
438 
439         UPDATE ap_checks c
440         SET treasury_pay_number = l_begin_doc,
441             treasury_pay_date   = g_accounting_date,
442             last_update_date    = SYSDATE,
443             last_updated_by     = fnd_global.user_id,
444             last_update_login   = fnd_global.login_id
445         WHERE c.check_id = l_check_tbl(l_row_num).check_id;
446 
447         l_row_num   := l_row_num+1;
448         l_begin_doc := l_begin_doc +1;
449       END LOOP;
450      END LOOP;
451 
452 	-- Update ap_checks if a corrected treasury pay number
453 	-- for a payment within the batch being processed has been entered
454 	OPEN	cur_corr_treas_pay_num;
455 	LOOP
456 	FETCH	cur_corr_treas_pay_num INTO l_corr_treas_pay_num, l_offset_check_id;
457 	EXIT WHEN cur_corr_treas_pay_num%NOTFOUND;
458 
459        IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
460             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
461                              'In corrected treasury pay number loop');
462        END IF;
463 
464     IF l_corr_treas_pay_num IS NOT NULL THEN
465 		UPDATE	ap_checks
466 		SET	treasury_pay_number = l_corr_treas_pay_num
467 		WHERE	check_id = l_offset_check_id;
468 	END IF;
469 	END LOOP;
470 	CLOSE cur_corr_treas_pay_num;
471 
472     if g_dit_flag = 'Y' THEN
473 
474           create_treasury_payment_event(l_calling_sequence,
475                                         'TREASURY_CONFIRM',
476                                        g_treasury_conf_id ,
477                                           x_status_code,
478                                           x_return_status);
479 
480 
481 
482        IF x_status_code= 'SUCCESS' THEN
483 
484             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
485                              'Treasury Confirmation Successful. Checking for Voided Checks');
486 
487           SELECT COUNT(ac.check_id) INTO l_void_count
488            FROM   ap_checks_all ac
489               ,fv_treasury_confirmations_all ftc
490             WHERE ftc.treasury_confirmation_id = g_treasury_conf_id
491                 AND   ftc.payment_instruction_id   = ac.payment_instruction_id
492                 AND   ac.org_id                   =  g_org_id
493                 AND  ac.org_id                     = ftc.org_id
494                 AND   ac.void_date IS NOT NULL;
495 
496                 IF l_void_count <> 0 THEN
497 
498 
499             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
500                              'Voided Checks = ' || l_void_count);
501 
502 
503      INSERT INTO fv_voided_checks
504     (
505       void_id,
506       checkrun_name,
507       check_id,
508       processed_flag,
509       creation_date,
510       created_by,
511       last_update_date,
512       last_updated_by,
513       last_update_login,
514       org_id,
515       payment_instruction_id
516     )
517     SELECT fv_voided_checks_s.nextval,
518            ac.checkrun_name,
519            ac.check_id,
520            'U',
521            SYSDATE,
522            fnd_global.user_id,
523            SYSDATE,
524            fnd_global.user_id,
525            fnd_global.login_id,
526            ac.org_id,
527            g_payment_instr_id
528       FROM ap_checks_all ac,
529            fv_treasury_confirmations_all fvc
530       WHERE ac.org_id = g_org_id
531         AND  fvc.org_id = ac.org_id
532         AND fvc.treasury_confirmation_id= g_treasury_conf_id
533         AND fvc.payment_instruction_id   = ac.payment_instruction_id
534        AND ac.void_date IS NOT NULL
535        AND (ac.checkrun_name IS NOT NULL OR ac.payment_id IS NOT NULL)
536        AND NOT EXISTS (SELECT 1
537                         FROM fv_voided_checks fvc
538                        WHERE fvc.check_id = ac.check_id
539                          AND fvc.org_id = ac.org_id);
540 
541      UPDATE fv_treasury_confirmations
542      	    SET    confirmation_status_flag = 'Y'
543 	     	WHERE treasury_confirmation_id = g_treasury_conf_id;
544 
545      commit;
546 
547             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
548                              'Calling Create treasury payment for Voided Checks');
549 
550     create_treasury_payment_event(l_calling_sequence,
551                                       'TREASURY_VOID',
552                                       g_treasury_conf_id,
553                                       x_status_code,
554                                       x_return_status);
555 
556 
557             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
558                              'After Create treasury payment for Voided Checks');
559 
560         BEGIN
561 
562            IF (x_status_code = 'SUCCESS') THEN
563 
564 
565             FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
566                              'Create treasury payment for Voided Checks is Successful');
567 
568             UPDATE fv_voided_checks
569                SET processed_flag = 'P'
570              WHERE processed_flag = 'U'
571                AND org_id = g_org_id
572                and check_id in ( select check_id
573                                  from fv_treasury_confirmations_all fvtreas  ,
574                                       ap_checks_all ac
575                                  where
576                                  fvtreas.org_id = g_org_id
577                                  and ac.org_id = fvtreas.org_id
578                                  and fvtreas.treasury_confirmation_id = g_treasury_conf_id
579                                  and fvtreas.payment_instruction_id = ac.payment_instruction_id
580                                  and ac.void_date is not null
581                                  );
582             END IF;
583 
584          EXCEPTION
585                 WHEN OTHERS THEN
586                       fv_utility.log_mesg(fnd_log.level_exception,l_module_name||
587                       'Error in Creating Void Accounting ',SQLERRM);
588         END;
589 
590 
591 
592 
593                 END IF;
594       END IF;
595 
596         END IF;
597 
598 
599  EXCEPTION
600    WHEN OTHERS THEN
601       x_status_code := 'FAILURE';
602 
603  END do_confirm_process;
604 
605  PROCEDURE DO_BACKOUT_PROCESS (x_status_code   OUT NOCOPY VARCHAR2,
606                                x_return_status OUT NOCOPY VARCHAR2)
607  IS
608     l_module_name      VARCHAR2(100);
609     l_calling_sequence VARCHAR2(1000);
610  BEGIN
611 
612    l_module_name := g_module_name ||'do_backout_process';
613 
614    l_calling_sequence := 'FV_TREASURY_PAYMENTS_PKG.do_backout_process';
615    create_treasury_payment_event(l_calling_sequence,
616                                 'TREASURY_BACKOUT',
617                                g_treasury_conf_id ,
618                                 x_status_code,
619                                 x_return_status);
620 
621  END do_backout_process;
622 
623 PROCEDURE GET_OPEN_PERIOD(p_accounting_date IN OUT NOCOPY DATE)
624 IS
625 v_status gl_period_statuses.closing_status%type;
626 v_pyear gl_period_statuses.period_year%type;
627 l_module_name VARCHAR2(200);
628 v_pnum gl_period_statuses.effective_period_num%type;
629 BEGIN
630 
631 /* To find out whether period is open for particular gl_accounting_date */
632 l_module_name := g_module_name ||' get_open_period';
633 
634    SELECT closing_status,period_year,effective_period_num
635      INTO v_status,v_pyear,v_pnum
636      FROM gl_period_statuses gps
637     WHERE gps.ledger_id = g_ledger_id
638       AND gps.application_id = 101
639       AND p_accounting_date BETWEEN gps.start_date AND gps.end_date;
640 
641 	IF v_status  = 'C' THEN    /* If Period is closed then get starting
642 				     accounting date of next open period */
643 
644 		BEGIN
645 
646 		SELECT start_date
647 		  INTO p_accounting_date
648 		  FROM gl_period_statuses gps
649 		 WHERE gps.ledger_id = g_ledger_id
650 		   AND gps.application_id = 101
651 		   AND gps.period_year >= v_pyear
652 		   AND effective_period_num > v_pnum
653 		   AND gps.closing_status = 'O'
654 		   AND gps.adjustment_period_flag = 'N'
655 		   AND ROWNUM  < 2
656 		 ORDER BY period_year,period_num ASC ;
657 
658 		EXCEPTION
659 		WHEN others THEN
660 		fv_utility.log_mesg(fnd_log.level_exception,l_module_name||
661                       'Error in getting next Open Period',SQLERRM);
662 		RETURN;
663 
664 		END;
665 	ELSE
666         p_accounting_date := p_accounting_date;
667 
668 	END IF;  --- end of Closed Period
669 
670  END GET_OPEN_PERIOD;
671 
672  PROCEDURE CREATE_TREASURY_PAYMENT_EVENT
673                                         (p_calling_sequence IN VARCHAR2
674                                         ,p_event_type       IN VARCHAR2
675                                         ,p_treasury_conf_id IN NUMBER
676                                         ,x_status_code     OUT NOCOPY VARCHAR2
677                                         ,x_return_status   OUT NOCOPY VARCHAR2)
678  IS
679   l_calling_sequence VARCHAR2(1000);
680   l_module_name      VARCHAR2(200);
681 
682   l_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
683   l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
684   l_reference_info XLA_EVENTS_PUB_PKG.T_EVENT_REFERENCE_INFO;
685 
686   CURSOR cur_get_payment_info(p_treasury_conf_id NUMBER) IS
687   SELECT distinct ac.legal_entity_id, ftc.event_id
688   FROM   ap_checks ac
689         ,fv_treasury_confirmations ftc
690   WHERE ftc.treasury_confirmation_id = p_treasury_conf_id
691   AND   ftc.payment_instruction_id   = ac.payment_instruction_id
692   AND   ac.org_id = g_org_id;
693 
694   CURSOR cur_get_void_info IS
695   SELECT
696       FVC.event_id,
697       FTC.payment_instruction_id,
698       FVC.check_id,
699       FTC.treasury_confirmation_id
700   FROM fv_voided_checks FVC,
701        fv_treasury_confirmations_all FTC,
702        ap_checks_all ac
703   WHERE
704   ftc.org_id = g_org_id
705   AND FVC.org_id = ftc.org_id
706   AND ac.org_id = FVC.org_id
707   AND FTC.treasury_confirmation_id = p_treasury_conf_id
708   AND FTC.payment_instruction_id  = ac.payment_instruction_id
709   AND ac.check_id = fvc.check_id
710   AND fvc.processed_flag = 'U'
711   AND FTC.confirmation_status_flag = 'Y';
712 
713 
714   CURSOR cur_void_acctg_date(l_check_id NUMBER) IS
715   SELECT accounting_date
716   FROM ap_invoice_payments_all
717   WHERE check_id = l_check_id
718   AND amount < 0
719   GROUP BY check_id, accounting_date;
720 
721  l_event_status_code       VARCHAR2(1);
722  l_pay_hist_id             AP_PAYMENT_HISTORY_ALL.payment_history_id%TYPE;
723  l_check_id                NUMBER(15);
724  l_check_number            NUMBER(15);
725  l_legal_entity_id         NUMBER(15);
726  l_batch                   NUMBER;
727  l_errbuf                  VARCHAR2(1000);
728  l_retcode                 NUMBER;
729  l_api_message             VARCHAR2(1000);
730  l_payment_instr_id        NUMBER(15);
731  l_treas_conf_id           NUMBER(15);
732  l_void_acctg_date         DATE;
733  l_tc_event_id             NUMBER(15);
734  l_void_event_id           NUMBER(15);
735  l_pmt_id                  fv_treasury_confirmations_all.payment_instruction_id%TYPE;
736 
737  BEGIN
738   l_calling_sequence := p_calling_sequence || ' -> FV_TREASURY_PAYMENTS_PKG.CREATE_TREASURY_PAYMENT_EVENT';
739   l_module_name      := g_module_name||'Create_Treasury_Payment_Event';
740 
741   IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
742      FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_STATEMENT,l_module_name,
743                                     'Calling Sequence: '||p_calling_sequence);
744   END IF;
745 
746   --Set the reference info value based on event type
747   IF p_event_type = 'TREASURY_CONFIRM' THEN
748    l_reference_info.reference_char_1 := 'CONFIRM';
749   ELSIF p_event_type = 'TREASURY_BACKOUT' THEN
750    l_reference_info.reference_char_1 := 'BACKOUT';
751   ELSIF p_event_type = 'TREASURY_VOID' THEN
752     l_reference_info.reference_char_1 := 'VOID';
753   ELSE
754      l_reference_info.reference_char_1 := NULL;
755   END IF;
756   l_event_status_code := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
757 
758 
759   SELECT payment_instruction_id
760   INTO
761         l_pmt_id
762   FROM  fv_treasury_confirmations ftc
763   WHERE
764    ftc.treasury_confirmation_id = p_treasury_conf_id;
765 
766   l_event_source_info.application_id        := 8901;
767   l_event_source_info.ledger_id             := g_ledger_id;
768   l_event_source_info.entity_type_code      := 'TREASURY_CONFIRMATION';
769   l_event_source_info.transaction_number    := l_pmt_id; --p_treasury_conf_id;
770   l_event_source_info.source_id_int_1       := p_treasury_conf_id;
771   l_security_context.security_id_int_1      := g_org_id;
772 
773   IF p_event_type = 'TREASURY_CONFIRM' OR p_event_type = 'TREASURY_BACKOUT' THEN
774 
775      OPEN cur_get_payment_info(p_treasury_conf_id);
776      FETCH cur_get_payment_info INTO l_legal_entity_id,l_tc_event_id;
777      l_event_source_info.legal_entity_id       := l_legal_entity_id;
778 
779      IF XLA_EVENTS_PUB_PKG.event_exists
780                     (p_event_source_info => l_event_source_info
781                     ,p_event_type_code   => p_event_type
782                     ,p_event_date        => g_accounting_date
783                     ,p_event_status_code => l_event_status_code
784                     ,p_event_number      => NULL
785                     ,p_valuation_method  => NULL
786                     ,p_security_context  => l_security_context) THEN
787 
788          IF (FND_LOG.LEVEL_PROCEDURE >= G_LOG_LEVEL ) THEN
789              FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module_name,'Event exists! event_id =' || l_tc_event_id);
790          END IF;
791 
792       --- call the xla_events_pub_pkg.get_array_event_info
793          /*XLA_EVENTS_PUB_PKG.DELETE_EVENT(
794              p_event_source_info => l_event_source_info,
795              p_event_id => l_tc_event_id,
796              p_valuation_method => NULL,
797              p_security_context => l_security_context);
798 
799          IF (FND_LOG.LEVEL_PROCEDURE >= G_LOG_LEVEL ) THEN
800              FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module_name, 'After delete '||l_tc_event_id);
801          END IF;*/
802 
803      END IF;
804 
805      l_tc_event_id := NULL;
806 
807      l_tc_event_id := Xla_Events_Pub_Pkg.Create_Event
808                     (
809                       p_event_source_info => l_event_source_info,
810                       p_event_type_code   => p_event_type,
811                       p_event_date        => g_accounting_date,
812                       p_event_status_code => l_event_status_code,
813                       p_event_number      => NULL,
814                       p_reference_info    => l_reference_info,
815                       p_valuation_method  => NULL,
816                       p_security_context  => l_security_context
817 --                      p_budgetary_control_flag => 'Y'
818                      );
819 
820      IF FND_LOG.LEVEL_STATEMENT >= G_LOG_LEVEL THEN
821               FND_LOG.string(FND_LOG.LEVEL_STATEMENT, l_module_name, 'Event ID: '||l_tc_event_id );
822      END IF;
823 
824      IF l_tc_event_id is NULL THEN
825            IF FND_LOG.LEVEL_UNEXPECTED >= G_LOG_LEVEL THEN
826                  FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED, l_module_name,'Event creation failed for: Treasury confirmation ID: '
827                      || to_char(l_event_source_info.transaction_number));
828            END IF;
829            RAISE FND_API.g_exc_error;
830      END IF;
831 
832      Insert into XLA_ACCT_PROG_EVENTS_GT (Event_Id)
833      values (l_tc_Event_id);
834 
835       Update fv_treasury_confirmations_all
836       Set event_id = l_tc_event_id
837       Where treasury_confirmation_id = p_treasury_conf_id;
838 
839   ELSIF p_event_type = 'TREASURY_VOID' THEN
840      OPEN cur_get_void_info;
841      LOOP
842          FETCH cur_get_void_info INTO l_void_event_id,
843                                       l_payment_instr_id,
844                                       l_check_id
845                                      ,l_treas_conf_id;
846 
847          EXIT WHEN cur_get_void_info%NOTFOUND;
848 
849 
850          OPEN cur_get_payment_info(l_treas_conf_id);
851          FETCH cur_get_payment_info INTO l_tc_event_id, l_legal_entity_id;
852          CLOSE cur_get_payment_info;
853 
854          l_event_source_info.legal_entity_id       := l_legal_entity_id;
855 
856          OPEN cur_void_acctg_date(l_check_id);
857          FETCH cur_void_acctg_date INTO l_void_acctg_date;
858          CLOSE cur_void_acctg_date;
859 	/*  Bug: 5727409 */
860 
861 	 get_open_period(l_void_acctg_date);
862 
863 /*
864          IF XLA_EVENTS_PUB_PKG.event_exists
865                     (p_event_source_info => l_event_source_info
866                     ,p_event_type_code   => p_event_type
867                     ,p_event_date        => l_void_acctg_date
868                     ,p_event_status_code => l_event_status_code
869                     ,p_event_number      => NULL
870                     ,p_valuation_method  => NULL
871                     ,p_security_context  => l_security_context) THEN
872 
873              IF (FND_LOG.LEVEL_PROCEDURE >= G_LOG_LEVEL ) THEN
874                  FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module_name,'Event exists! event_id =' || l_void_event_id);
875              END IF;
876 
877              XLA_EVENTS_PUB_PKG.DELETE_EVENT(
878                p_event_source_info => l_event_source_info,
879                p_event_id => l_void_event_id,
880                p_valuation_method => NULL,
881                p_security_context => l_security_context);
882 
883              IF (FND_LOG.LEVEL_PROCEDURE >= G_LOG_LEVEL ) THEN
884                   FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module_name, 'After delete '||l_void_event_id);
885              END IF;
886           END IF;  */
887          l_void_event_id := NULL;
888 
889          l_void_event_id := Xla_Events_Pub_Pkg.Create_Event
890                     (
891                       p_event_source_info => l_event_source_info,
892                       p_event_type_code   => p_event_type,
893                       p_event_date        => l_void_acctg_date,
894                       p_event_status_code => l_event_status_code,
895                       p_event_number      => NULL,
896                       p_reference_info    => l_reference_info,
897                       p_valuation_method  => NULL,
898                       p_security_context  => l_security_context
899 --                      p_budgetary_control_flag => 'Y'
900                      );
901 
902          IF FND_LOG.LEVEL_STATEMENT >= G_LOG_LEVEL THEN
903               FND_LOG.string(FND_LOG.LEVEL_STATEMENT, l_module_name, 'Event ID: '||l_void_event_id );
904          END IF;
905 
906         IF l_void_event_id is NULL THEN
907            IF FND_LOG.LEVEL_UNEXPECTED >= G_LOG_LEVEL THEN
908                  FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED, l_module_name,'Event creation failed for: Treasury confirmation ID: '
909                      || to_char(l_event_source_info.transaction_number)||'Check ID: '||l_check_id);
910            END IF;
911            RAISE FND_API.g_exc_error;
912          END IF;
913 
914          INSERT INTO XLA_ACCT_PROG_EVENTS_GT (Event_Id)
915          VALUES (l_void_Event_id);
916 
917          UPDATE fv_voided_checks
918          SET event_id = l_void_event_id,
919          payment_instruction_id = l_payment_instr_id
920          WHERE  check_id = l_check_id
921          AND org_id = g_org_id;
922 
923      END LOOP;
924      CLOSE cur_get_void_info;
925 
926   END IF;
927      x_return_status := FND_API.G_RET_STS_SUCCESS;
928      l_batch := NULL;
929      l_errbuf:= NULL;
930      l_retcode:= NULL;
931 
932      xla_accounting_pub_pkg.accounting_program_events
933                     (p_application_id        => 8901
934                      ,p_accounting_mode      => 'FINAL'
935                      ,p_gl_posting_flag      => 'N'
936                      ,p_accounting_batch_id  => l_batch
937                      ,p_errbuf               => l_errbuf
938                      ,p_retcode              => l_retcode
939                     );
940 
941       IF l_retcode <> 0 THEN
942            l_api_message := 'Error Accounting for Events in SLA';
943            IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
944                 FV_UTILITY.DEBUG_MESG(FND_LOG.LEVEL_UNEXPECTED,l_module_name ,
945 l_api_message);
946            END IF;
947            x_status_code := 'FAILURE';
948            RAISE FND_API.g_exc_error;
949       END IF;
950       x_status_code := 'SUCCESS';
951 
952  EXCEPTION
953   WHEN FND_API.g_exc_error THEN
954     x_return_status := FND_API.g_ret_sts_error;
955  END create_treasury_payment_event;
956 
957  PROCEDURE Void
958  			   (X_errbuf        OUT NOCOPY VARCHAR2
959               ,X_retcode       OUT NOCOPY VARCHAR2 )
960 
961  IS
962   l_module_name          VARCHAR2(200);
963 --  l_group_id             NUMBER;
964   l_err_code             NUMBER;
965   l_err_stage            VARCHAR2(2000);
966   l_reference1           gl_interface.reference1%TYPE;
967   l_calling_sequence     VARCHAR2(2000);
968   l_return_status        VARCHAR2(30);
969   l_status_code          VARCHAR2(30);
970   l_ledger_name          VARCHAR2(100);
971   l_void_count           NUMBER;
972 
973  CURSOR cur_treas_conf
974  IS
975     SELECT max(fvtreas.TREASURY_CONFIRMATION_ID) TREASURY_CONFIRMATION_ID
976     FROM   fv_voided_checks fvc , ap_checks_all apchk,fv_treasury_confirmations_all fvtreas
977     WHERE
978            apchk.org_id = g_org_id
979     AND    apchk.org_id = fvtreas.org_id
980     AND    apchk.check_id = fvc.check_id
981     AND    apchk.payment_instruction_id = fvtreas.payment_instruction_id
982     AND fvc.processed_flag = 'U'
983     GROUP BY fvc.check_id;
984 
985 treas_conf_rec cur_treas_conf%ROWTYPE;
986 
987  BEGIN
988   fv_utility.debug_mesg(fnd_log.level_statement,l_module_name,'Start Of Void');
989 
990   l_module_name := g_module_name || 'Void';
991   l_calling_sequence := 'FV_TREASURY_PAYMENTS_PKG.Void_Payments';
992   l_reference1  := 'Void';
993 
994  IF g_org_id IS NULL THEN
995      g_org_id := MO_GLOBAL.get_current_org_id;
996      MO_UTILS.get_ledger_info(g_org_id, g_ledger_id, l_ledger_name);
997  END IF;
998 
999   IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1000     fv_utility.debug_mesg(fnd_log.level_statement,l_module_name,'INSERT INTO fv_voided_checks');
1001   END IF;
1002 
1003     BEGIN
1004     INSERT INTO fv_voided_checks
1005     (
1006       void_id,
1007       checkrun_name,
1008       check_id,
1009       processed_flag,
1010       creation_date,
1011       created_by,
1012       last_update_date,
1013       last_updated_by,
1014       last_update_login,
1015       org_id
1016     )
1017     SELECT fv_voided_checks_s.nextval,
1018            ac.checkrun_name,
1019            ac.check_id,
1020            'U',
1021            SYSDATE,
1022            fnd_global.user_id,
1023            SYSDATE,
1024            fnd_global.user_id,
1025            fnd_global.login_id,
1026            ac.org_id
1027       FROM ap_checks_all ac,
1028             fv_treasury_confirmations_all fvtc
1029       WHERE ac.org_id = g_org_id
1030       AND fvtc.org_id = ac.org_id
1031       AND fvtc.payment_instruction_id = ac.payment_instruction_id
1032        AND ac.void_date IS NOT NULL
1033        AND (ac.checkrun_name IS NOT NULL OR ac.payment_id IS NOT NULL)
1034        AND NOT EXISTS (SELECT 1
1035                         FROM fv_voided_checks fvc
1036                        WHERE fvc.check_id = ac.check_id
1037                          AND fvc.org_id = ac.org_id);
1038 
1039     EXCEPTION
1040     WHEN OTHERS THEN
1041       l_err_code := SQLCODE;
1042       l_err_stage := SQLERRM;
1043       X_retcode:=2;
1044       fv_utility.log_mesg(fnd_log.level_exception,l_module_name||' insert fv_voided_checks1',l_err_stage);
1045     END;
1046 
1047    l_status_code:='SUCCESS';
1048 
1049     OPEN cur_treas_conf ;
1050     LOOP
1051         FETCH cur_treas_conf INTO treas_conf_rec;
1052         EXIT WHEN (l_status_code <> 'SUCCESS' OR cur_treas_conf%NOTFOUND );
1053 
1054         l_status_code:='';
1055 
1056         l_void_count:=0;
1057 
1058            SELECT COUNT(ac.check_id) INTO l_void_count
1059            FROM   ap_checks_all ac
1060               ,fv_treasury_confirmations_all ftc
1061               , fv_voided_checks fvc
1062             WHERE ftc.treasury_confirmation_id = treas_conf_rec.TREASURY_CONFIRMATION_ID
1063                 AND   ftc.payment_instruction_id   = ac.payment_instruction_id
1064                 AND   ac.org_id                   =  g_org_id
1065                 AND  ac.org_id                     = ftc.org_id
1066                 AND   ac.void_date IS NOT NULL
1067                 AND fvc.check_id = ac.check_id
1068                 AND fvc.processed_flag = 'U';
1069 
1070         IF l_void_count <> 0 THEN
1071         create_treasury_payment_event(l_calling_sequence,
1072                                       'TREASURY_VOID',
1073                                       treas_conf_rec.TREASURY_CONFIRMATION_ID,
1074                                       l_status_code,
1075                                       l_return_status);
1076 
1077         BEGIN
1078 
1079            IF (l_status_code = 'SUCCESS') THEN
1080 
1081             UPDATE fv_voided_checks
1082                SET processed_flag = 'P'
1083              WHERE processed_flag = 'U'
1084                AND org_id = g_org_id
1085                and check_id in ( select check_id
1086                                  from fv_treasury_confirmations_all fvtreas  ,
1087                                       ap_checks_all ac
1088                                  where
1089                                  fvtreas.org_id = g_org_id
1090                                  and ac.org_id = fvtreas.org_id
1091                                  and fvtreas.treasury_confirmation_id = treas_conf_rec.TREASURY_CONFIRMATION_ID
1092                                  and fvtreas.payment_instruction_id = ac.payment_instruction_id
1093                                  and ac.void_date is not null
1094                                  );
1095             END IF;
1096 
1097          EXCEPTION
1098                 WHEN OTHERS THEN
1099                       l_err_code := SQLCODE;
1100                       l_err_stage := SQLERRM;
1101                       fv_utility.log_mesg(fnd_log.level_exception,l_module_name||
1102                       'update fv_voided_checks1',l_err_stage);
1103         END;
1104      ELSE
1105         l_status_code:='SUCCESS';
1106      END IF ;
1107 
1108     END LOOP;
1109     CLOSE cur_treas_conf ;
1110 /*
1111     BEGIN
1112         IF (l_status_code = 'SUCCESS') THEN
1113             UPDATE fv_voided_checks
1114                SET processed_flag = 'P'
1115              WHERE processed_flag = 'U'
1116                AND org_id = g_org_id;
1117         ELSE
1118             UPDATE fv_voided_checks
1119                SET processed_flag = 'X'
1120              WHERE processed_flag = 'U'
1121                AND org_id = g_org_id;
1122 
1123         END IF;
1124      EXCEPTION
1125             WHEN OTHERS THEN
1126               l_err_code := SQLCODE;
1127               l_err_stage := SQLERRM;
1128               fv_utility.log_mesg(fnd_log.level_exception,l_module_name||'update fv_voided_checks1',l_err_stage);
1129     END;
1130 */
1131 
1132 fv_utility.debug_mesg(fnd_log.level_statement,l_module_name,'End Of Void');
1133 X_retcode:=0;
1134  END Void;
1135 
1136 
1137 END FV_TREASURY_PAYMENTS_PKG;
1138 
1139 
1140 
1141 
1142