DBA Data[Home] [Help]

PACKAGE BODY: APPS.AR_POSTBATCH_PARALLEL

Source


1 PACKAGE BODY AR_POSTBATCH_PARALLEL AS
2 /* $Header: ARPBMPB.pls 120.3 2010/03/25 14:26:50 aghoraka noship $ */
3 PG_DEBUG	varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
4 G_ERROR		varchar2(1) := 'N';
5 G_USER_ID   	number;
6 G_CONC_PROGRAM_ID   number;
7 G_CONC_REQUEST_ID   number;
8 G_PROG_APPL_ID      number;
9 
10 /*===========================================================================+
11  | PROCEDURE                                                                 |
12  |   submit_postbatch_parallel() - Submit child requests for the processing  |
13  |                    of postbatch through submit_subrequest(). It makes a   |
14  |                    call to update_batch_after_process() to update the     |
15  |                    batch status after all the child requests are completed|
16  | DESCRIPTION                                                               |
17  |      Submits child requests.                                              |
18  |									     |
19  | SCOPE - PUBLIC                                                            |
20  |									     |
21  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
22  |      arp_util.debug - debug procedure                                     |
23  |      arp_standard.debug() - debug procedure                               |
24  |      FND_REQUEST.wait_for_request                                         |
25  | ARGUMENTS  : IN:                     				     |
26  |                 p_org_id - Org ID                                         |
27  |                 p_batch_id - Batch Id                                     |
28  |                 p_transmission_id - Lockbox transmission ID               |
29  |                 p_total_workers - Number of workers                       |
30  |                                                                           |
31  |              OUT:  P_ERRBUF                                               |
32  |                    P_RETCODE                                              |
33  | RETURNS    : NONE                    				     |
34  |                                                                           |
35  | NOTES -                                                                   |
36  |                                                                           |
37  | MODIFICATION HISTORY -  09/01/2008 - Created by AGHORAKA	     	     |
38  |                         01/02/2008 - Modified parameter list.             |
39  |                        Added parameter p_app_unearn_disc - 24/03/2010     |
40  |                        for ER 9288902                                     |
41  +===========================================================================*/
42 
43 PROCEDURE submit_postbatch_parallel(
44           P_ERRBUF                          OUT NOCOPY VARCHAR2,
45 	  P_RETCODE                         OUT NOCOPY NUMBER,
46 	  p_org_id                          IN NUMBER,
47 	  p_batch_id                        IN NUMBER,
48 	  p_transmission_id                 IN NUMBER,
49 	  p_app_unearn_disc                 IN VARCHAR2,
50 	  p_total_workers                   IN NUMBER DEFAULT 1 ) AS
51 
52   l_worker_number 		NUMBER ;
53   l_complete      		BOOLEAN := FALSE;
54   l_batch_applied_status    	ar_batches.batch_applied_status%TYPE := 'POSTBATCH_WAITING';
55   l_ct_cnt        		NUMBER;
56   l_ct_amt	  		NUMBER;
57   l_locked_status		VARCHAR2(10);
58   l_batch_id			ar_batches.batch_id%TYPE;
59   l_excep_code			NUMBER(2);
60   l_matched_claim_creation	VARCHAR2(2);
61   l_matched_claim_excl_cm	VARCHAR2(2);
62   l_return_status		VARCHAR2(1);
63   l_status			ar_batches.status%TYPE;
64   l_allow_unearn_disc           VARCHAR2(1);
65   l_app_unearn_disc             VARCHAR2(1);
66 
67   CURSOR  qcbatch IS
68        SELECT	ab.name batch_name,
69 		abs.name batch_source_name,
70 		ab.batch_date,
71 		ab.gl_date,
72 		ab.deposit_date,
73 		ab.status,
74 		ab.comments,
75 		ab.batch_applied_status,
76 		ab.control_count,
77 		ab.control_amount,
78 		cba.bank_account_name,
79 		cba.bank_account_num,
80 		ab.currency_code,
81 		to_number(to_char(ab.gl_date, 'J')),
82 		to_number(to_char(ab.deposit_date, 'J'))
83 	FROM	ar_batches ab,
84                 ar_batch_sources abs,
85 	        ce_bank_accounts cba,
86                 ce_bank_acct_uses_all ba
87 	WHERE	ab.batch_source_id = abs.batch_source_id
88 	AND	ab.remit_bank_acct_use_id
89 		= ba.bank_acct_use_id (+)
90 	AND     ba.bank_account_id = cba.bank_account_id (+)
91         AND     ab.org_id = ba.org_id
92 	AND	ab.batch_id = p_batch_id;
93 
94 
95   CURSOR lbbatch IS
96         SELECT	ab.name batch_name,
97 		abs.name batch_source_name,
98 		ab.batch_date,
99 		ab.gl_date,
100 		ab.deposit_date,
101 		ab.status,
102 		ab.comments,
103 		ab.batch_applied_status,
104 		ab.control_count,
105 		ab.control_amount,
106 		cba.bank_account_name,
107 		cba.bank_account_num,
108 		ab.currency_code,
109 		to_number(to_char(ab.gl_date, 'J')),
110 		to_number(to_char(ab.deposit_date, 'J')),
111 		ab.batch_id
112 	FROM	ar_batches ab,
113                 ar_batch_sources abs,
114 	        ce_bank_accounts cba,
115                 ce_bank_acct_uses_all ba
116 	WHERE	ab.batch_source_id = abs.batch_source_id
117 	AND	ab.remit_bank_acct_use_id
118 		= ba.bank_acct_use_id
122 	AND	ab.transmission_id = p_transmission_id
119         AND     cba.bank_account_id = ba.bank_account_id
120 	AND	ab.batch_applied_status = l_batch_applied_status
121         AND     ab.org_id = ba.org_id
123 	ORDER BY ab.batch_id;
124 
125   lbr lbbatch%ROWTYPE;
126   qcr qcbatch%ROWTYPE;
127 
128   TYPE req_status_typ  IS RECORD (
129     request_id       NUMBER(15),
130     dev_phase        VARCHAR2(255),
131     dev_status       VARCHAR2(255),
132     message          VARCHAR2(2000),
133     phase            VARCHAR2(255),
134     status           VARCHAR2(255));
135 
136 
137   TYPE req_status_tab_typ   IS TABLE OF req_status_typ INDEX BY BINARY_INTEGER;
138 
139   l_req_status_tab   req_status_tab_typ;
140 
141  /*===========================================================================+
142  | PROCEDURE                                                                 |
143  |   submit_subrequest() - This process submits Postbatch process            |
144  | DESCRIPTION                                                               |
145  |      Submits postbatch requests.                                          |
146  |									     |
147  | SCOPE -                                                                   |
148  |									     |
149  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
150  |      arp_util.debug - debug procedure                                     |
151  |      FND_REQUEST.submit_request                                           |
152  | ARGUMENTS  : IN:                     				     |
153  |                 p_worker_number - Worker Number                           |
154  |                 p_org_id - Org_id                                         |
155  |                                                                           |
156  |              OUT:     None                                                |
157  | RETURNS    : NONE                    				     |
158  |                                                                           |
159  | NOTES -                                                                   |
160  |                                                                           |
161  | MODIFICATION HISTORY -  09/01/2008 - Created by AGHORAKA	     	     |
162  +===========================================================================*/
163 
164   PROCEDURE submit_subrequest (p_worker_number IN NUMBER,
165                                p_app_unearn_disc IN VARCHAR2,
166                                p_org_id IN NUMBER) IS
167     l_request_id NUMBER(15);
168     BEGIN
169 	fnd_file.put_line(FND_FILE.LOG, 'submit_subrequest()+');
170 
171 	FND_REQUEST.SET_ORG_ID(p_org_id);
172 
173 	l_request_id := FND_REQUEST.submit_request( 'AR', 'ARCABP',
174                                                 'Submit Post Batch',
175                                                 SYSDATE,
176                                                 FALSE,
177                                                 '1',
178                                                 NVL(p_batch_id, -1),
179                                                 arp_standard.sysparm.set_of_books_id,
180                                                 p_worker_number,
181                                                 p_total_workers,
182                                                 p_app_unearn_disc, -- ER 9288902
183                                                 NVL(p_transmission_id, -1),
184                                                 p_org_id);
185 
186 	IF (l_request_id = 0) THEN
187 	    arp_util.debug('Can not start for worker_id: ' ||p_worker_number );
188 	    P_ERRBUF := fnd_Message.get;
189 	    P_RETCODE := 2;
190 	    return;
191 	ELSE
192 	    commit;
193 	    arp_util.debug('child request id: ' ||l_request_id || ' started for worker_id: ' ||p_worker_number );
194 	END IF;
195 
196 	 l_req_status_tab(p_worker_number).request_id := l_request_id;
197 	 arp_util.debug('submit_subrequest()-');
198 
199     END submit_subrequest;
200 
201  /*===========================================================================+
202  | PROCEDURE                                                                 |
203  |   update_batch_after_process() -This process updates the batch status     |
204  |   after all the receipts in the batch are processed by ARCABP.            |
205  | DESCRIPTION                                                               |
206  |   Updates the batch_applied_status of the batch to "PROCESSED'            |
207  |   and status to 'CL'/'OP' 						     |
208  | SCOPE -                                                                   |
209  |									     |
210  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
211  |                                                                           |
212  | ARGUMENTS  : IN:                     				     |
213  |                 p_batch_id - Batch ID                                     |
214  |                 p_batch_applied_status - Batch Applied Status             |
215  |                 p_ct_cnt - Control Count                                  |
216  |                 p_ct_amt - Control Amount                                 |
217  |              OUT:     None                                                |
218  | RETURNS    : NONE                    				     |
219  |                                                                           |
220  | NOTES -                                                                   |
221  |                                                                           |
222  | MODIFICATION HISTORY -  09/01/2008 - Created by AGHORAKA	     	     |
223  +===========================================================================*/
224 
225 
226     PROCEDURE update_batch_after_process( p_batch_id ar_batches.batch_id%TYPE,
227 					p_batch_applied_status ar_batches.batch_applied_status%TYPE,
228 					p_ct_cnt	       NUMBER,
229 					p_ct_amt	       NUMBER
233     l_err_receipt_cnt		NUMBER;
230 				      ) AS
231     l_act_app_cnt		NUMBER;
232     l_act_app_amt		NUMBER;
234     BEGIN
235     fnd_file.put_line( FND_FILE.LOG, 'Process_batch_for_update()+');
236 
237     IF ( p_batch_applied_status <> 'PROCESSED' AND
238          p_batch_applied_status <> 'POSTBATCH_WAITING') THEN
239 
240 
241            fnd_file.put_line(FND_FILE.LOG, 'Batch_id : '||p_batch_id||' : Control count : '||p_ct_cnt||' : Control Amount : '||p_ct_amt);
242 
243 		fnd_file.put_line( FND_FILE.LOG, ' Getting the applied count and applied amount');
244 
245 		SELECT count(*), nvl(sum(cr.amount),0)
246 		INTO   l_act_app_cnt, l_act_app_amt
247 		FROM   ar_cash_receipts cr,
248 		       ar_cash_receipt_history crh
249 	        WHERE  cr.cash_receipt_id = crh.cash_receipt_id
250 		AND    crh.batch_id = p_batch_id
251 		AND    cr.status = 'APP';
252 
253 		IF (( l_act_app_cnt = p_ct_cnt ) AND ( l_act_app_amt = p_ct_amt )) THEN
254 			l_status := 'CL';
255 		ELSE
256 			l_status := 'OP';
257 		END IF;
258 
259 		SELECT COUNT(1)
260 		INTO l_err_receipt_cnt
261 		FROM ar_interim_cash_receipts
262 		WHERE batch_id = p_batch_id;
263 
264 		IF ( l_err_receipt_cnt = 0) THEN
265 			fnd_file.put_line( FND_FILE.LOG, 'Updating batch_applied_status to PROCESSED.' );
266 			UPDATE  ar_batches
267 			SET	batch_applied_status = 'PROCESSED',
268     			status = l_status,
269     			last_updated_by = G_USER_ID,
270     			last_update_date = sysdate,
271    		    	program_id = G_CONC_PROGRAM_ID,
272         		request_id = G_CONC_REQUEST_ID,
273         		program_application_id = G_PROG_APPL_ID,
274         		program_update_date = sysdate
275 			WHERE	batch_id = p_batch_id;
276 		ELSE
277 			fnd_file.put_line( FND_FILE.LOG, 'Updating batch_applied_status to POSTBATCH_WAITING.' );
278 			update_batch_for_rerun( l_status, p_batch_id);
279 		END IF;
280 
281 		commit;
282 		fnd_file.put_line( FND_FILE.LOG, 'End of Posting');
283 
284     END IF;
285     END update_batch_after_process;
286 
287 BEGIN
288     fnd_file.put_line( FND_FILE.LOG, 'submit_postbatch_parallel()+');
289     /* Initialize the global values */
290     G_USER_ID   := FND_GLOBAL.user_id;
291     G_CONC_PROGRAM_ID := FND_GLOBAL.conc_program_id;
295     mo_global.init('AR');
292     G_CONC_REQUEST_ID := FND_GLOBAL.conc_request_id;
293     G_PROG_APPL_ID  := FND_GLOBAL.prog_appl_id;
294 
296 
297     IF p_org_id is not null THEN
298     	mo_global.set_policy_context('S', p_org_id);
299     	arp_standard.init_standard(p_org_id);
300     END IF;
301 
302     IF p_batch_id IS NULL AND p_transmission_id IS NULL THEN
303 	 FND_MESSAGE.set_name ('AR', 'AR_ARGUEMENTS_FAIL' );
304      APP_EXCEPTION.raise_exception;
305     END IF;
306 
307     IF PG_DEBUG in ('Y', 'C') THEN
308 	 arp_standard.debug(   'Org_id = '||p_org_id );
309 	 arp_standard.debug(   'Batch Id = '||p_batch_id );
310          arp_standard.debug(   'Transmission_id = '||p_transmission_id );
311          arp_standard.debug(   ' Apply Unearned Discount = '||p_app_unearn_disc);
312 	 arp_standard.debug(   'Total Workers = '||p_total_workers );
313     END IF;
314     /* ******************************************************************** *
315      *                      Added for ER 9288902                            *
316      * Apply Unearned Discount option is dependent on the 'Allow Unearned   *
317      * Discount' value set at system parameters. If this value is set to 'N'*
318      * in system parameters then unearned discounts are not calculated even *
319      * if user selects 'Y' for Apply unearned Discounts during the submission
320      * of Postbatch Master Program                                          *
321      * ******************************************************************** */
322     l_app_unearn_disc := NVL(p_app_unearn_disc, 'N');
323     SELECT NVL(unearned_discount, 'N')
324     INTO   l_allow_unearn_disc
325     FROM   ar_system_parameters;
326 
327     IF l_allow_unearn_disc = 'N' AND l_app_unearn_disc = 'Y' THEN
328         l_app_unearn_disc := 'N';
329         fnd_file.put(FND_FILE.LOG, 'NOTE : Allow Unearned Discounts is set to NO in system options.');
330         fnd_file.put_line(FND_FILE.LOG, ' Hence QuickCash CAN NOT apply unearned discounts during this run');
331         fnd_file.put(FND_FILE.LOG, '       If you want QuickCash to calculate unearned discounts during application, then ');
332         fnd_file.put(FND_FILE.LOG, 'set ''Allow Unearned Discounts'' to ''Y'' in');
333         fnd_file.put_line(FND_FILE.LOG, ' system options and then submit ''Postbatch Master Program''');
334         fnd_file.put(FND_FILE.LOG, ' with ''Apply Unearned Discounts'' parameter set to ''Yes''');
335     END IF;
336     -- Validate batches supplied in the parameters.
337     IF NVL(p_transmission_id,-1) <> -1 THEN
338     -- This is a Lockbox batch.
342 			fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_BEEN_PROCESSED'));
339 	FOR lbr IN lbbatch LOOP
340 		IF lbr.batch_applied_status = 'PROCESSED' THEN
341 			fnd_file.put( FND_FILE.OUTPUT, '***' || lbr.batch_name ||' : ');
343 		ELSIF lbr.batch_applied_status <> 'POSTBATCH_WAITING' THEN
344 			fnd_file.put( FND_FILE.OUTPUT, '***' || lbr.batch_name ||' : ');
345 			fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_NOT_VALID_BATCH'));
346 		ELSE
347 			  SELECT 'locked'
348 			  INTO   l_locked_status
349 	                  FROM   ar_batches
350 			  WHERE  batch_id = lbr.batch_id
351 			  FOR UPDATE OF	batch_applied_status, status,
352 				last_update_date, last_updated_by;
353 			 UPDATE  ar_batches
354 			 SET  batch_applied_status = 'IN_PROCESS',
355 			      last_update_date = sysdate,
356 			      last_updated_by  = G_USER_ID,
357 			      program_id = G_CONC_PROGRAM_ID,
358 			      request_id = G_CONC_REQUEST_ID,
359 			      program_application_id = G_PROG_APPL_ID,
360 			      program_update_date = sysdate
361 		         WHERE  batch_id = lbr.batch_id;
362 			 l_batch_applied_status := 'IN_PROCESS';
363 		END IF;
364 	END LOOP;
365 	IF l_batch_applied_status <> 'IN_PROCESS' THEN
366 		fnd_file.put_line( FND_FILE.OUTPUT, '**** No Batches To Process ****');
367 		goto leave_program;
368 	END IF;
369     ELSE
370     -- This is a Quick cash batch.
371 	FOR qcr IN qcbatch LOOP
372 		IF qcr.batch_applied_status = 'PROCESSED' THEN
373 			fnd_file.put( FND_FILE.OUTPUT, '***' || qcr.batch_name ||' : ');
374 			fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_BEEN_PROCESSED'));
375 			goto leave_program;
376 		ELSIF qcr.batch_applied_status <> 'POSTBATCH_WAITING' THEN
377 			fnd_file.put( FND_FILE.OUTPUT, '***' || qcr.batch_name ||' : ');
378 			fnd_file.put_line( FND_FILE.OUTPUT, fnd_message.get_string('AR', 'ARCABP_NOT_VALID_BATCH'));
379 			goto leave_program;
380 		ELSE
381 			SELECT 'locked'
382 			INTO   l_locked_status
383 			FROM   ar_batches
384 			WHERE  batch_id = p_batch_id
385 			FOR UPDATE OF	batch_applied_status, status,
386 					last_update_date, last_updated_by;
387 			UPDATE  ar_batches
388 			SET  batch_applied_status = 'IN_PROCESS',
389 			      last_update_date = sysdate,
390 			      last_updated_by  = G_USER_ID,
391 			      program_id = G_CONC_PROGRAM_ID,
392 			      request_id = G_CONC_REQUEST_ID,
393 			      program_application_id = G_PROG_APPL_ID,
394 			      program_update_date = sysdate
395 		         WHERE  batch_id = p_batch_id;
396 		END IF;
397 	END LOOP;
398 
399     END IF;
400     /* ------------------------------------------------------------- *
401      *                  Added for Bug 7141803                        *
402      * We may need to gather stats on interim tables based on the    *
403      * profile option 'AR_LB_QC_GATHER_STATS'. By default stats will *
404      * always be gathered unless the profile option is set to 'NO'   *
405      * ------------------------------------------------------------- */
406     IF nvl(fnd_profile.value_specific('AR_LB_QC_GATHER_STATS',
407                                         G_USER_ID), 'Y') <> 'N' THEN
408       DECLARE
409       	l_schema      VARCHAR2(30);
410 	l_status      VARCHAR2(1);
411 	l_industry    VARCHAR2(1);
412 	l_tname1      VARCHAR2(30) := 'AR_INTERIM_CASH_RECEIPTS_ALL';
413 	l_tname2      VARCHAR2(30) := 'AR_INTERIM_CASH_RCPT_LINES_ALL';
414 	no_product_info exception;
415       BEGIN
416       	IF (NOT fnd_installation.get_app_info(
417 		 application_short_name=>'AR'
418 		, status => l_status
419 		, industry => l_industry
420 		, oracle_schema => l_schema)) THEN
421 		fnd_file.put_line(fnd_file.log, 'EXCEPTION:Failed to get information for AR');
422 		RAISE no_product_info;
423 	END IF;
424 
425         fnd_stats.gather_table_stats(ownname=>l_schema,
426                                     tabname=>l_tname1);
427         fnd_stats.gather_table_stats(ownname=>l_schema,
428                                     tabname=>l_tname2);
429       EXCEPTION
430 	      WHEN OTHERS THEN
431          	fnd_file.put_line(fnd_file.log, 'Error in Gather stats' || SQLERRM(SQLCODE));
432          	RAISE;
433       END;
434       fnd_file.put_line(fnd_file.LOG, 'AR:ARPBMPB Gathered Stats on Interim Tables');
435     END IF;
436     --Invoke the child programs
437     FOR l_worker_number IN 1..p_total_workers LOOP
438 	fnd_file.put_line(FND_FILE.LOG, 'worker # : ' || l_worker_number );
439 	submit_subrequest (l_worker_number, l_app_unearn_disc, p_org_id);
440     END LOOP;
441 
442     IF PG_DEBUG in ('Y', 'C') THEN
443 	arp_standard.debug ( 'The Master program waits for child processes');
444     END IF;
445 
446     -- Wait for the completion of the submitted requests
447     FOR i in 1..p_total_workers LOOP
448 
449 	l_complete := FND_CONCURRENT.WAIT_FOR_REQUEST(
450 		   request_id   => l_req_status_tab(i).request_id,
451 		   interval     => 30,
452 		   max_wait     =>144000,
453 		   phase        =>l_req_status_tab(i).phase,
454 		   status       =>l_req_status_tab(i).status,
455 		   dev_phase    =>l_req_status_tab(i).dev_phase,
456 		   dev_status   =>l_req_status_tab(i).dev_status,
457 		   message      =>l_req_status_tab(i).message);
458 
459 	IF l_req_status_tab(i).dev_phase <> 'COMPLETE' THEN
460 	    P_RETCODE := 2;
461 	    fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' has a phase '||l_req_status_tab(i).dev_phase);
462 	ELSIF l_req_status_tab(i).dev_phase = 'COMPLETE'
463 	       AND l_req_status_tab(i).dev_status <> 'NORMAL' THEN
464 	    P_RETCODE := 2;
465 	    fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' completed with status '||l_req_status_tab(i).dev_status);
466 	ELSE
467 	    fnd_file.put_line( FND_FILE.LOG, 'Worker # '|| i||' completed successfully');
471 
468 	END IF;
469 
470     END LOOP;
472     fnd_file.put( FND_FILE.LOG, 'Return Code : ' || p_retcode);
473 
474    IF NVL( p_retcode, -1) = 2 THEN
475 	fnd_file.put_line( FND_FILE.LOG, ' - Child program failed.' );
476    ELSE
477 	fnd_file.put_line( FND_FILE.LOG, ' - Child programs completed successfully' );
478    END IF;
479 
480    IF NVL(p_transmission_id, -1) <> -1 THEN	/* Lockbox batch */
481     FOR lbr IN lbbatch LOOP
482 	update_batch_after_process( lbr.batch_id,
483 				  lbr.batch_applied_status,
484 				  lbr.control_count,
485 				  lbr.control_amount );
486     END LOOP;
487    ELSE
488     FOR qcr IN qcbatch LOOP			/* Quick cash batch */
489 	update_batch_after_process( p_batch_id,
490 				  qcr.batch_applied_status,
491 				  qcr.control_count,
492 				  qcr.control_amount );
493     END LOOP;
494    END IF;
495 
496    IF NVL( p_transmission_id, -1) <> -1 THEN
497 
498 	fnd_file.put_line( FND_FILE.LOG, 'Updating transmission status.');
499 
500 	UPDATE	ar_transmissions t
501 	SET	status = 'CL',
502 		last_updated_by = G_USER_ID,
503 		last_update_date = trunc(sysdate)
504 	WHERE	transmission_id = p_transmission_id
505 	AND	NOT EXISTS (	SELECT	'pending post'
506 				FROM	ar_batches b
507 				WHERE	b.transmission_id =
508 					t.transmission_id
509 				AND	batch_applied_status
510 					= 'POSTBATCH_WAITING' )
511 	AND	NOT EXISTS (	SELECT	'pending transfer'
512 				FROM	ar_payments_interface pi
513 				WHERE	pi.transmission_id =
514 					t.transmission_id);
515     END IF;
516 
517     AR_BUS_EVENT_COVER.Raise_PostBatch_Run_Event( G_CONC_REQUEST_ID );
518 
519     <<leave_program>>
520 	commit;
521         fnd_file.put_line( FND_FILE.LOG, 'submit_postbatch_parallel()-');
522 
523 EXCEPTION
524 
525   WHEN OTHERS THEN
526     RAISE ;
527 
528 END submit_postbatch_parallel;
529 
530 /*===========================================================================+
531  | PROCEDURE                                                                 |
532  |   update_batch_for_rerun() - If any error occurs during the postbatch     |
533  |   process, the batch_applied_status is put back to 'POSTBATCH_WAITING'    |
534  |   for rerun at later time.                                                |
535  | DESCRIPTION                                                               |
536  |     Updates batch_applied_Status to 'POSTBATCH_WAITING'                   |
537  |									     |
538  | SCOPE - PUBLIC                                                            |
539  |									     |
540  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
541  | ARGUMENTS  : IN:                     				     |
542  |                 p_status - Batch Status                                   |
543  |                 p_batch_id - Batch Id                                     |
544  |                                                                           |
545  |              OUT:     None                                                |
546  | RETURNS    : NONE                    				     |
547  |                                                                           |
548  | NOTES -                                                                   |
549  |                                                                           |
550  | MODIFICATION HISTORY -  09/01/2008 - Created by AGHORAKA	     	     |
551  +===========================================================================*/
552 
553 
554 PROCEDURE update_batch_for_rerun( p_status    IN ar_batches.status%TYPE,
555 				  p_batch_id  IN NUMBER) AS
556 BEGIN
557 	fnd_file.put_line( FND_FILE.LOG, 'update_batch_for_rerun()+');
558 
559 	UPDATE ar_batches
560 	SET    batch_applied_status = 'POSTBATCH_WAITING',
561 	       status = p_status,
562 	       last_updated_by = G_USER_ID,
563 	       last_update_date = sysdate,
564                program_id = G_CONC_PROGRAM_ID,
565                request_id = G_CONC_REQUEST_ID,
566                program_application_id = G_PROG_APPL_ID,
567                program_update_date = sysdate
568 	WHERE batch_id = p_batch_id;
569 
570 	commit;
571 
572 	fnd_file.put_line( FND_FILE.LOG, 'update_batch_for_rerun()-');
573 END update_batch_for_rerun;
574 
575 END AR_POSTBATCH_PARALLEL;