[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