[Home] [Help]
PACKAGE BODY: APPS.AR_BILLS_MAINTAIN_PUB
Source
1 PACKAGE BODY AR_BILLS_MAINTAIN_PUB AS
2 /* $Header: ARBRMAIB.pls 120.11.12010000.2 2008/11/26 13:58:06 ankuagar ship $ */
3
4
5 /* =======================================================================
6 | Global Data Types
7 * ======================================================================*/
8
9 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AR_BILLS_MAINTAIN_PUB';
10
11 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
12 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
13 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
14 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
15 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
16 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
17
18
19 /* =======================================================================
20 | Bills Receivable status constants
21 * ======================================================================*/
22
23 C_INCOMPLETE CONSTANT VARCHAR2(30) := 'INCOMPLETE';
24 C_PENDING_REMITTANCE CONSTANT VARCHAR2(30) := 'PENDING_REMITTANCE';
25 C_PENDING_ACCEPTANCE CONSTANT VARCHAR2(30) := 'PENDING_ACCEPTANCE';
26 C_MATURED_PEND_RISK_ELIM CONSTANT VARCHAR2(30) := 'MATURED_PEND_RISK_ELIMINATION';
27 C_CLOSED CONSTANT VARCHAR2(30) := 'CLOSED';
28 C_REMITTED CONSTANT VARCHAR2(30) := 'REMITTED';
29 C_PROTESTED CONSTANT VARCHAR2(30) := 'PROTESTED';
30 C_FACTORED CONSTANT VARCHAR2(30) := 'FACTORED';
31 C_ENDORSED CONSTANT VARCHAR2(30) := 'ENDORSED';
32
33
34 /* =======================================================================
35 | Bills Receivable event constants
36 * ======================================================================*/
37
38 C_MATURITY_DATE CONSTANT VARCHAR2(30) := 'MATURITY_DATE';
39 C_MATURITY_DATE_UPDATED CONSTANT VARCHAR2(30) := 'MATURITY_DATE_UPDATED';
40 C_FORMATTED CONSTANT VARCHAR2(30) := 'FORMATTED';
41 C_COMPLETED CONSTANT VARCHAR2(30) := 'COMPLETED';
42 C_ACCEPTED CONSTANT VARCHAR2(30) := 'ACCEPTED';
43 C_SELECTED_REMITTANCE CONSTANT VARCHAR2(30) := 'SELECTED_REMITTANCE';
44 C_DESELECTED_REMITTANCE CONSTANT VARCHAR2(30) := 'DESELECTED_REMITTANCE';
45 C_CANCELLED CONSTANT VARCHAR2(30) := 'CANCELLED';
46 C_RISK_ELIMINATED CONSTANT VARCHAR2(30) := 'RISK_ELIMINATED';
47 C_RISK_UNELIMINATED CONSTANT VARCHAR2(30) := 'RISK_UNELIMINATED';
48 C_RECALLED CONSTANT VARCHAR2(30) := 'RECALLED';
49 C_EXCHANGED CONSTANT VARCHAR2(30) := 'EXCHANGED';
50 C_RELEASE_HOLD CONSTANT VARCHAR2(30) := 'RELEASE_HOLD';
51
52
53 /* =======================================================================
54 | Bills Receivable action constants
55 * ======================================================================*/
56
57
58 C_COMPLETE CONSTANT VARCHAR2(30) := 'COMPLETE';
59 C_ACCEPT CONSTANT VARCHAR2(30) := 'ACCEPT';
60 C_COMPLETE_ACC CONSTANT VARCHAR2(30) := 'COMPLETE_ACC';
61 C_UNCOMPLETE CONSTANT VARCHAR2(30) := 'UNCOMPLETE';
62 C_HOLD CONSTANT VARCHAR2(30) := 'HOLD';
63 C_UNHOLD CONSTANT VARCHAR2(30) := 'RELEASE HOLD';
64 C_SELECT_REMIT CONSTANT VARCHAR2(30) := 'SELECT_REMIT';
65 C_DESELECT_REMIT CONSTANT VARCHAR2(30) := 'DESELECT_REMIT';
66 C_CANCEL CONSTANT VARCHAR2(30) := 'CANCEL';
67 C_UNPAID CONSTANT VARCHAR2(30) := 'UNPAID';
68 C_REMIT_STANDARD CONSTANT VARCHAR2(30) := 'REMIT_STANDARD';
69 C_FACTORE CONSTANT VARCHAR2(30) := 'FACTORE';
70 C_FACTORE_RECOURSE CONSTANT VARCHAR2(30) := 'FACTORE_RECOURSE';
71 C_RECALL CONSTANT VARCHAR2(30) := 'RECALL';
72 C_ELIMINATE_RISK CONSTANT VARCHAR2(30) := 'RISK ELIMINATION';
73 C_UNELIMINATE_RISK CONSTANT VARCHAR2(30) := 'REESTABLISH RISK';
74 C_PROTEST CONSTANT VARCHAR2(30) := 'PROTEST';
75 C_ENDORSE CONSTANT VARCHAR2(30) := 'ENDORSE';
76 C_ENDORSE_RECOURSE CONSTANT VARCHAR2(30) := 'ENDORSE_RECOURSE';
77 C_RESTATE CONSTANT VARCHAR2(30) := 'RESTATE';
78 C_EXCHANGE CONSTANT VARCHAR2(30) := 'EXCHANGE';
79 C_EXCHANGE_COMPLETE CONSTANT VARCHAR2(30) := 'EXCHANGE_COMPLETE';
80 C_EXCHANGE_UNCOMPLETE CONSTANT VARCHAR2(30) := 'EXCHANGE_UNCOMPLETE';
81 C_DELETE CONSTANT VARCHAR2(30) := 'DELETE';
82 C_APPROVE_REMIT CONSTANT VARCHAR2(30) := 'REMITTANCE APPROVAL';
83
84
85 /* =======================================================================
86 | Bills Receivable remittance method code constants
87 * ======================================================================*/
88
89 C_STANDARD CONSTANT VARCHAR2(30) := 'STANDARD';
90 C_FACTORING CONSTANT VARCHAR2(30) := 'FACTORING';
91
92
93 /* =======================================================================
94 | Parameter p_created_from for the Receipt API
95 * ======================================================================*/
96
97 C_BR_REMITTED CONSTANT VARCHAR2(30) := 'BR_REMITTED';
98 C_BR_FACTORED_RECOURSE CONSTANT VARCHAR2(30) := 'BR_FACTORED_WITH_RECOURSE';
99 C_BR_FACTORED CONSTANT VARCHAR2(30) := 'BR_FACTORED_WITHOUT_RECOURSE';
100
101
102
103 /* =======================================================================
104 | Action_Rec : Record used for the procedure validate_actions
105 * ======================================================================*/
106
107 TYPE Action_Rec_Type IS RECORD (
108 complete_flag VARCHAR2(1),
109 uncomplete_flag VARCHAR2(1),
110 accept_flag VARCHAR2(1),
111 cancel_flag VARCHAR2(1),
112 select_remit_flag VARCHAR2(1),
113 deselect_remit_flag VARCHAR2(1),
114 approve_remit_flag VARCHAR2(1),
115 hold_flag VARCHAR2(1),
116 unhold_flag VARCHAR2(1),
117 recall_flag VARCHAR2(1),
118 eliminate_flag VARCHAR2(1),
119 uneliminate_flag VARCHAR2(1),
120 unpaid_flag VARCHAR2(1),
121 protest_flag VARCHAR2(1),
122 endorse_flag VARCHAR2(1),
123 restate_flag VARCHAR2(1),
124 exchange_flag VARCHAR2(1),
125 delete_flag VARCHAR2(1));
126
127
128 C_ACTION_REC Action_Rec_Type;
129
130
131 API_exception EXCEPTION;
132
133
134 /*===========================================================================+
135 | PROCEDURE |
136 | Complete_BR |
137 | |
138 | DESCRIPTION |
139 | Completes a BR |
140 | |
141 | HISTORY |
142 | 01-OCT-02 V Crisostomo Bug 2533917 : p_old_trx_number datatype was |
143 | changed from NUMBER to VARCHAR2 to comply |
144 | with data model definition in RA_CUSTOMER_TRX|
145 | 25-MAY-05 V Crisostomo SSA-R12: pass org_id |
146 +===========================================================================*/
147
148
149 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
150
151 PROCEDURE Complete_BR (
152
153 -- ***** Standard API parameters *****
154
155 p_api_version IN NUMBER,
156 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
157 p_commit IN VARCHAR2 := FND_API.G_FALSE,
158 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
159 x_return_status OUT NOCOPY VARCHAR2,
160 x_msg_count OUT NOCOPY NUMBER,
161 x_msg_data OUT NOCOPY VARCHAR2,
162
163 -- ***** Input parameters *****
164
165 p_customer_trx_id IN NUMBER,
166
167 -- ***** Output parameters *****
168
169 p_trx_number OUT NOCOPY VARCHAR2,
170 p_doc_sequence_id OUT NOCOPY NUMBER,
171 p_doc_sequence_value OUT NOCOPY NUMBER,
172 p_old_trx_number OUT NOCOPY VARCHAR2, /* Bug 2533917 */
173 p_status OUT NOCOPY VARCHAR2)
174
175 IS
176
177 l_api_name CONSTANT VARCHAR2(20) := 'Complete_BR';
178 l_api_version CONSTANT NUMBER := 1.0;
179
180 l_trx_rec ra_customer_trx%ROWTYPE;
181 l_trh_rec ar_transaction_history%ROWTYPE;
182 l_ps_rec ar_payment_schedules%ROWTYPE;
183
184 l_doc_sequence_id NUMBER ;
185 l_doc_sequence_value NUMBER ;
186 l_trx_number VARCHAR2(20) ;
187 l_old_trx_number VARCHAR2(20) ;
188
189 l_acceptance_flag VARCHAR2(1) ;
190
191 l_action VARCHAR2(30) ;
192 l_action_rec action_rec_type ;
193
194 --Bug5051673
195 l_drawee_id ra_customer_trx.drawee_id%type;
196 l_drawee_site_use_id ra_customer_trx.drawee_site_use_id%type;
197 l_org_id ra_customer_trx.org_id%type;
198 l_payment_trxn_extension_id ra_customer_trx.payment_trxn_extension_id%type;
199 l_created_from ra_customer_trx.created_from%type;
200 l_instr_id iby_trxn_extensions_v.instr_assignment_id%type;
201
202
203 BEGIN
204
205 IF PG_DEBUG in ('Y', 'C') THEN
206 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Complete_BR()+ ');
207 END IF;
208
209 x_msg_count := NULL;
210 x_msg_data := NULL;
211
212 /*-----------------------------------------------+
213 | Standard start of API savepoint |
214 +-----------------------------------------------*/
215
216 SAVEPOINT Complete_BR_PVT;
217
218
219 /*-----------------------------------------------+
220 | Standard call to check for call compatibility |
221 +-----------------------------------------------*/
222
223 IF NOT FND_API.Compatible_API_Call( l_api_version ,
224 p_api_version ,
225 l_api_name ,
226 G_PKG_NAME )
227 THEN
228 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
229 END IF;
230
231
232 /*--------------------------------------------------------------+
233 | Initialize message list if p_init_msg_list is set to TRUE |
234 +--------------------------------------------------------------*/
235
236 IF FND_API.to_Boolean( p_init_msg_list ) THEN
237 FND_MSG_PUB.initialize;
238 END IF;
239
240
241 /*-----------------------------------------------+
242 | Initialize return status to SUCCESS |
243 +-----------------------------------------------*/
244
245 x_return_status := FND_API.G_RET_STS_SUCCESS;
246
247
248
249 /*------------------------------------------------+
250 | Bug 5051673 |
251 | Creation of Payment Extension Record |
252 +------------------------------------------------*/
253 select trx_number,drawee_id,drawee_site_use_id,org_id,payment_trxn_extension_id,
254 substr(created_from ,1,8)
255 into l_trx_number,l_drawee_id,l_drawee_site_use_id,l_org_id,l_payment_trxn_extension_id,
256 l_created_from
257 from ra_customer_trx
258 where customer_trx_id = p_customer_trx_id;
259
260 if l_payment_trxn_extension_id is null then
261 If substr(l_created_from,1,8) = 'ARBRCBAT' then
262 arp_standard.debug('Defaulting instrument Assign Id. ');
263
264 /* Bug724495, Bills Receivable batch program will create BR based on
265 the drawee bank account (instr_assign_id) irrespective of receipt
266 method set to One Per Customer or Per Customer Due Date or Per
267 Invoice or Per Payment Sschedule or Per Site or Per Site Due Date */
268
269 Begin
270 Select instr_assignment_id
271 Into l_instr_id
272 from ra_customer_Trx_lines brlines,
273 ra_customer_trx ct,
274 iby_trxn_extensions_v iby
275 where ct.customer_trx_id = brlines.br_ref_customer_trx_id
276 and ct.payment_trxn_extension_id = iby.trxn_extension_id
277 and brlines.customer_trx_id = p_customer_trx_id
278 and rownum = 1;
279 Exception
280 When others then
281 l_instr_id := Null ;
282 End;
283 Else
284 l_instr_id := Null;
285 End IF;
286 arp_standard.debug('Assign Id Value: ' ||l_instr_id );
287
288 AR_BILLS_CREATION_PUB.create_br_trxn_extension(
289 p_api_version => 1.0,
290 p_init_msg_list => p_init_msg_list,
291 p_commit => p_commit,
292 x_return_status => x_return_status,
293 x_msg_count => x_msg_count,
294 x_msg_data => x_msg_data,
295 p_customer_trx_id => p_CUSTOMER_TRX_ID,
296 p_trx_number => l_trx_number,
297 p_org_id => l_org_id,
298 p_drawee_id => l_drawee_id,
299 p_drawee_site_use_id => l_drawee_site_use_id,
300 p_payment_channel => 'BILLS_RECEIVABLE',
301 p_instrument_assign_id => l_instr_id,
302 p_payment_trxn_extn_id => l_payment_trxn_extension_id);
303
304 -- The values are based on FND_API. S, E, U (Success, Error, Unexpected
305 IF x_return_status <> 'S'
306 THEN
307 FND_MESSAGE.set_name( 'AR' , 'AR_BR_CANNOT_COMPLETE' );
308 FND_MESSAGE.set_token( 'BRNUM' , l_trx_rec.trx_number);
309 arp_standard.debug('Call to AR_BILLS_CREATION_PUB.create_br_trxn_extension Errored');
310 app_exception.raise_exception;
311 END IF;
312
313 update ra_customer_trx
314 set payment_trxn_extension_id = l_payment_trxn_extension_id
315 where customer_trx_id = p_customer_trx_id;
316
317 end if;
318
319
320
321 /*--------------------------------------------------------------------+
322 | ============ START OF API BODY - COMPLETE BR ===================|
323 +--------------------------------------------------------------------*/
324
325
326 /*-----------------------------------------------+
327 | Action Validation |
328 +-----------------------------------------------*/
329
330 l_action := C_COMPLETE;
331
332 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
333 p_customer_trx_id => p_customer_trx_id ,
334 p_complete_flag => C_ACTION_REC.complete_flag,
335 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag,
336 p_accept_flag => C_ACTION_REC.accept_flag,
337 p_cancel_flag => C_ACTION_REC.cancel_flag,
338 p_select_remit_flag => C_ACTION_REC.select_remit_flag,
339 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
340 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag,
341 p_hold_flag => C_ACTION_REC.hold_flag,
342 p_unhold_flag => C_ACTION_REC.unhold_flag,
343 p_recall_flag => C_ACTION_REC.recall_flag,
344 p_eliminate_flag => C_ACTION_REC.eliminate_flag,
345 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag,
346 p_unpaid_flag => C_ACTION_REC.unpaid_flag,
347 p_protest_flag => C_ACTION_REC.protest_flag,
348 p_endorse_flag => C_ACTION_REC.endorse_flag,
349 p_restate_flag => C_ACTION_REC.restate_flag,
350 p_exchange_flag => C_ACTION_REC.exchange_flag,
351 p_delete_flag => C_ACTION_REC.delete_flag);
352
353
354 -- Do not continue if the action is not allowed for the BR
355
356 IF (C_ACTION_REC.complete_flag <> 'Y')
357 THEN
358 IF PG_DEBUG in ('Y', 'C') THEN
359 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
360 END IF;
361 FND_MESSAGE.set_name( 'AR' , 'AR_BR_CANNOT_COMPLETE' );
362 FND_MESSAGE.set_token( 'BRNUM' , l_trx_rec.trx_number);
363 app_exception.raise_exception;
364 END IF;
365
366 ARP_CT_PKG.lock_fetch_p (l_trx_rec, p_customer_trx_id);
367
368
369 /*-----------------------------------------------+
370 | Data preparation |
371 +-----------------------------------------------*/
372
373 l_trh_rec.customer_trx_id := p_customer_trx_id;
374 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
375
376
377
378 /*-----------------------------------------------+
379 | Data Validation |
380 +-----------------------------------------------*/
381
382 AR_BILLS_MAINTAIN_VAL_PVT.validate_Complete_BR (l_trx_rec, l_trh_rec.gl_date);
383
384
385
386 /*-----------------------------------------------+
387 | Document Sequence Routine |
388 +-----------------------------------------------*/
389
390 AR_BILLS_MAINTAIN_LIB_PVT.get_doc_seq ( 222 ,
391 l_trx_rec ,
392 arp_global.set_of_books_id ,
393 'M' );
394
395 /*-----------------------------------------------+
396 | BR Completion |
397 +------------------------------------------------*/
398
399 IF (AR_BILLS_MAINTAIN_STATUS_PUB.is_acceptance_required(l_trx_rec.cust_trx_type_id))
400 THEN
401 AR_BILLS_MAINTAIN_LIB_PVT.Complete_Acc_Required (p_customer_trx_id);
402 l_trh_rec.postable_flag := 'N' ;
403 l_trh_rec.current_accounted_flag := 'N' ;
404 ELSE
405 AR_BILLS_MAINTAIN_LIB_PVT.Complete_OR_Accept (l_trh_rec);
406 l_trh_rec.postable_flag := 'Y' ;
407 l_trh_rec.current_accounted_flag := 'Y' ;
408 END IF;
409
410
411 /*-----------------------------------------------+
412 | Update the Complete Flag in the BR Header |
413 +------------------------------------------------*/
414
415 l_trx_rec.complete_flag := 'Y';
416
417 ARP_PROCESS_BR_HEADER.update_header (l_trx_rec, l_trx_rec.customer_trx_id);
418
419
420 /*-----------------------------------------------+
421 | Insertion in Transaction History Table |
422 +------------------------------------------------*/
423
424
425 -- Fetch the new status and new event of the BR
426
427 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
428 p_trx_rec => l_trx_rec ,
429 p_action => l_action ,
430 p_new_status => l_trh_rec.status,
431 p_new_event => l_trh_rec.event );
432
433 l_trh_rec.transaction_history_id:= NULL ;
434 l_trh_rec.current_record_flag := 'Y' ;
435 l_trh_rec.prv_trx_history_id := NULL ;
436 l_trh_rec.comments := NULL ;
437 l_trh_rec.posting_control_id := -3 ;
438 l_trh_rec.gl_posted_date := NULL ;
439 l_trh_rec.first_posted_record_flag := 'N' ;
440 l_trh_rec.created_from := 'ARBRMAIB' ;
441 l_trh_rec.batch_id := NULL ;
442 l_trh_rec.org_id := l_trx_rec.org_id;
443
444 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
445 l_trh_rec.transaction_history_id);
446
447 /*-----------------------------------------------+
448 | Output parameters |
449 +------------------------------------------------*/
450
451 p_trx_number := l_trx_rec.trx_number ;
452 p_doc_sequence_value := l_trx_rec.doc_sequence_value ;
453 p_doc_sequence_id := l_trx_rec.doc_sequence_id ;
454 p_old_trx_number := l_trx_rec.old_trx_number ;
455 p_status := l_trh_rec.status ;
456
457
458
459 /*-----------------------------------------------+
460 | Standard check of p_commit |
461 +-----------------------------------------------*/
462
463 IF FND_API.To_Boolean( p_commit )
464 THEN
465 IF PG_DEBUG in ('Y', 'C') THEN
466 arp_util.debug( 'committing');
467 END IF;
468 Commit;
469 END IF;
470
471 IF PG_DEBUG in ('Y', 'C') THEN
472 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Complete_BR()- ');
473 END IF;
474
475
476 EXCEPTION
477 WHEN FND_API.G_EXC_ERROR THEN
478 IF PG_DEBUG in ('Y', 'C') THEN
479 arp_util.debug( 'SQLCODE : ' || SQLCODE);
480 arp_util.debug( 'SQLERRM : ' || SQLERRM);
481 END IF;
482 ROLLBACK TO Complete_BR_PVT;
483 x_return_status := FND_API.G_RET_STS_ERROR ;
484 IF PG_DEBUG in ('Y', 'C') THEN
485 arp_util.debug( 'Exception Error');
486 END IF;
487 raise;
488
489
490 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
491 IF PG_DEBUG in ('Y', 'C') THEN
492 arp_util.debug( 'SQLCODE : ' || SQLCODE);
493 arp_util.debug( 'SQLERRM : ' || SQLERRM);
494 END IF;
495 ROLLBACK TO Complete_BR_PVT;
496 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
497 IF PG_DEBUG in ('Y', 'C') THEN
498 arp_util.debug( 'Exception Unexpected Error');
499 END IF;
500 RAISE;
501
502
503 WHEN OTHERS THEN
504 /*-------------------------------------------------------+
505 | Handle application errors that result from trapable |
506 | error conditions. The error messages have already |
507 | been put on the error stack. |
508 +-------------------------------------------------------*/
509
510 IF PG_DEBUG in ('Y', 'C') THEN
511 arp_util.debug ( 'SQLERRM : ' || SQLERRM);
512 arp_util.debug ( 'SQLCODE : ' || SQLCODE);
513 END IF;
514
515 IF (SQLCODE = -20001)
516 THEN
517 IF PG_DEBUG in ('Y', 'C') THEN
518 arp_util.debug( 'Exception Others -20001');
519 END IF;
520 ROLLBACK TO Complete_BR_PVT;
521 x_return_status := FND_API.G_RET_STS_ERROR ;
522 RAISE;
523
524 ELSE
525 IF PG_DEBUG in ('Y', 'C') THEN
526 arp_util.debug( 'Exception Others');
527 END IF;
528 NULL;
529 END IF;
530
531 ROLLBACK TO Complete_BR_PVT;
532 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
533 RAISE;
534
535 END Complete_BR;
536
537
538 /*==============================================================================+
539 | PROCEDURE |
540 | UnComplete_BR |
541 | |
542 | DESCRIPTION |
543 | UnCompletes a BR |
544 | |
545 +==============================================================================*/
546
547
548 PROCEDURE UnComplete_BR (
549
550 -- ***** Standard API parameters *****
551
552 p_api_version IN NUMBER ,
553 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
554 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
555 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
556 x_return_status OUT NOCOPY VARCHAR2 ,
557 x_msg_count OUT NOCOPY NUMBER ,
558 x_msg_data OUT NOCOPY VARCHAR2 ,
559
560 -- ***** Input parameters *****
561
562 p_customer_trx_id IN NUMBER,
563
564 -- ***** Output parameters *****
565
566 p_status OUT NOCOPY VARCHAR2 )
567
568 IS
569 l_api_name CONSTANT VARCHAR2(20) := 'UnComplete_BR';
570 l_api_version CONSTANT NUMBER := 1.0;
571
572 l_trx_rec ra_customer_trx%ROWTYPE;
573 l_trh_rec ar_transaction_history%ROWTYPE;
574 l_ps_id ar_payment_schedules.payment_schedule_id%TYPE;
575
576 l_acceptance_flag VARCHAR2(1) ;
577
578 l_action VARCHAR2(30) ;
579
580 BEGIN
581
582 IF PG_DEBUG in ('Y', 'C') THEN
583 arp_util.debug('AR_BILLS_MAINTAIN_PUB.UnComplete_BR()+ ');
584 END IF;
585 x_msg_count := NULL;
586 x_msg_data := NULL;
587 /*-----------------------------------------------+
588 | Standard start of API savepoint |
589 +-----------------------------------------------*/
590
591 SAVEPOINT UnComplete_BR_PVT;
592
593
594 /*-----------------------------------------------+
595 | Standard call to check for call compatibility |
596 +-----------------------------------------------*/
597
598 IF NOT FND_API.Compatible_API_Call( l_api_version ,
599 p_api_version ,
600 l_api_name ,
601 G_PKG_NAME )
602 THEN
603 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
604 END IF;
605
606
607 /*--------------------------------------------------------------+
608 | Initialize message list if p_init_msg_list is set to TRUE |
609 +--------------------------------------------------------------*/
610
611 IF FND_API.to_Boolean( p_init_msg_list ) THEN
612 FND_MSG_PUB.initialize;
613 END IF;
614
615
616 /*-----------------------------------------------+
617 | Initialize return status to SUCCESS |
618 +-----------------------------------------------*/
619
620 x_return_status := FND_API.G_RET_STS_SUCCESS;
621
622
623 /*-----------------------------------------------------------------------+
624 | ============ START OF API BODY - UNCOMPLETE BR ================= |
625 +-----------------------------------------------------------------------*/
626
627
628 /*-----------------------------------------------+
629 | Action Validation |
630 +-----------------------------------------------*/
631
632 l_action := C_UNCOMPLETE;
633
634 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
635 p_customer_trx_id => p_customer_trx_id ,
636 p_complete_flag => C_ACTION_REC.complete_flag ,
637 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
638 p_accept_flag => C_ACTION_REC.accept_flag ,
639 p_cancel_flag => C_ACTION_REC.cancel_flag ,
640 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
641 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
642 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
643 p_hold_flag => C_ACTION_REC.hold_flag ,
644 p_unhold_flag => C_ACTION_REC.unhold_flag ,
645 p_recall_flag => C_ACTION_REC.recall_flag ,
646 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
647 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
648 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
649 p_protest_flag => C_ACTION_REC.protest_flag ,
650 p_endorse_flag => C_ACTION_REC.endorse_flag ,
651 p_restate_flag => C_ACTION_REC.restate_flag ,
652 p_exchange_flag => C_ACTION_REC.exchange_flag ,
653 p_delete_flag => C_ACTION_REC.delete_flag );
654
655
656 -- Do not continue if the action is not allowed for the BR
657
658 ARP_CT_PKG.lock_fetch_p (l_trx_rec, p_customer_trx_id);
659
660 IF (C_ACTION_REC.uncomplete_flag <> 'Y')
661 THEN
662 IF PG_DEBUG in ('Y', 'C') THEN
663 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
664 END IF;
665 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_INCOMPLETE' );
666 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
667 app_exception.raise_exception;
668 END IF;
669
670
671
672 /*-----------------------------------------------+
673 | Data preparation |
674 +-----------------------------------------------*/
675
676 l_trh_rec.customer_trx_id := p_customer_trx_id;
677 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
678
679
680 IF (AR_BILLS_MAINTAIN_STATUS_PUB.is_acceptance_required(l_trx_rec.cust_trx_type_id))
681 THEN
682 l_acceptance_flag := 'Y';
683 ELSE
684 l_acceptance_flag := 'N';
685 END IF;
686
687
688 /*-----------------------------------------------+
689 | BR UnCompletion |
690 +------------------------------------------------*/
691
692
693 AR_BILLS_MAINTAIN_LIB_PVT.Reverse_Assignments_Adjustment (l_trh_rec, l_acceptance_flag);
694
695
696 /*-----------------------------------------------+
697 | Update the Complete Flag in the BR Header |
698 +------------------------------------------------*/
699
700 l_trx_rec.complete_flag := 'N';
701
702 ARP_PROCESS_BR_HEADER.update_header ( l_trx_rec ,
703 l_trx_rec.customer_trx_id);
704
705 /*-----------------------------------------------+
706 | Insertion in Transaction History Table |
707 +------------------------------------------------*/
708
709 -- Fetch the new status and new event of the BR
710
711 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
712 p_trx_rec => l_trx_rec ,
713 p_action => l_action ,
714 p_new_status => l_trh_rec.status,
715 p_new_event => l_trh_rec.event );
716
717 l_trh_rec.transaction_history_id:= NULL ;
718 l_trh_rec.postable_flag := 'N' ;
719 l_trh_rec.current_accounted_flag:= 'N' ;
720 l_trh_rec.current_record_flag := 'Y' ;
721 l_trh_rec.prv_trx_history_id := NULL ;
722 l_trh_rec.comments := NULL ;
723 l_trh_rec.posting_control_id := -3 ;
724 l_trh_rec.gl_posted_date := NULL ;
725 l_trh_rec.first_posted_record_flag := 'N' ;
726 l_trh_rec.created_from := 'ARBRMAIB' ;
727 l_trh_rec.batch_id := NULL ;
728
729 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
730 l_trh_rec.transaction_history_id);
731
732
733 /*-----------------------------------------------+
734 | Delete the BR Payment Schedule |
735 +------------------------------------------------*/
736
737 IF (l_acceptance_flag = 'N')
738 THEN
739 -- Bug 2057740:
740 -- Commenting out NOCOPY and calling delete_f_Ct_id instead because
741 -- there is already a routine to delete ps by cust_trx_id.
742 -- no need to call another routine to find the ps id first.
743 -- AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (
744 -- p_customer_trx_id, l_ps_id);
745 -- arp_ps_pkg.delete_p (l_ps_id);
746
747 arp_ps_pkg.delete_f_ct_id(p_customer_trx_id);
748 END IF;
749
750
751 /*-----------------------------------------------+
752 | Output parameter |
753 +------------------------------------------------*/
754
755 p_status := l_trh_rec.status ;
756
757
758 /*-----------------------------------------------+
759 | Standard check of p_commit |
760 +-----------------------------------------------*/
761
762 IF FND_API.To_Boolean( p_commit )
763 THEN
764 IF PG_DEBUG in ('Y', 'C') THEN
765 arp_util.debug( 'committing');
766 END IF;
767 Commit;
768 END IF;
769
770 IF PG_DEBUG in ('Y', 'C') THEN
771 arp_util.debug('AR_BILLS_MAINTAIN_PUB.UnComplete_BR()- ');
772 END IF;
773
774
775 EXCEPTION
776 WHEN FND_API.G_EXC_ERROR THEN
777 IF PG_DEBUG in ('Y', 'C') THEN
778 arp_util.debug( 'SQLCODE : ' || SQLCODE);
779 arp_util.debug( 'SQLERRM : ' || SQLERRM);
780 END IF;
781 ROLLBACK TO UnComplete_BR_PVT;
782 x_return_status := FND_API.G_RET_STS_ERROR ;
783 IF PG_DEBUG in ('Y', 'C') THEN
784 arp_util.debug( 'Exception Error');
785 END IF;
786 raise;
787
788
789 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
790 IF PG_DEBUG in ('Y', 'C') THEN
791 arp_util.debug( 'SQLCODE : ' || SQLCODE);
792 arp_util.debug( 'SQLERRM : ' || SQLERRM);
793 END IF;
794 ROLLBACK TO UnComplete_BR_PVT;
795 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
796 IF PG_DEBUG in ('Y', 'C') THEN
797 arp_util.debug( 'Exception Unexpected Error');
798 END IF;
799 raise;
800
801
802 WHEN OTHERS THEN
803 /*-------------------------------------------------------+
804 | Handle application errors that result from trapable |
805 | error conditions. The error messages have already |
806 | been put on the error stack. |
807 +-------------------------------------------------------*/
808
809 IF PG_DEBUG in ('Y', 'C') THEN
810 arp_util.debug ( 'SQLERRM : ' || SQLERRM);
811 arp_util.debug ( 'SQLCODE : ' || SQLCODE);
812 END IF;
813
814 IF (SQLCODE = -20001)
815 THEN
816 IF PG_DEBUG in ('Y', 'C') THEN
817 arp_util.debug( 'Exception Others -20001');
818 END IF;
819 ROLLBACK TO UnComplete_BR_PVT;
820 x_return_status := FND_API.G_RET_STS_ERROR ;
821 RAISE;
822 ELSE
823 IF PG_DEBUG in ('Y', 'C') THEN
824 arp_util.debug( 'Exception Others');
825 END IF;
826 NULL;
827 END IF;
828
829 ROLLBACK TO UnComplete_BR_PVT;
830 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
831 RAISE;
832
833 END UnComplete_BR;
834
835
836
837 /*==============================================================================+
838 | PROCEDURE |
839 | Accept_BR |
840 | |
841 | DESCRIPTION |
842 | Accepts a BR |
843 | |
844 +==============================================================================*/
845
846
847 PROCEDURE Accept_BR (
848
849 -- ***** Standard API parameters *****
850
851 p_api_version IN NUMBER ,
852 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
853 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
854 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
855 x_return_status OUT NOCOPY VARCHAR2 ,
856 x_msg_count OUT NOCOPY NUMBER ,
857 x_msg_data OUT NOCOPY VARCHAR2 ,
858
859 -- ***** Input parameters *****
860
861 p_customer_trx_id IN NUMBER ,
862 p_acceptance_date IN DATE ,
863 p_acceptance_gl_date IN DATE ,
864 p_acceptance_comments IN VARCHAR2 ,
865
866 -- ***** Output parameters *****
867
868 p_status OUT NOCOPY VARCHAR2 )
869
870 IS
871 l_api_name CONSTANT VARCHAR2(20) := 'Accept_BR';
872 l_api_version CONSTANT NUMBER := 1.0;
873
874 l_trx_rec ra_customer_trx%ROWTYPE;
875 l_trh_rec ar_transaction_history%ROWTYPE;
876
877 l_action VARCHAR2(30);
878
879 l_trx_date DATE;
880 l_gl_date DATE;
881 l_mesg VARCHAR2(2000);
882
883 BEGIN
884
885 IF PG_DEBUG in ('Y', 'C') THEN
886 arp_util.debug( 'AR_BILLS_MAINTAIN_PUB.Accept()+ ');
887 END IF;
888
889 x_msg_count := NULL;
890 x_msg_data := NULL;
891
892 /*-----------------------------------------------+
893 | Standard start of API savepoint |
894 +-----------------------------------------------*/
895
896 SAVEPOINT Accept_BR_PVT;
897
898
899 /*-----------------------------------------------+
900 | Standard call to check for call compatibility |
901 +-----------------------------------------------*/
902
903 IF NOT FND_API.Compatible_API_Call( l_api_version ,
904 p_api_version ,
905 l_api_name ,
906 G_PKG_NAME )
907 THEN
908 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
909 END IF;
910
911
912 /*--------------------------------------------------------------+
913 | Initialize message list if p_init_msg_list is set to TRUE |
914 +--------------------------------------------------------------*/
915
916 IF FND_API.to_Boolean( p_init_msg_list ) THEN
917 FND_MSG_PUB.initialize;
918 END IF;
919
920
921 /*-----------------------------------------------+
922 | Initialize return status to SUCCESS |
923 +-----------------------------------------------*/
924
925 x_return_status := FND_API.G_RET_STS_SUCCESS;
926
927
928 /*-----------------------------------------------------------------------+
929 | ============ START OF API BODY - ACCEPT BR =================== |
930 +-----------------------------------------------------------------------*/
931
932
933 /*-----------------------------------------------+
934 | Action Validation |
935 +-----------------------------------------------*/
936
937 l_action := C_ACCEPT;
938
939 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
940 p_customer_trx_id => p_customer_trx_id ,
941 p_complete_flag => C_ACTION_REC.complete_flag ,
942 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
943 p_accept_flag => C_ACTION_REC.accept_flag ,
944 p_cancel_flag => C_ACTION_REC.cancel_flag ,
945 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
946 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
947 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
948 p_hold_flag => C_ACTION_REC.hold_flag ,
949 p_unhold_flag => C_ACTION_REC.unhold_flag ,
950 p_recall_flag => C_ACTION_REC.recall_flag ,
951 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
952 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
953 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
954 p_protest_flag => C_ACTION_REC.protest_flag ,
955 p_endorse_flag => C_ACTION_REC.endorse_flag ,
956 p_restate_flag => C_ACTION_REC.restate_flag ,
957 p_exchange_flag => C_ACTION_REC.exchange_flag ,
958 p_delete_flag => C_ACTION_REC.delete_flag );
959
960 -- Do not continue if the action is not allowed for the BR
961
962 ARP_CT_PKG.lock_fetch_p (l_trx_rec, p_customer_trx_id);
963
964 IF (C_ACTION_REC.accept_flag <> 'Y')
965 THEN
966 IF PG_DEBUG in ('Y', 'C') THEN
967 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
968 END IF;
969 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_ACCEPT' );
970 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
971 app_exception.raise_exception;
972 END IF;
973
974
975 /*-----------------------------------------------+
976 | Data Preparation |
977 +-----------------------------------------------*/
978
979 l_trh_rec.customer_trx_id := p_customer_trx_id;
980 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
981
982 l_trx_date := trunc(p_acceptance_date) ;
983 l_gl_date := trunc(p_acceptance_gl_date) ;
984
985
986 /*-----------------------------------------------+
987 | Data Defaulting |
988 +-----------------------------------------------*/
989
990 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
991
992
993 /*-----------------------------------------------+
994 | Data Validation |
995 +-----------------------------------------------*/
996
997 l_mesg := arp_standard.FND_MESSAGE('AR_BR_SPMENU_ACCEPTANCE');
998 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
999
1000 l_trh_rec.trx_date := l_trx_date ;
1001 l_trh_rec.gl_date := l_gl_date ;
1002 l_trh_rec.comments := p_acceptance_comments;
1003
1004 AR_BILLS_MAINTAIN_VAL_PVT.validate_Accept_BR (l_trx_rec, l_trh_rec);
1005
1006
1007 /*-----------------------------------------------+
1008 | BR Acceptance |
1009 +------------------------------------------------*/
1010
1011 AR_BILLS_MAINTAIN_LIB_PVT.Complete_OR_Accept (l_trh_rec);
1012
1013
1014 /*-----------------------------------------------+
1015 | Insertion in Transaction History Table |
1016 +------------------------------------------------*/
1017
1018 -- Fetch the new status and new event of the BR
1019
1020 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
1021 p_trx_rec => l_trx_rec ,
1022 p_action => l_action ,
1023 p_new_status => l_trh_rec.status,
1024 p_new_event => l_trh_rec.event );
1025
1026 l_trh_rec.transaction_history_id:= NULL ;
1027 l_trh_rec.postable_flag := 'Y' ;
1028 l_trh_rec.current_accounted_flag:= 'Y' ;
1029 l_trh_rec.current_record_flag := 'Y' ;
1030 l_trh_rec.prv_trx_history_id := NULL ;
1031 l_trh_rec.posting_control_id := -3 ;
1032 l_trh_rec.gl_posted_date := NULL ;
1033 l_trh_rec.first_posted_record_flag := 'N' ;
1034 l_trh_rec.created_from := 'ARBRMAIB' ;
1035 l_trh_rec.batch_id := NULL ;
1036 l_trh_rec.org_id := l_trx_rec.org_id;
1037
1038 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
1039 l_trh_rec.transaction_history_id);
1040
1041 /*-----------------------------------------------+
1042 | Output parameter |
1043 +------------------------------------------------*/
1044
1045 p_status := l_trh_rec.status ;
1046
1047
1048 /*-----------------------------------------------+
1049 | Standard check of p_commit |
1050 +-----------------------------------------------*/
1051
1052 IF FND_API.To_Boolean( p_commit )
1053 THEN
1054 IF PG_DEBUG in ('Y', 'C') THEN
1055 arp_util.debug( 'committing');
1056 END IF;
1057 Commit;
1058 END IF;
1059
1060 IF PG_DEBUG in ('Y', 'C') THEN
1061 arp_util.debug( 'AR_BILLS_MAINTAIN_PUB.Accept()- ');
1062 END IF;
1063
1064
1065 EXCEPTION
1066 WHEN FND_API.G_EXC_ERROR THEN
1067 IF PG_DEBUG in ('Y', 'C') THEN
1068 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1069 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1070 END IF;
1071 ROLLBACK TO Accept_BR_PVT;
1072 x_return_status := FND_API.G_RET_STS_ERROR ;
1073 IF PG_DEBUG in ('Y', 'C') THEN
1074 arp_util.debug( 'Exception Error');
1075 END IF;
1076 RAISE;
1077
1078
1079 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080 IF PG_DEBUG in ('Y', 'C') THEN
1081 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1082 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1083 END IF;
1084 ROLLBACK TO Accept_BR_PVT;
1085 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1086 IF PG_DEBUG in ('Y', 'C') THEN
1087 arp_util.debug( 'Exception Unexpected Error');
1088 END IF;
1089 RAISE;
1090
1091
1092 WHEN OTHERS THEN
1093 /*-------------------------------------------------------+
1094 | Handle application errors that result from trapable |
1095 | error conditions. The error messages have already |
1096 | been put on the error stack. |
1097 +-------------------------------------------------------*/
1098
1099 IF PG_DEBUG in ('Y', 'C') THEN
1100 arp_util.debug ( 'SQLERRM : ' || SQLERRM);
1101 arp_util.debug ( 'SQLCODE : ' || SQLCODE);
1102 END IF;
1103
1104 IF (SQLCODE = -20001)
1105 THEN
1106 ROLLBACK TO Accept_BR_PVT;
1107 x_return_status := FND_API.G_RET_STS_ERROR ;
1108 RAISE;
1109 ELSE
1110 NULL;
1111 END IF;
1112
1113 ROLLBACK TO Accept_BR_PVT;
1114 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1115 RAISE;
1116
1117
1118 END Accept_BR;
1119
1120
1121 /*==============================================================================+
1122 | PROCEDURE |
1123 | Hold_BR |
1124 | |
1125 | DESCRIPTION |
1126 | Put a BR on hold |
1127 | |
1128 +==============================================================================*/
1129
1130
1131 PROCEDURE Hold_BR (
1132
1133 -- ***** Standard API parameters *****
1134
1135 p_api_version IN NUMBER ,
1136 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
1137 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
1138 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
1139 x_return_status OUT NOCOPY VARCHAR2 ,
1140 x_msg_count OUT NOCOPY NUMBER ,
1141 x_msg_data OUT NOCOPY VARCHAR2 ,
1142
1143 -- ***** Input parameters *****
1144
1145 p_customer_trx_id IN NUMBER ,
1146
1147 -- ***** Output parameters *****
1148
1149 p_status OUT NOCOPY VARCHAR2 )
1150
1151 IS
1152 l_api_name CONSTANT VARCHAR2(20) := 'Hold_BR';
1153 l_api_version CONSTANT NUMBER := 1.0;
1154 l_trh_rec ar_transaction_history%ROWTYPE;
1155 l_trx_rec ra_customer_trx%ROWTYPE;
1156 l_ps_rec ar_payment_schedules%ROWTYPE;
1157
1158 l_action VARCHAR2(30);
1159
1160 BEGIN
1161
1162 IF PG_DEBUG in ('Y', 'C') THEN
1163 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Hold_BR()+ ');
1164 END IF;
1165
1166 x_msg_count := NULL;
1167 x_msg_data := NULL;
1168
1169 /*-----------------------------------------------+
1170 | Standard start of API savepoint |
1171 +-----------------------------------------------*/
1172
1173 SAVEPOINT Hold_BR_PVT;
1174
1175
1176 /*-----------------------------------------------+
1177 | Standard call to check for call compatibility |
1178 +-----------------------------------------------*/
1179
1180 IF NOT FND_API.Compatible_API_Call( l_api_version ,
1181 p_api_version ,
1182 l_api_name ,
1183 G_PKG_NAME )
1184 THEN
1185 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1186 END IF;
1187
1188
1189 /*--------------------------------------------------------------+
1190 | Initialize message list if p_init_msg_list is set to TRUE |
1191 +--------------------------------------------------------------*/
1192
1193 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1194 FND_MSG_PUB.initialize;
1195 END IF;
1196
1197
1198 /*-----------------------------------------------+
1199 | Initialize return status to SUCCESS |
1200 +-----------------------------------------------*/
1201
1202 x_return_status := FND_API.G_RET_STS_SUCCESS;
1203
1204
1205 /*-----------------------------------------------------------------------+
1206 | ============ START OF API BODY - HOLD BR =================== |
1207 +-----------------------------------------------------------------------*/
1208
1209 /*-----------------------------------------------+
1210 | Validate the action |
1211 +-----------------------------------------------*/
1212
1213 l_action := C_HOLD;
1214
1215 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
1216 p_customer_trx_id => p_customer_trx_id ,
1217 p_complete_flag => C_ACTION_REC.complete_flag ,
1218 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
1219 p_accept_flag => C_ACTION_REC.accept_flag ,
1220 p_cancel_flag => C_ACTION_REC.cancel_flag ,
1221 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
1222 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
1223 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
1224 p_hold_flag => C_ACTION_REC.hold_flag ,
1225 p_unhold_flag => C_ACTION_REC.unhold_flag ,
1226 p_recall_flag => C_ACTION_REC.recall_flag ,
1227 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
1228 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
1229 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
1230 p_protest_flag => C_ACTION_REC.protest_flag ,
1231 p_endorse_flag => C_ACTION_REC.endorse_flag ,
1232 p_restate_flag => C_ACTION_REC.restate_flag ,
1233 p_exchange_flag => C_ACTION_REC.exchange_flag ,
1234 p_delete_flag => C_ACTION_REC.delete_flag );
1235
1236
1237 -- Do not continue if the action is not allowed for the BR
1238
1239 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
1240
1241 IF (C_ACTION_REC.hold_flag <> 'Y')
1242 THEN
1243 IF PG_DEBUG in ('Y', 'C') THEN
1244 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
1245 END IF;
1246 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_HOLD' );
1247 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
1248 app_exception.raise_exception;
1249 END IF;
1250
1251
1252
1253 /*-----------------------------------------------+
1254 | Data Preparation |
1255 +-----------------------------------------------*/
1256
1257 l_trh_rec.customer_trx_id := p_customer_trx_id;
1258 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
1259
1260
1261 /*----------------------------------------------+
1262 | Update the Payment Schedule of the BR |
1263 +-----------------------------------------------*/
1264
1265 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
1266
1267 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, 'USER' , p_customer_trx_id);
1268
1269
1270
1271 /*----------------------------------------------+
1272 | Update the Hold Flag in the BR Header |
1273 +-----------------------------------------------*/
1274
1275 l_trx_rec.br_on_hold_flag := 'Y';
1276
1277 ARP_PROCESS_BR_HEADER.update_header (l_trx_rec, l_trx_rec.customer_trx_id);
1278
1279
1280
1281 /*----------------------------------------------+
1282 | Insert a Transaction History Record |
1283 +-----------------------------------------------*/
1284
1285 -- Fetch the new status and new event of the BR
1286
1287 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
1288 p_trx_rec => l_trx_rec ,
1289 p_action => l_action ,
1290 p_new_status => l_trh_rec.status,
1291 p_new_event => l_trh_rec.event );
1292
1293
1294 l_trh_rec.transaction_history_id:= NULL ;
1295 l_trh_rec.postable_flag := 'N' ;
1296 l_trh_rec.current_accounted_flag:= 'N' ;
1297 l_trh_rec.current_record_flag := 'Y' ;
1298 l_trh_rec.prv_trx_history_id := NULL ;
1299 l_trh_rec.comments := NULL ;
1300 l_trh_rec.posting_control_id := -3 ;
1301 l_trh_rec.gl_posted_date := NULL ;
1302 l_trh_rec.first_posted_record_flag := 'N' ;
1303 l_trh_rec.created_from := 'ARBRMAIB' ;
1304 l_trh_rec.batch_id := NULL ;
1305
1306 IF (l_trh_rec.trx_date < sysdate)
1307 THEN
1308 l_trh_rec.trx_date := trunc(sysdate);
1309 END IF;
1310
1311
1312 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
1313
1314
1315 /*-----------------------------------------------+
1316 | Output parameter |
1317 +------------------------------------------------*/
1318
1319 p_status := l_trh_rec.status;
1320
1321
1322 /*-----------------------------------------------+
1323 | Standard check of p_commit |
1324 +-----------------------------------------------*/
1325
1326 IF FND_API.To_Boolean( p_commit )
1327 THEN
1328 IF PG_DEBUG in ('Y', 'C') THEN
1329 arp_util.debug( 'committing');
1330 END IF;
1331 Commit;
1332 END IF;
1333
1334 IF PG_DEBUG in ('Y', 'C') THEN
1335 arp_util.debug( 'AR_BILLS_MAINTAIN_PUB.Hold()- ');
1336 END IF;
1337
1338
1339 EXCEPTION
1340 WHEN FND_API.G_EXC_ERROR THEN
1341 IF PG_DEBUG in ('Y', 'C') THEN
1342 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1343 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1344 END IF;
1345 ROLLBACK TO Hold_BR_PVT;
1346 x_return_status := FND_API.G_RET_STS_ERROR ;
1347 IF PG_DEBUG in ('Y', 'C') THEN
1348 arp_util.debug( 'Exception Error');
1349 END IF;
1350 RAISE;
1351
1352 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1353 IF PG_DEBUG in ('Y', 'C') THEN
1354 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1355 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1356 END IF;
1357 ROLLBACK TO Hold_BR_PVT;
1358 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1359 IF PG_DEBUG in ('Y', 'C') THEN
1360 arp_util.debug( 'Exception Unexpected Error');
1361 END IF;
1362 RAISE;
1363
1364 WHEN OTHERS THEN
1365 /*-------------------------------------------------------+
1366 | Handle application errors that result from trapable |
1367 | error conditions. The error messages have already |
1368 | been put on the error stack. |
1369 +-------------------------------------------------------*/
1370
1371 IF PG_DEBUG in ('Y', 'C') THEN
1372 arp_util.debug ( 'SQLERRM : ' || SQLERRM);
1373 arp_util.debug ( 'SQLCODE : ' || SQLCODE);
1374 END IF;
1375
1376 IF (SQLCODE = -20001)
1377 THEN
1378 ROLLBACK TO Hold_BR_PVT;
1379 x_return_status := FND_API.G_RET_STS_ERROR ;
1380 RAISE;
1381 ELSE
1382 NULL;
1383 END IF;
1384
1385 ROLLBACK TO Hold_BR_PVT;
1386 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1387 RAISE;
1388
1389 END Hold_BR;
1390
1391
1392 /*==============================================================================+
1393 | PROCEDURE |
1394 | UnHold_BR |
1395 | |
1396 | DESCRIPTION |
1397 | Releases a BR from hold |
1398 | |
1399 +==============================================================================*/
1400
1401
1402 PROCEDURE UnHold_BR (
1403
1404 -- ***** Standard API parameters *****
1405
1406 p_api_version IN NUMBER ,
1407 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
1408 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
1409 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
1410 x_return_status OUT NOCOPY VARCHAR2 ,
1411 x_msg_count OUT NOCOPY NUMBER ,
1412 x_msg_data OUT NOCOPY VARCHAR2 ,
1413
1414 -- ***** Input parameters *****
1415
1416 p_customer_trx_id IN NUMBER ,
1417
1418 -- ***** Output parameters *****
1419
1420 p_status OUT NOCOPY VARCHAR2 )
1421
1422 IS
1423 l_api_name CONSTANT VARCHAR2(20) := 'UnHold_BR';
1424 l_api_version CONSTANT NUMBER := 1.0;
1425
1426 l_trh_rec ar_transaction_history%ROWTYPE;
1427 l_trx_rec ra_customer_trx%ROWTYPE;
1428 l_ps_rec ar_payment_schedules%ROWTYPE;
1429 l_action VARCHAR2(30);
1430
1431 BEGIN
1432
1433 IF PG_DEBUG in ('Y', 'C') THEN
1434 arp_util.debug('AR_BILLS_MAINTAIN_PUB.UnHold_BR()+ ');
1435 END IF;
1436
1437 x_msg_count := NULL;
1438 x_msg_data := NULL;
1439
1440 /*-----------------------------------------------+
1441 | Standard start of API savepoint |
1442 +-----------------------------------------------*/
1443
1444 SAVEPOINT UnHold_BR_PVT;
1445
1446
1447 /*-----------------------------------------------+
1448 | Standard call to check for call compatibility |
1449 +-----------------------------------------------*/
1450
1451 IF NOT FND_API.Compatible_API_Call( l_api_version ,
1452 p_api_version ,
1453 l_api_name ,
1454 G_PKG_NAME )
1455 THEN
1456 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1457 END IF;
1458
1459
1460 /*--------------------------------------------------------------+
1461 | Initialize message list if p_init_msg_list is set to TRUE |
1462 +--------------------------------------------------------------*/
1463
1464 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1465 FND_MSG_PUB.initialize;
1466 END IF;
1467
1468
1469 /*-----------------------------------------------+
1470 | Initialize return status to SUCCESS |
1471 +-----------------------------------------------*/
1472
1473 x_return_status := FND_API.G_RET_STS_SUCCESS;
1474
1475
1476 /*-----------------------------------------------------------------------+
1477 | ============ START OF API BODY - UNHOLD BR =================== |
1478 +-----------------------------------------------------------------------*/
1479
1480 /*-----------------------------------------------+
1481 | Validate the action |
1482 +-----------------------------------------------*/
1483
1484 l_action := C_UNHOLD;
1485
1486 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
1487 p_customer_trx_id => p_customer_trx_id ,
1488 p_complete_flag => C_ACTION_REC.complete_flag ,
1489 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
1490 p_accept_flag => C_ACTION_REC.accept_flag ,
1491 p_cancel_flag => C_ACTION_REC.cancel_flag ,
1492 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
1493 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
1494 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
1495 p_hold_flag => C_ACTION_REC.hold_flag ,
1496 p_unhold_flag => C_ACTION_REC.unhold_flag ,
1497 p_recall_flag => C_ACTION_REC.recall_flag ,
1498 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
1499 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
1500 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
1501 p_protest_flag => C_ACTION_REC.protest_flag ,
1502 p_endorse_flag => C_ACTION_REC.endorse_flag ,
1503 p_restate_flag => C_ACTION_REC.restate_flag ,
1504 p_exchange_flag => C_ACTION_REC.exchange_flag ,
1505 p_delete_flag => C_ACTION_REC.delete_flag );
1506
1507
1508 -- Do not continue if the action is not allowed for the BR
1509
1510 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
1511
1512 IF (C_ACTION_REC.unhold_flag <> 'Y')
1513 THEN
1514 IF PG_DEBUG in ('Y', 'C') THEN
1515 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
1516 END IF;
1517 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_UNHOLD' );
1518 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
1519 app_exception.raise_exception;
1520 END IF;
1521
1522
1523 /*-----------------------------------------------+
1524 | Data Preparation |
1525 +-----------------------------------------------*/
1526
1527 l_trh_rec.customer_trx_id := p_customer_trx_id;
1528 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
1529
1530
1531 /*----------------------------------------------+
1532 | Updates the Payment Schedule of the BR |
1533 +-----------------------------------------------*/
1534
1535 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
1536
1537 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, NULL, NULL);
1538
1539
1540 /*----------------------------------------------+
1541 | Update the Hold Flag in the BR Header |
1542 +-----------------------------------------------*/
1543
1544 l_trx_rec.br_on_hold_flag := 'N';
1545
1546 ARP_PROCESS_BR_HEADER.update_header (l_trx_rec, l_trx_rec.customer_trx_id);
1547
1548
1549 /*----------------------------------------------+
1550 | Insert a Transaction History Record |
1551 +-----------------------------------------------*/
1552
1553 -- Fetch the new status and new event of the BR
1554
1555 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
1556 p_trx_rec => l_trx_rec ,
1557 p_action => l_action ,
1558 p_new_status => l_trh_rec.status,
1559 p_new_event => l_trh_rec.event );
1560
1561 l_trh_rec.transaction_history_id:= NULL ;
1562 l_trh_rec.postable_flag := 'N' ;
1563 l_trh_rec.current_accounted_flag:= 'N' ;
1564 l_trh_rec.current_record_flag := 'Y' ;
1565 l_trh_rec.prv_trx_history_id := NULL ;
1566 l_trh_rec.comments := NULL ;
1567 l_trh_rec.posting_control_id := -3 ;
1568 l_trh_rec.gl_posted_date := NULL ;
1569 l_trh_rec.first_posted_record_flag := 'N' ;
1570 l_trh_rec.created_from := 'ARBRMAIB' ;
1571 l_trh_rec.batch_id := NULL ;
1572
1573 IF (l_trh_rec.trx_date < sysdate)
1574 THEN
1575 l_trh_rec.trx_date := trunc(sysdate);
1576 END IF;
1577
1578 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
1579
1580
1581 /*-----------------------------------------------+
1582 | Output parameter |
1583 +------------------------------------------------*/
1584
1585 p_status := l_trh_rec.status;
1586
1587
1588 /*-----------------------------------------------+
1589 | Standard check of p_commit |
1590 +-----------------------------------------------*/
1591
1592 IF FND_API.To_Boolean( p_commit )
1593 THEN
1594 IF PG_DEBUG in ('Y', 'C') THEN
1595 arp_util.debug( 'committing');
1596 END IF;
1597 Commit;
1598 END IF;
1599
1600 IF PG_DEBUG in ('Y', 'C') THEN
1601 arp_util.debug( 'AR_BILLS_MAINTAIN_PUB.UnHold()- ');
1602 END IF;
1603
1604
1605 EXCEPTION
1606 WHEN FND_API.G_EXC_ERROR THEN
1607 IF PG_DEBUG in ('Y', 'C') THEN
1608 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1609 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1610 END IF;
1611 ROLLBACK TO UnHold_BR_PVT;
1612 x_return_status := FND_API.G_RET_STS_ERROR ;
1613 IF PG_DEBUG in ('Y', 'C') THEN
1614 arp_util.debug( 'Exception Error');
1615 END IF;
1616 RAISE;
1617
1618 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1619 IF PG_DEBUG in ('Y', 'C') THEN
1620 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1621 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1622 END IF;
1623 ROLLBACK TO UnHold_BR_PVT;
1624 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1625 IF PG_DEBUG in ('Y', 'C') THEN
1626 arp_util.debug( 'Exception Unexpected Error');
1627 END IF;
1628 RAISE;
1629
1630 WHEN OTHERS THEN
1631 /*-------------------------------------------------------+
1632 | Handle application errors that result from trapable |
1633 | error conditions. The error messages have already |
1634 | been put on the error stack. |
1635 +-------------------------------------------------------*/
1636
1637 IF PG_DEBUG in ('Y', 'C') THEN
1638 arp_util.debug( 'SQLCODE : ' || SQLCODE);
1639 arp_util.debug( 'SQLERRM : ' || SQLERRM);
1640 END IF;
1641
1642 IF (SQLCODE = -20001)
1643 THEN
1644 ROLLBACK TO UnHold_BR_PVT;
1645 x_return_status := FND_API.G_RET_STS_ERROR ;
1646 RAISE;
1647 ELSE
1648 NULL;
1649 END IF;
1650
1651 ROLLBACK TO UnHold_BR_PVT;
1652 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1653 RAISE;
1654
1655 END UnHold_BR;
1656
1657
1658 /*==============================================================================+
1659 | PROCEDURE |
1660 | Select_BR_remit |
1661 | |
1662 | DESCRIPTION |
1663 | Selects a BR for remittance |
1664 | |
1665 +==============================================================================*/
1666
1667
1668 PROCEDURE Select_BR_Remit (
1669
1670 -- ***** Input parameters *****
1671
1672 p_batch_id IN NUMBER ,
1673 p_ps_id IN NUMBER ,
1674
1675 -- ***** Output parameters *****
1676
1677 p_status OUT NOCOPY VARCHAR2 )
1678
1679 IS
1680
1681 l_batch_rec ar_batches%ROWTYPE;
1682 l_trh_rec ar_transaction_history%ROWTYPE;
1683 l_trx_rec ra_customer_trx%ROWTYPE;
1684 l_ps_rec ar_payment_schedules%ROWTYPE;
1685 l_action VARCHAR2(30);
1686
1687 BEGIN
1688
1689 IF PG_DEBUG in ('Y', 'C') THEN
1690 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Select_BR_Remit ()+');
1691 END IF;
1692
1693 /*-----------------------------------------------+
1694 | Standard start of API savepoint |
1695 +-----------------------------------------------*/
1696
1697 SAVEPOINT Select_BR_Remit_PVT;
1698
1699
1700 /*-----------------------------------------------+
1701 | Input Validation |
1702 +-----------------------------------------------*/
1703
1704 AR_BILLS_MAINTAIN_VAL_PVT.validate_Payment_Schedule_ID (p_ps_id);
1705 AR_BILLS_MAINTAIN_VAL_PVT.validate_Remit_Batch_ID (p_batch_id);
1706
1707
1708 /*-----------------------------------------------+
1709 | Data preparation |
1710 +-----------------------------------------------*/
1711
1712 arp_cr_batches_pkg.fetch_p (p_batch_id, l_batch_rec);
1713
1714 arp_ps_pkg.fetch_p (p_ps_id, l_ps_rec);
1715
1716 l_trh_rec.customer_trx_id := l_ps_rec.customer_trx_id;
1717 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
1718
1719
1720 /*-----------------------------------------------+
1721 | Validate the action |
1722 +-----------------------------------------------*/
1723
1724
1725 l_action := C_SELECT_REMIT;
1726
1727 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
1728 p_customer_trx_id => l_ps_rec.customer_trx_id ,
1729 p_complete_flag => C_ACTION_REC.complete_flag ,
1730 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
1731 p_accept_flag => C_ACTION_REC.accept_flag ,
1732 p_cancel_flag => C_ACTION_REC.cancel_flag ,
1733 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
1734 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
1735 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
1736 p_hold_flag => C_ACTION_REC.hold_flag ,
1737 p_unhold_flag => C_ACTION_REC.unhold_flag ,
1738 p_recall_flag => C_ACTION_REC.recall_flag ,
1739 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
1740 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
1741 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
1742 p_protest_flag => C_ACTION_REC.protest_flag ,
1743 p_endorse_flag => C_ACTION_REC.endorse_flag ,
1744 p_restate_flag => C_ACTION_REC.restate_flag ,
1745 p_exchange_flag => C_ACTION_REC.exchange_flag ,
1746 p_delete_flag => C_ACTION_REC.delete_flag );
1747
1748
1749 -- Do not continue if the action is not allowed for the BR
1750
1751 ARP_CT_PKG.fetch_p (l_trx_rec, l_ps_rec.customer_trx_id);
1752
1753 IF (C_ACTION_REC.select_remit_flag <> 'Y')
1754 THEN
1755 IF PG_DEBUG in ('Y', 'C') THEN
1756 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_ps_rec.customer_trx_id);
1757 END IF;
1758 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_SELECT_REMIT' );
1759 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
1760 app_exception.raise_exception;
1761 END IF;
1762
1763
1764
1765 /*-----------------------------------------------+
1766 | Data Validation |
1767 +-----------------------------------------------*/
1768
1769 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Remittance_Dates (l_batch_rec, l_trh_rec, l_trx_rec.trx_number);
1770
1771 l_trh_rec.trx_date := trunc(l_batch_rec.batch_date) ;
1772 l_trh_rec.gl_date := trunc(l_batch_rec.gl_date) ;
1773
1774
1775 /*----------------------------------------------+
1776 | Updates the Payment Schedule of the BR |
1777 +-----------------------------------------------*/
1778
1779 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (p_ps_id, 'REMITTANCE' , p_batch_id);
1780
1781
1782 /*----------------------------------------------+
1783 | Insert a Transaction History Record |
1784 +-----------------------------------------------*/
1785
1786 -- Fetch the new status and new event of the BR
1787
1788 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
1789 p_trx_rec => l_trx_rec ,
1790 p_action => l_action ,
1791 p_new_status => l_trh_rec.status,
1792 p_new_event => l_trh_rec.event );
1793
1794
1795 l_trh_rec.transaction_history_id:= NULL ;
1796 l_trh_rec.postable_flag := 'N' ;
1797 l_trh_rec.current_accounted_flag:= 'N' ;
1798 l_trh_rec.current_record_flag := 'Y' ;
1799 l_trh_rec.prv_trx_history_id := NULL ;
1800 l_trh_rec.comments := NULL ;
1801 l_trh_rec.posting_control_id := -3 ;
1802 l_trh_rec.gl_posted_date := NULL ;
1803 l_trh_rec.first_posted_record_flag := 'N' ;
1804 l_trh_rec.created_from := 'ARBRMAIB' ;
1805 l_trh_rec.batch_id := NULL ;
1806
1807 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
1808
1809
1810 /*-----------------------------------------------+
1811 | Output parameter |
1812 +------------------------------------------------*/
1813
1814 p_status := l_trh_rec.status;
1815
1816 IF PG_DEBUG in ('Y', 'C') THEN
1817 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Select_BR_Remit ()-');
1818 END IF;
1819
1820 EXCEPTION
1821 WHEN OTHERS THEN
1822 IF PG_DEBUG in ('Y', 'C') THEN
1823 arp_util.debug('EXCEPTION OTHERS: AR_BILLS_MAINTAIN_PUB.Select_BR_Remit');
1824 arp_util.debug( SQLCODE);
1825 arp_util.debug( SQLERRM);
1826 END IF;
1827 ROLLBACK TO Select_BR_Remit_PVT;
1828 RAISE;
1829
1830 END Select_BR_Remit;
1831
1832
1833 /*==============================================================================+
1834 | PROCEDURE |
1835 | DeSelect_BR_remit |
1836 | |
1837 | DESCRIPTION |
1838 | DeSelects a BR out NOCOPY of a remittance batch |
1839 | |
1840 +==============================================================================*/
1841
1842
1843 PROCEDURE DeSelect_BR_Remit (
1844
1845 -- ***** Input parameters *****
1846 p_ps_id IN NUMBER ,
1847
1848 -- ***** Output parameters *****
1849 p_status OUT NOCOPY VARCHAR2 )
1850 IS
1851
1852 l_trh_rec ar_transaction_history%ROWTYPE;
1853 l_trx_rec ra_customer_trx%ROWTYPE;
1854 l_ps_rec ar_payment_schedules%ROWTYPE;
1855 l_action VARCHAR2(30);
1856
1857 BEGIN
1858
1859 IF PG_DEBUG in ('Y', 'C') THEN
1860 arp_util.debug('AR_BILLS_MAINTAIN_PUB.DeSelect_BR_Remit ()+');
1861 END IF;
1862
1863 /*-----------------------------------------------+
1864 | Standard start of API savepoint |
1865 +-----------------------------------------------*/
1866
1867 SAVEPOINT DeSelect_BR_Remit_PVT;
1868
1869
1870 /*-----------------------------------------------+
1871 | Input Validation |
1872 +-----------------------------------------------*/
1873
1874 AR_BILLS_MAINTAIN_VAL_PVT.validate_Payment_Schedule_ID (p_ps_id);
1875
1876
1877
1878 /*-----------------------------------------------+
1879 | Data preparation |
1880 +-----------------------------------------------*/
1881
1882 arp_ps_pkg.fetch_p (p_ps_id, l_ps_rec);
1883
1884
1885
1886 /*-----------------------------------------------+
1887 | Validate the action |
1888 +-----------------------------------------------*/
1889
1890 l_action := C_DESELECT_REMIT;
1891
1892 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
1893 p_customer_trx_id => l_ps_rec.customer_trx_id ,
1894 p_complete_flag => C_ACTION_REC.complete_flag ,
1895 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
1896 p_accept_flag => C_ACTION_REC.accept_flag ,
1897 p_cancel_flag => C_ACTION_REC.cancel_flag ,
1898 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
1899 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
1900 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
1901 p_hold_flag => C_ACTION_REC.hold_flag ,
1902 p_unhold_flag => C_ACTION_REC.unhold_flag ,
1903 p_recall_flag => C_ACTION_REC.recall_flag ,
1904 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
1905 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
1906 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
1907 p_protest_flag => C_ACTION_REC.protest_flag ,
1908 p_endorse_flag => C_ACTION_REC.endorse_flag ,
1909 p_restate_flag => C_ACTION_REC.restate_flag ,
1910 p_exchange_flag => C_ACTION_REC.exchange_flag ,
1911 p_delete_flag => C_ACTION_REC.delete_flag );
1912
1913
1914 -- Do not continue if the action is not allowed for the BR
1915
1916 ARP_CT_PKG.fetch_p (l_trx_rec, l_ps_rec.customer_trx_id);
1917
1918 IF (C_ACTION_REC.deselect_remit_flag <> 'Y')
1919 THEN
1920 IF PG_DEBUG in ('Y', 'C') THEN
1921 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_ps_rec.customer_trx_id);
1922 END IF;
1923 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_DESELECT_REMIT' );
1924 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
1925 app_exception.raise_exception;
1926 END IF;
1927
1928
1929 /*-----------------------------------------------+
1930 | Data Preparation |
1931 +-----------------------------------------------*/
1932
1933 l_trh_rec.customer_trx_id := l_ps_rec.customer_trx_id;
1934 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
1935
1936
1937 /*----------------------------------------------+
1938 | Updates the Payment Schedule of the BR |
1939 +-----------------------------------------------*/
1940
1941 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (p_ps_id, NULL, NULL);
1942
1943
1944 /*----------------------------------------------+
1945 | Insert a Transaction History Record |
1946 +-----------------------------------------------*/
1947
1948 -- Fetch the new status and new event of the BR
1949
1950 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
1951 p_trx_rec => l_trx_rec ,
1952 p_action => l_action ,
1953 p_new_status => l_trh_rec.status,
1954 p_new_event => l_trh_rec.event );
1955
1956 l_trh_rec.transaction_history_id:= NULL ;
1957 l_trh_rec.postable_flag := 'N' ;
1958 l_trh_rec.current_accounted_flag:= 'N' ;
1959 l_trh_rec.current_record_flag := 'Y' ;
1960 l_trh_rec.prv_trx_history_id := NULL ;
1961 l_trh_rec.comments := NULL ;
1962 l_trh_rec.posting_control_id := -3 ;
1963 l_trh_rec.gl_posted_date := NULL ;
1964 l_trh_rec.first_posted_record_flag := 'N' ;
1965 l_trh_rec.created_from := 'ARBRMAIB' ;
1966
1967 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
1968
1969
1970 /*-----------------------------------------------+
1971 | Output parameter |
1972 +------------------------------------------------*/
1973
1974 p_status := l_trh_rec.status;
1975
1976 IF PG_DEBUG in ('Y', 'C') THEN
1977 arp_util.debug('AR_BILLS_MAINTAIN_PUB.DeSelect_BR_Remit ()-');
1978 END IF;
1979
1980 EXCEPTION
1981 WHEN OTHERS THEN
1982 IF PG_DEBUG in ('Y', 'C') THEN
1983 arp_util.debug('EXCEPTION OTHERS: AR_BILLS_MAINTAIN_PUB.DeSelect_BR_Remit');
1984 arp_util.debug( SQLCODE);
1985 arp_util.debug( SQLERRM);
1986 END IF;
1987 ROLLBACK TO DeSelect_BR_Remit_PVT;
1988 RAISE;
1989
1990 END DeSelect_BR_Remit;
1991
1992
1993
1994 /*==============================================================================+
1995 | PROCEDURE |
1996 | Cancel_BR_remit |
1997 | |
1998 | DESCRIPTION |
1999 | Cancels the selection of a BR in a remittance batch |
2000 | Removes the history record related to the selection |
2001 | |
2002 +==============================================================================*/
2003
2004
2005 PROCEDURE Cancel_BR_Remit (
2006
2007 -- ***** Input parameters *****
2008 p_ps_id IN NUMBER )
2009 IS
2010
2011 l_trh_rec ar_transaction_history%ROWTYPE;
2012 l_trx_rec ra_customer_trx%ROWTYPE;
2013 l_ps_rec ar_payment_schedules%ROWTYPE;
2014 l_action VARCHAR2(30);
2015 l_trh_id ar_transaction_history.transaction_history_id%TYPE;
2016
2017 BEGIN
2018
2019 IF PG_DEBUG in ('Y', 'C') THEN
2020 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Cancel_BR_Remit ()+');
2021 END IF;
2022
2023 /*-----------------------------------------------+
2024 | Standard start of API savepoint |
2025 +-----------------------------------------------*/
2026
2027 SAVEPOINT Cancel_BR_Remit_PVT;
2028
2029
2030 /*-----------------------------------------------+
2031 | Input Validation |
2032 +-----------------------------------------------*/
2033
2034 AR_BILLS_MAINTAIN_VAL_PVT.validate_Payment_Schedule_ID (p_ps_id);
2035
2036
2037
2038 /*-----------------------------------------------+
2039 | Data preparation |
2040 +-----------------------------------------------*/
2041
2042 arp_ps_pkg.fetch_p (p_ps_id, l_ps_rec);
2043
2044
2045
2046 /*-----------------------------------------------+
2047 | Validate the action |
2048 +-----------------------------------------------*/
2049
2050 l_action := C_DESELECT_REMIT;
2051
2052 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
2053 p_customer_trx_id => l_ps_rec.customer_trx_id ,
2054 p_complete_flag => C_ACTION_REC.complete_flag ,
2055 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
2056 p_accept_flag => C_ACTION_REC.accept_flag ,
2057 p_cancel_flag => C_ACTION_REC.cancel_flag ,
2058 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
2059 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
2060 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
2061 p_hold_flag => C_ACTION_REC.hold_flag ,
2062 p_unhold_flag => C_ACTION_REC.unhold_flag ,
2063 p_recall_flag => C_ACTION_REC.recall_flag ,
2064 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
2065 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
2066 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
2067 p_protest_flag => C_ACTION_REC.protest_flag ,
2068 p_endorse_flag => C_ACTION_REC.endorse_flag ,
2069 p_restate_flag => C_ACTION_REC.restate_flag ,
2070 p_exchange_flag => C_ACTION_REC.exchange_flag ,
2071 p_delete_flag => C_ACTION_REC.delete_flag );
2072
2073
2074 -- Do not continue if the action is not allowed for the BR
2075
2076 ARP_CT_PKG.fetch_p (l_trx_rec, l_ps_rec.customer_trx_id);
2077
2078 IF (C_ACTION_REC.deselect_remit_flag <> 'Y')
2079 THEN
2080 IF PG_DEBUG in ('Y', 'C') THEN
2081 arp_util.debug('Cancel_BR_Remit: ' || '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_ps_rec.customer_trx_id);
2082 END IF;
2083 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_DESELECT_REMIT' );
2084 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
2085 app_exception.raise_exception;
2086 END IF;
2087
2088
2089 /*-----------------------------------------------+
2090 | Data Preparation |
2091 +-----------------------------------------------*/
2092
2093 l_trh_rec.customer_trx_id := l_ps_rec.customer_trx_id;
2094 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
2095
2096
2097 /*----------------------------------------------+
2098 | Updates the Payment Schedule of the BR |
2099 +-----------------------------------------------*/
2100
2101 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (p_ps_id, NULL, NULL);
2102
2103
2104
2105 /*------------------------------------------------------+
2106 | Deletes the current Transaction History Record |
2107 | (Status Selected Remittance) |
2108 +-------------------------------------------------------*/
2109
2110 l_trh_id := l_trh_rec.prv_trx_history_id;
2111
2112 ARP_PROC_TRANSACTION_HISTORY.delete_transaction_history (l_trh_rec.transaction_history_id);
2113
2114
2115 /*------------------------------------------------------+
2116 | Updates the previous Transaction History Record |
2117 +-------------------------------------------------------*/
2118
2119 ARP_TRANSACTION_HISTORY_PKG.set_to_dummy(l_trh_rec);
2120
2121 /*---------------------------+
2122 | Set the flag to be updated |
2123 +----------------------------*/
2124
2125 l_trh_rec.current_record_flag := 'Y';
2126
2127 ARP_PROC_TRANSACTION_HISTORY.update_transaction_history (l_trh_rec, l_trh_id);
2128
2129
2130 IF PG_DEBUG in ('Y', 'C') THEN
2131 arp_util.debug('Cancel_BR_Remit: ' || 'AR_BILLS_MAINTAIN_PUB.DeSelect_BR_Remit ()-');
2132 END IF;
2133
2134 EXCEPTION
2135 WHEN OTHERS THEN
2136 IF PG_DEBUG in ('Y', 'C') THEN
2137 arp_util.debug('EXCEPTION OTHERS: AR_BILLS_MAINTAIN_PUB.Cancel_BR_Remit');
2138 arp_util.debug('Cancel_BR_Remit: ' || SQLCODE);
2139 arp_util.debug('Cancel_BR_Remit: ' || SQLERRM);
2140 END IF;
2141 ROLLBACK TO Cancel_BR_Remit_PVT;
2142 RAISE;
2143
2144 END Cancel_BR_Remit;
2145
2146
2147
2148
2149 /*==============================================================================+
2150 | PROCEDURE |
2151 | Approve_BR_Remit |
2152 | |
2153 | DESCRIPTION |
2154 | Approves the remittance of a BR |
2155 | |
2156 +==============================================================================*/
2157
2158
2159 PROCEDURE Approve_BR_Remit (
2160
2161 -- ***** Input parameters *****
2162
2163 p_batch_id IN ar_batches.batch_id%TYPE ,
2164 p_ps_id IN ar_payment_schedules.payment_schedule_id%TYPE ,
2165
2166 -- ***** Output parameters *****
2167
2168 p_status OUT NOCOPY VARCHAR2 )
2169
2170 IS
2171 l_batch_rec ar_batches%ROWTYPE;
2172 l_trh_rec ar_transaction_history%ROWTYPE;
2173 l_ps_rec ar_payment_schedules%ROWTYPE;
2174 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
2175 l_action VARCHAR2(30);
2176
2177 BEGIN
2178
2179 IF PG_DEBUG in ('Y', 'C') THEN
2180 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Approve_BR_Remit ()+ ');
2181 END IF;
2182
2183
2184 /*-----------------------------------------------+
2185 | Standard start of API savepoint |
2186 +-----------------------------------------------*/
2187
2188 SAVEPOINT Approve_BR_Remit_PVT;
2189
2190
2191 /*----------------------------------------------+
2192 | Fetch BR Information |
2193 +-----------------------------------------------*/
2194
2195 arp_cr_batches_pkg.fetch_p (p_batch_id, l_batch_rec);
2196
2197 arp_ps_pkg.fetch_p (p_ps_id, l_ps_rec);
2198
2199 ARP_CT_PKG.lock_fetch_p (l_trx_rec, l_ps_rec.customer_trx_id);
2200
2201
2202 /*-----------------------------------------------+
2203 | Validate the action |
2204 +-----------------------------------------------*/
2205
2206 l_action := C_APPROVE_REMIT;
2207
2208 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
2209 p_customer_trx_id => l_ps_rec.customer_trx_id ,
2210 p_complete_flag => C_ACTION_REC.complete_flag ,
2211 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
2212 p_accept_flag => C_ACTION_REC.accept_flag ,
2213 p_cancel_flag => C_ACTION_REC.cancel_flag ,
2214 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
2215 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
2216 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
2217 p_hold_flag => C_ACTION_REC.hold_flag ,
2218 p_unhold_flag => C_ACTION_REC.unhold_flag ,
2219 p_recall_flag => C_ACTION_REC.recall_flag ,
2220 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
2221 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
2222 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
2223 p_protest_flag => C_ACTION_REC.protest_flag ,
2224 p_endorse_flag => C_ACTION_REC.endorse_flag ,
2225 p_restate_flag => C_ACTION_REC.restate_flag ,
2226 p_exchange_flag => C_ACTION_REC.exchange_flag ,
2227 p_delete_flag => C_ACTION_REC.delete_flag );
2228
2229
2230 -- Do not continue if the action is not allowed for the BR
2231
2232 IF (C_ACTION_REC.approve_remit_flag <> 'Y')
2233 THEN
2234 IF PG_DEBUG in ('Y', 'C') THEN
2235 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_ps_rec.customer_trx_id);
2236 END IF;
2237 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_APPROVE' );
2238 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
2239 app_exception.raise_exception;
2240 END IF;
2241
2242
2243 /*-----------------------------------------------+
2244 | Data preparation |
2245 +-----------------------------------------------*/
2246
2247
2248 ARP_CT_PKG.fetch_p (l_trx_rec, l_ps_rec.customer_trx_id);
2249
2250 l_trh_rec.customer_trx_id := l_ps_rec.customer_trx_id;
2251 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
2252
2253
2254 /*----------------------------------------------+
2255 | Remittance Approval |
2256 +-----------------------------------------------*/
2257
2258 IF (l_batch_rec.remit_method_code = C_STANDARD)
2259 THEN
2260 /*----------------------------------------------+
2261 | Standard Remittance Approval |
2262 +-----------------------------------------------*/
2263
2264 l_action := C_REMIT_STANDARD;
2265 l_trh_rec.postable_flag := 'Y';
2266 l_trh_rec.current_accounted_flag:= 'Y';
2267
2268
2269 ELSIF (l_batch_rec.remit_method_code = C_FACTORING AND l_batch_rec.with_recourse_flag = 'Y')
2270 THEN
2271 /*----------------------------------------------+
2272 | Remittance Method : Factore With Recourse |
2273 +-----------------------------------------------*/
2274
2275 l_action := C_FACTORE_RECOURSE;
2276 l_trh_rec.postable_flag := 'Y';
2277 l_trh_rec.current_accounted_flag:= 'Y';
2278 AR_BILLS_MAINTAIN_LIB_PVT.Factore_Recourse (l_batch_rec, l_ps_rec, l_trh_rec);
2279
2280
2281 ELSIF (l_batch_rec.remit_method_code = C_FACTORING AND l_batch_rec.with_recourse_flag = 'N')
2282 THEN
2283 /*----------------------------------------------+
2284 | Remittance Method : Factore Without Recourse |
2285 +-----------------------------------------------*/
2286
2287 l_action := C_FACTORE;
2288 l_trh_rec.postable_flag := 'N';
2289 AR_BILLS_MAINTAIN_LIB_PVT.Factore_Without_Recourse (l_batch_rec, l_ps_rec);
2290 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (p_ps_id, NULL , NULL);
2291
2292 /*----------------------------------------------+
2293 | Insert the First Transaction History Record |
2294 +-----------------------------------------------*/
2295
2296 -- Fetch the new status and new event of the BR
2297
2298 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
2299 p_trx_rec => l_trx_rec ,
2300 p_action => l_action ,
2301 p_new_status => l_trh_rec.status,
2302 p_new_event => l_trh_rec.event );
2303
2304 l_trh_rec.trx_date := trunc(l_batch_rec.batch_date) ;
2305 l_trh_rec.gl_date := trunc(l_batch_rec.gl_date) ;
2306 l_trh_rec.transaction_history_id:= NULL ;
2307 l_trh_rec.current_record_flag := 'Y' ;
2308 l_trh_rec.prv_trx_history_id := NULL ;
2309 l_trh_rec.posting_control_id := -3 ;
2310 l_trh_rec.gl_posted_date := NULL ;
2311 l_trh_rec.first_posted_record_flag := 'N' ;
2312 l_trh_rec.created_from := 'ARBRMAIB' ;
2313 l_trh_rec.batch_id := NULL ;
2314
2315
2316 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
2317 l_trh_rec.transaction_history_id);
2318
2319 ELSE
2320 /*----------------------------------------------+
2321 | Remittance Method Unknown |
2322 +-----------------------------------------------*/
2323
2324 IF PG_DEBUG in ('Y', 'C') THEN
2325 arp_util.debug( '>>>>>>>>>> The remittance method : ' || l_batch_rec.remit_method_code || 'Recourse Flag : ' || l_batch_rec.with_recourse_flag || ' is not handled');
2326 END IF;
2327 FND_MESSAGE.set_name ( 'AR', 'AR_BR_INVALID_REMIT_METHOD');
2328 app_exception.raise_exception;
2329
2330 END IF;
2331
2332
2333 /*----------------------------------------------+
2334 | Store the Remittance Information in the |
2335 | BR Header |
2336 +-----------------------------------------------*/
2337
2338 l_trx_rec.remittance_batch_id := p_batch_id;
2339 l_trx_rec.receipt_method_id := l_batch_rec.receipt_method_id;
2340 l_trx_rec.remit_bank_acct_use_id := l_batch_rec.remit_bank_acct_use_id;
2341
2342 ARP_PROCESS_BR_HEADER.update_header ( l_trx_rec ,
2343 l_trx_rec.customer_trx_id);
2344
2345
2346 /*----------------------------------------------+
2347 | Insert the Transaction History Record |
2348 +-----------------------------------------------*/
2349
2350 -- Fetch the new status and new event of the BR
2351
2352 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
2353 p_trx_rec => l_trx_rec ,
2354 p_action => l_action ,
2355 p_new_status => l_trh_rec.status,
2356 p_new_event => l_trh_rec.event );
2357
2358 l_trh_rec.trx_date := trunc(l_batch_rec.batch_date) ;
2359 l_trh_rec.gl_date := trunc(l_batch_rec.gl_date) ;
2360 l_trh_rec.transaction_history_id:= NULL ;
2361 l_trh_rec.current_record_flag := 'Y' ;
2362 l_trh_rec.prv_trx_history_id := NULL ;
2363 l_trh_rec.posting_control_id := -3 ;
2364 l_trh_rec.gl_posted_date := NULL ;
2365 l_trh_rec.first_posted_record_flag := 'N' ;
2366 l_trh_rec.created_from := 'ARBRMAIB' ;
2367 l_trh_rec.batch_id := p_batch_id ;
2368
2369
2370 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
2371 l_trh_rec.transaction_history_id);
2372
2373
2374 /*----------------------------------------------+
2375 | Populate LINK_TO_TRX_HISTORY_ID on the |
2376 | application that closes the BR for Factore |
2377 | without recourse |
2378 +-----------------------------------------------*/
2379
2380 IF (l_batch_rec.remit_method_code = C_FACTORING AND l_batch_rec.with_recourse_flag = 'N')
2381 THEN
2382
2383 AR_BILLS_MAINTAIN_LIB_PVT.Link_Application_History (l_trh_rec);
2384
2385 END IF;
2386
2387
2388
2389 /*-----------------------------------------------+
2390 | Output parameter |
2391 +------------------------------------------------*/
2392
2393 p_status := l_trh_rec.status ;
2394
2395
2396 IF PG_DEBUG in ('Y', 'C') THEN
2397 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Approve_BR_Remit ()- ');
2398 END IF;
2399
2400 EXCEPTION
2401 WHEN OTHERS THEN
2402 IF PG_DEBUG in ('Y', 'C') THEN
2403 arp_util.debug('EXCEPTION OTHERS: AR_BILLS_MAINTAIN_PUB.Approve_BR_Remit');
2404 arp_util.debug( SQLCODE);
2405 arp_util.debug( SQLERRM);
2406 END IF;
2407 ROLLBACK TO Approve_BR_Remit_PVT;
2408 RAISE;
2409
2410
2411 END Approve_BR_Remit;
2412
2413
2414 /*==============================================================================+
2415 | PROCEDURE |
2416 | Cancel_BR |
2417 | |
2418 | DESCRIPTION |
2419 | Cancels a BR |
2420 | |
2421 +==============================================================================*/
2422
2423
2424 PROCEDURE Cancel_BR (
2425
2426 -- ***** Standard API parameters *****
2427
2428 p_api_version IN NUMBER ,
2429 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
2430 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
2431 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
2432 x_return_status OUT NOCOPY VARCHAR2 ,
2433 x_msg_count OUT NOCOPY NUMBER ,
2434 x_msg_data OUT NOCOPY VARCHAR2 ,
2435
2436 -- ***** Input parameters *****
2437
2438 p_customer_trx_id IN NUMBER ,
2439 p_cancel_date IN DATE ,
2440 p_cancel_gl_date IN DATE ,
2441 p_cancel_comments IN VARCHAR2 ,
2442
2443
2444 -- ***** Output parameters *****
2445
2446 p_status OUT NOCOPY VARCHAR2 )
2447
2448
2449 IS
2450 l_api_name CONSTANT VARCHAR2(20) := 'Cancel_BR';
2451 l_api_version CONSTANT NUMBER := 1.0;
2452
2453 l_trh_rec ar_transaction_history%ROWTYPE;
2454 l_trx_rec ra_customer_trx%ROWTYPE;
2455 l_ps_rec ar_payment_schedules%ROWTYPE;
2456
2457 l_acceptance_flag VARCHAR2(1) ;
2458
2459 l_action VARCHAR2(30) ;
2460 l_trx_date DATE ;
2461 l_gl_date DATE ;
2462
2463 l_gl_date_closed DATE ;
2464 l_actual_date_closed DATE ;
2465 l_mesg VARCHAR2(2000);
2466
2467
2468 BEGIN
2469
2470 IF PG_DEBUG in ('Y', 'C') THEN
2471 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Cancel_BR()+ ');
2472 END IF;
2473
2474 x_msg_count := NULL;
2475 x_msg_data := NULL;
2476 /*-----------------------------------------------+
2477 | Standard start of API savepoint |
2478 +-----------------------------------------------*/
2479
2480 SAVEPOINT Cancel_BR_PVT;
2481
2482 /*-----------------------------------------------+
2483 | Standard call to check for call compatibility |
2484 +-----------------------------------------------*/
2485
2486 IF NOT FND_API.Compatible_API_Call( l_api_version ,
2487 p_api_version ,
2488 l_api_name ,
2489 G_PKG_NAME )
2490 THEN
2491 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2492 END IF;
2493
2494
2495 /*--------------------------------------------------------------+
2496 | Initialize message list if p_init_msg_list is set to TRUE |
2497 +--------------------------------------------------------------*/
2498
2499 IF FND_API.to_Boolean( p_init_msg_list ) THEN
2500 FND_MSG_PUB.initialize;
2501 END IF;
2502
2503
2504 /*-----------------------------------------------+
2505 | Initialize return status to SUCCESS |
2506 +-----------------------------------------------*/
2507
2508 x_return_status := FND_API.G_RET_STS_SUCCESS;
2509
2510
2511 /*-----------------------------------------------------------------------+
2512 | ============ START OF API BODY - CANCEL BR =================== |
2513 +-----------------------------------------------------------------------*/
2514
2515
2516 /*-----------------------------------------------+
2517 | Validate the action |
2518 +-----------------------------------------------*/
2519
2520 l_action := C_CANCEL;
2521
2522 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
2523 p_customer_trx_id => p_customer_trx_id ,
2524 p_complete_flag => C_ACTION_REC.complete_flag ,
2525 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
2526 p_accept_flag => C_ACTION_REC.accept_flag ,
2527 p_cancel_flag => C_ACTION_REC.cancel_flag ,
2528 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
2529 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
2530 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
2531 p_hold_flag => C_ACTION_REC.hold_flag ,
2532 p_unhold_flag => C_ACTION_REC.unhold_flag ,
2533 p_recall_flag => C_ACTION_REC.recall_flag ,
2534 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
2535 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
2536 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
2537 p_protest_flag => C_ACTION_REC.protest_flag ,
2538 p_endorse_flag => C_ACTION_REC.endorse_flag ,
2539 p_restate_flag => C_ACTION_REC.restate_flag ,
2540 p_exchange_flag => C_ACTION_REC.exchange_flag ,
2541 p_delete_flag => C_ACTION_REC.delete_flag );
2542
2543
2544 -- Do not continue if the action is not allowed for the BR
2545
2546 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
2547
2548 IF (C_ACTION_REC.cancel_flag <> 'Y')
2549 THEN
2550 IF PG_DEBUG in ('Y', 'C') THEN
2551 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
2552 END IF;
2553 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_CANCEL' );
2554 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
2555 app_exception.raise_exception;
2556 END IF;
2557
2558
2559
2560 /*-----------------------------------------------+
2561 | Data preparation |
2562 +-----------------------------------------------*/
2563
2564 l_trh_rec.customer_trx_id := p_customer_trx_id;
2565 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
2566
2567 l_trx_date := trunc(p_cancel_date);
2568 l_gl_date := trunc(p_cancel_gl_date);
2569
2570
2571 /*-----------------------------------------------+
2572 | Data Defaulting |
2573 +-----------------------------------------------*/
2574
2575 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
2576
2577
2578 /*-----------------------------------------------+
2579 | Data Validation |
2580 +-----------------------------------------------*/
2581
2582 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_CANCEL');
2583 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
2584
2585 l_trh_rec.trx_date := l_trx_date ;
2586 l_trh_rec.gl_date := l_gl_date ;
2587 l_trh_rec.comments := p_cancel_comments;
2588
2589 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Cancel_BR (p_customer_trx_id);
2590
2591
2592 /*-----------------------------------------------+
2593 | BR Cancel |
2594 +------------------------------------------------*/
2595
2596 IF (l_trh_rec.status = C_PENDING_ACCEPTANCE)
2597 THEN
2598 l_acceptance_flag := 'Y';
2599 l_trh_rec.postable_flag := 'N';
2600 l_trh_rec.current_accounted_flag:= 'N';
2601 ELSE
2602 l_acceptance_flag := 'N';
2603 l_trh_rec.postable_flag := 'Y';
2604 l_trh_rec.current_accounted_flag:= 'Y';
2605 END IF;
2606
2607 AR_BILLS_MAINTAIN_LIB_PVT.Reverse_Assignments_Adjustment (l_trh_rec, l_acceptance_flag);
2608
2609
2610 /*----------------------------------------------+
2611 | Insert the Transaction History Record |
2612 +-----------------------------------------------*/
2613
2614 -- Fetch the new status and new event of the BR
2615
2616 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
2617 p_trx_rec => l_trx_rec ,
2618 p_action => l_action ,
2619 p_new_status => l_trh_rec.status,
2620 p_new_event => l_trh_rec.event );
2621
2622 l_trh_rec.transaction_history_id:= NULL ;
2623 l_trh_rec.current_record_flag := 'Y' ;
2624 l_trh_rec.prv_trx_history_id := NULL ;
2625 l_trh_rec.posting_control_id := -3 ;
2626 l_trh_rec.gl_posted_date := NULL ;
2627 l_trh_rec.first_posted_record_flag := 'N' ;
2628 l_trh_rec.created_from := 'ARBRMAIB' ;
2629 l_trh_rec.batch_id := NULL ;
2630
2631 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
2632 l_trh_rec.transaction_history_id);
2633
2634
2635 /*----------------------------------------------+
2636 | Close the Payment Schedule of the BR |
2637 +-----------------------------------------------*/
2638
2639 IF (l_acceptance_flag = 'N')
2640 THEN
2641 arp_ps_pkg.set_to_dummy (l_ps_rec);
2642 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
2643 arp_ps_pkg.lock_p(l_ps_rec.payment_schedule_id);
2644
2645 arp_ps_util.get_closed_dates (
2646 l_ps_rec.payment_schedule_id ,
2647 l_trh_rec.trx_date ,
2648 l_trh_rec.gl_date ,
2649 l_gl_date_closed ,
2650 l_actual_date_closed, 'BR' );
2651
2652 l_ps_rec.status := 'CL' ;
2653 l_ps_rec.amount_due_remaining := 0 ;
2654 l_ps_rec.acctd_amount_due_remaining := 0 ;
2655 l_ps_rec.amount_line_items_remaining := 0 ;
2656 l_ps_rec.receivables_charges_remaining := 0 ;
2657 l_ps_rec.freight_remaining := 0 ;
2658 l_ps_rec.tax_remaining := 0 ;
2659 l_ps_rec.actual_date_closed := l_actual_date_closed ;
2660 l_ps_rec.gl_date_closed := l_gl_date_closed ;
2661
2662
2663
2664 arp_ps_pkg.update_p (l_ps_rec, l_ps_rec.payment_schedule_id);
2665 END IF;
2666
2667 /*-----------------------------------------------+
2668 | Output parameter |
2669 +------------------------------------------------*/
2670
2671 p_status := l_trh_rec.status ;
2672
2673
2674 /*-----------------------------------------------+
2675 | Standard check of p_commit |
2676 +-----------------------------------------------*/
2677
2678 IF FND_API.To_Boolean( p_commit )
2679 THEN
2680 IF PG_DEBUG in ('Y', 'C') THEN
2681 arp_util.debug( 'committing');
2682 END IF;
2683 Commit;
2684 END IF;
2685
2686 IF PG_DEBUG in ('Y', 'C') THEN
2687 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Cancel_BR()- ');
2688 END IF;
2689
2690
2691 EXCEPTION
2692 WHEN FND_API.G_EXC_ERROR THEN
2693 IF PG_DEBUG in ('Y', 'C') THEN
2694 arp_util.debug( 'SQLCODE : ' || SQLCODE);
2695 arp_util.debug( 'SQLERRM : ' || SQLERRM);
2696 END IF;
2697 ROLLBACK TO Cancel_BR_PVT;
2698 x_return_status := FND_API.G_RET_STS_ERROR ;
2699 IF PG_DEBUG in ('Y', 'C') THEN
2700 arp_util.debug( 'Exception Error');
2701 END IF;
2702 RAISE;
2703
2704
2705 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2706 IF PG_DEBUG in ('Y', 'C') THEN
2707 arp_util.debug( 'SQLCODE : ' || SQLCODE);
2708 arp_util.debug( 'SQLERRM : ' || SQLERRM);
2709 END IF;
2710 ROLLBACK TO Cancel_BR_PVT;
2711 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2712 IF PG_DEBUG in ('Y', 'C') THEN
2713 arp_util.debug( 'Exception Unexpected Error');
2714 END IF;
2715 RAISE;
2716
2717
2718 WHEN OTHERS THEN
2719 /*-------------------------------------------------------+
2720 | Handle application errors that result from trapable |
2721 | error conditions. The error messages have already |
2722 | been put on the error stack. |
2723 +-------------------------------------------------------*/
2724
2725 IF PG_DEBUG in ('Y', 'C') THEN
2726 arp_util.debug( 'SQLCODE : ' || SQLCODE);
2727 arp_util.debug( 'SQLERRM : ' || SQLERRM);
2728 END IF;
2729
2730 IF (SQLCODE = -20001)
2731 THEN
2732 ROLLBACK TO Cancel_BR_PVT;
2733 x_return_status := FND_API.G_RET_STS_ERROR ;
2734 RAISE;
2735 ELSE
2736 NULL;
2737 END IF;
2738
2739 ROLLBACK TO Cancel_BR_PVT;
2740 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2741 RAISE;
2742
2743 END Cancel_BR;
2744
2745
2746 /*==============================================================================+
2747 | PROCEDURE |
2748 | Unpaid_BR |
2749 | |
2750 | DESCRIPTION |
2751 | Unpaids a BR |
2752 | |
2753 +==============================================================================*/
2754
2755
2756 PROCEDURE Unpaid_BR (
2757
2758 -- ***** Standard API parameters *****
2759
2760 p_api_version IN NUMBER ,
2761 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
2762 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
2763 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
2764 x_return_status OUT NOCOPY VARCHAR2 ,
2765 x_msg_count OUT NOCOPY NUMBER ,
2766 x_msg_data OUT NOCOPY VARCHAR2 ,
2767
2768
2769 -- ***** Input parameters *****
2770
2771 p_customer_trx_id IN NUMBER ,
2772 p_unpaid_date IN DATE ,
2773 p_unpaid_gl_date IN DATE ,
2774 p_unpaid_reason IN VARCHAR2 ,
2775 p_unpaid_comments IN VARCHAR2 ,
2776
2777 -- ***** Output parameters *****
2778
2779 p_status OUT NOCOPY VARCHAR2 )
2780
2781 IS
2782 l_api_name CONSTANT VARCHAR2(20) := 'Unpaid_BR';
2783 l_api_version CONSTANT NUMBER := 1.0;
2784
2785 l_trh_rec ar_transaction_history%ROWTYPE;
2786 l_ps_rec ar_payment_schedules%ROWTYPE;
2787 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
2788
2789 l_trx_date DATE ;
2790 l_gl_date DATE ;
2791 l_action VARCHAR2(30);
2792 l_mesg VARCHAR2(2000);
2793
2794 BEGIN
2795
2796 IF PG_DEBUG in ('Y', 'C') THEN
2797 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Unpaid_BR()+ ');
2798 END IF;
2799
2800 x_msg_count := NULL;
2801 x_msg_data := NULL;
2802
2803 /*-----------------------------------------------+
2804 | Standard start of API savepoint |
2805 +-----------------------------------------------*/
2806
2807 SAVEPOINT Unpaid_BR_PVT;
2808
2809 /*-----------------------------------------------+
2810 | Standard call to check for call compatibility |
2811 +-----------------------------------------------*/
2812
2813 IF NOT FND_API.Compatible_API_Call( l_api_version ,
2814 p_api_version ,
2815 l_api_name ,
2816 G_PKG_NAME )
2817 THEN
2818 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2819 END IF;
2820
2821
2822 /*--------------------------------------------------------------+
2823 | Initialize message list if p_init_msg_list is set to TRUE |
2824 +--------------------------------------------------------------*/
2825
2826 IF FND_API.to_Boolean( p_init_msg_list ) THEN
2827 FND_MSG_PUB.initialize;
2828 END IF;
2829
2830
2831 /*-----------------------------------------------+
2832 | Initialize return status to SUCCESS |
2833 +-----------------------------------------------*/
2834
2835 x_return_status := FND_API.G_RET_STS_SUCCESS;
2836
2837
2838 /*-----------------------------------------------------------------------+
2839 | ============ START OF API BODY - UNPAID BR =================== |
2840 +-----------------------------------------------------------------------*/
2841
2842
2843 /*-----------------------------------------------+
2844 | Validate the action |
2845 +-----------------------------------------------*/
2846
2847 l_action := C_UNPAID;
2848
2849 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
2850 p_customer_trx_id => p_customer_trx_id ,
2851 p_complete_flag => C_ACTION_REC.complete_flag ,
2852 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
2853 p_accept_flag => C_ACTION_REC.accept_flag ,
2854 p_cancel_flag => C_ACTION_REC.cancel_flag ,
2855 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
2856 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
2857 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
2858 p_hold_flag => C_ACTION_REC.hold_flag ,
2859 p_unhold_flag => C_ACTION_REC.unhold_flag ,
2860 p_recall_flag => C_ACTION_REC.recall_flag ,
2861 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
2862 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
2863 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
2864 p_protest_flag => C_ACTION_REC.protest_flag ,
2865 p_endorse_flag => C_ACTION_REC.endorse_flag ,
2866 p_restate_flag => C_ACTION_REC.restate_flag ,
2867 p_exchange_flag => C_ACTION_REC.exchange_flag ,
2868 p_delete_flag => C_ACTION_REC.delete_flag );
2869
2870
2871 -- Do not continue if the action is not allowed for the BR
2872
2873 ARP_CT_PKG.lock_fetch_p (l_trx_rec, p_customer_trx_id);
2874
2875 IF (C_ACTION_REC.unpaid_flag <> 'Y')
2876 THEN
2877 IF PG_DEBUG in ('Y', 'C') THEN
2878 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
2879 END IF;
2880 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_UNPAID' );
2881 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
2882 app_exception.raise_exception;
2883 END IF;
2884
2885
2886 /*-----------------------------------------------+
2887 | Data preparation |
2888 +-----------------------------------------------*/
2889
2890 l_trh_rec.customer_trx_id := p_customer_trx_id;
2891 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
2892
2893 l_trx_date := trunc(p_unpaid_date);
2894 l_gl_date := trunc(p_unpaid_gl_date);
2895
2896
2897 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
2898
2899 /*-----------------------------------------------+
2900 | Data Defaulting |
2901 +-----------------------------------------------*/
2902
2903 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
2904
2905
2906 /*-----------------------------------------------+
2907 | Data Validation |
2908 +-----------------------------------------------*/
2909
2910 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_UNPAID');
2911 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
2912
2913 l_trh_rec.trx_date := l_trx_date ;
2914 l_trh_rec.gl_date := l_gl_date ;
2915 l_trh_rec.comments := p_unpaid_comments;
2916
2917 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Unpaid_BR (l_trh_rec, p_unpaid_reason);
2918
2919
2920 /*-----------------------------------------------+
2921 | BR Unpaid |
2922 +------------------------------------------------*/
2923
2924 AR_BILLS_MAINTAIN_LIB_PVT.Unpaid (l_trh_rec, l_ps_rec.payment_schedule_id, l_trx_rec.remittance_batch_id, p_unpaid_reason);
2925
2926
2927 /*----------------------------------------------+
2928 | Set the Unpaid Flag to 'Y' in the BR Header |
2929 +-----------------------------------------------*/
2930
2931 l_trx_rec.br_unpaid_flag := 'Y';
2932
2933 /*----------------------------------------------+
2934 | Remove the Remittance Information of the |
2935 | BR Header if it exists |
2936 +-----------------------------------------------*/
2937
2938 l_trx_rec.receipt_method_id := NULL;
2939
2940
2941 ARP_PROCESS_BR_HEADER.update_header (l_trx_rec, l_trx_rec.customer_trx_id);
2942
2943
2944 /*----------------------------------------------+
2945 | Insert the Transaction History Record |
2946 +-----------------------------------------------*/
2947
2948 -- Fetch the new status and new event of the BR
2949
2950 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
2951 p_trx_rec => l_trx_rec ,
2952 p_action => l_action ,
2953 p_new_status => l_trh_rec.status,
2954 p_new_event => l_trh_rec.event );
2955
2956 l_trh_rec.transaction_history_id:= NULL ;
2957 l_trh_rec.current_record_flag := 'Y' ;
2958 l_trh_rec.prv_trx_history_id := NULL ;
2959 l_trh_rec.posting_control_id := -3 ;
2960 l_trh_rec.gl_posted_date := NULL ;
2961 l_trh_rec.first_posted_record_flag := 'N' ;
2962 l_trh_rec.created_from := 'ARBRMAIB' ;
2963 l_trh_rec.batch_id := NULL ;
2964
2965 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
2966
2967
2968 /*-----------------------------------------------+
2969 | Output parameter |
2970 +------------------------------------------------*/
2971
2972 p_status := l_trh_rec.status ;
2973
2974
2975 /*-----------------------------------------------+
2976 | Standard check of p_commit |
2977 +-----------------------------------------------*/
2978
2979 IF FND_API.To_Boolean( p_commit )
2980 THEN
2981 IF PG_DEBUG in ('Y', 'C') THEN
2982 arp_util.debug( 'committing');
2983 END IF;
2984 Commit;
2985 END IF;
2986
2987 IF PG_DEBUG in ('Y', 'C') THEN
2988 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Unpaid_BR()- ');
2989 END IF;
2990
2991
2992 EXCEPTION
2993 WHEN FND_API.G_EXC_ERROR THEN
2994 IF PG_DEBUG in ('Y', 'C') THEN
2995 arp_util.debug( 'SQLCODE : ' || SQLCODE);
2996 arp_util.debug( 'SQLERRM : ' || SQLERRM);
2997 END IF;
2998 ROLLBACK TO Unpaid_BR_PVT;
2999 x_return_status := FND_API.G_RET_STS_ERROR ;
3000 IF PG_DEBUG in ('Y', 'C') THEN
3001 arp_util.debug( 'Exception Error');
3002 END IF;
3003 RAISE;
3004
3005
3006 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3007 IF PG_DEBUG in ('Y', 'C') THEN
3008 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3009 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3010 END IF;
3011 ROLLBACK TO Unpaid_BR_PVT;
3012 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3013 IF PG_DEBUG in ('Y', 'C') THEN
3014 arp_util.debug( 'Exception Unexpected Error');
3015 END IF;
3016 RAISE;
3017
3018
3019 WHEN OTHERS THEN
3020 /*-------------------------------------------------------+
3021 | Handle application errors that result from trapable |
3022 | error conditions. The error messages have already |
3023 | been put on the error stack. |
3024 +-------------------------------------------------------*/
3025
3026 IF PG_DEBUG in ('Y', 'C') THEN
3027 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3028 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3029 END IF;
3030
3031 IF (SQLCODE = -20001)
3032 THEN
3033 ROLLBACK TO Unpaid_BR_PVT;
3034 x_return_status := FND_API.G_RET_STS_ERROR ;
3035 RAISE;
3036 ELSE
3037 NULL;
3038 END IF;
3039
3040 ROLLBACK TO Unpaid_BR_PVT;
3041 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3042 RAISE;
3043
3044 END Unpaid_BR;
3045
3046
3047 /*==============================================================================+
3048 | PROCEDURE |
3049 | Endorse_BR |
3050 | |
3051 | DESCRIPTION |
3052 | Endorses a BR |
3053 | |
3054 +==============================================================================*/
3055
3056
3057 PROCEDURE Endorse_BR (
3058
3059 -- ***** Standard API parameters *****
3060
3061 p_api_version IN NUMBER ,
3062 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
3063 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
3064 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
3065 x_return_status OUT NOCOPY VARCHAR2 ,
3066 x_msg_count OUT NOCOPY NUMBER ,
3067 x_msg_data OUT NOCOPY VARCHAR2 ,
3068
3069 -- ***** Input parameters *****
3070
3071 p_customer_trx_id IN NUMBER ,
3072 p_endorse_date IN DATE ,
3073 p_endorse_gl_date IN DATE ,
3074 p_adjustment_activity_id IN NUMBER ,
3075 p_endorse_comments IN VARCHAR2 ,
3076 p_recourse_flag IN VARCHAR2 ,
3077
3078 -- ***** Output parameters *****
3079
3080 p_status OUT NOCOPY VARCHAR2) IS
3081
3082 l_api_name CONSTANT VARCHAR2(20) := 'Endorse_BR';
3083 l_api_version CONSTANT NUMBER := 1.0;
3084 l_trh_rec ar_transaction_history%ROWTYPE;
3085 l_ps_rec ar_payment_schedules%ROWTYPE;
3086 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
3087 l_action VARCHAR2(30);
3088 new_adj_id ar_adjustments.adjustment_id%type;
3089 l_move_deferred_tax VARCHAR2(1) := 'N';
3090 l_trx_date DATE;
3091 l_gl_date DATE;
3092 l_mesg VARCHAR2(2000);
3093 -- Added for bug # 2712726
3094 -- ORASHID
3095 --
3096 l_nocopy_payment_schedule_id ar_payment_schedules.payment_schedule_id%TYPE;
3097
3098 BEGIN
3099
3100 IF PG_DEBUG in ('Y', 'C') THEN
3101 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Endorse_BR()+ ');
3102 END IF;
3103
3104 x_msg_count := NULL;
3105 x_msg_data := NULL;
3106
3107 /*-----------------------------------------------+
3108 | Standard start of API savepoint |
3109 +-----------------------------------------------*/
3110
3111 SAVEPOINT Endorse_BR_PVT;
3112
3113 /*-----------------------------------------------+
3114 | Standard call to check for call compatibility |
3115 +-----------------------------------------------*/
3116
3117 IF NOT FND_API.Compatible_API_Call( l_api_version ,
3118 p_api_version ,
3119 l_api_name ,
3120 G_PKG_NAME )
3121 THEN
3122 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3123 END IF;
3124
3125
3126 /*--------------------------------------------------------------+
3127 | Initialize message list if p_init_msg_list is set to TRUE |
3128 +--------------------------------------------------------------*/
3129
3130 IF FND_API.to_Boolean( p_init_msg_list ) THEN
3131 FND_MSG_PUB.initialize;
3132 END IF;
3133
3134
3135 /*-----------------------------------------------+
3136 | Initialize return status to SUCCESS |
3137 +-----------------------------------------------*/
3138
3139 x_return_status := FND_API.G_RET_STS_SUCCESS;
3140
3141
3142 /*-----------------------------------------------------------------------+
3143 | ============ START OF API BODY - ENDORSE BR =================== |
3144 +-----------------------------------------------------------------------*/
3145
3146
3147 /*-----------------------------------------------+
3148 | Validate the action |
3149 +-----------------------------------------------*/
3150
3151 l_action := C_ENDORSE;
3152
3153 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
3154 p_customer_trx_id => p_customer_trx_id ,
3155 p_complete_flag => C_ACTION_REC.complete_flag ,
3156 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
3157 p_accept_flag => C_ACTION_REC.accept_flag ,
3158 p_cancel_flag => C_ACTION_REC.cancel_flag ,
3159 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
3160 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
3161 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
3162 p_hold_flag => C_ACTION_REC.hold_flag ,
3163 p_unhold_flag => C_ACTION_REC.unhold_flag ,
3164 p_recall_flag => C_ACTION_REC.recall_flag ,
3165 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
3166 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
3167 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
3168 p_protest_flag => C_ACTION_REC.protest_flag ,
3169 p_endorse_flag => C_ACTION_REC.endorse_flag ,
3170 p_restate_flag => C_ACTION_REC.restate_flag ,
3171 p_exchange_flag => C_ACTION_REC.exchange_flag ,
3172 p_delete_flag => C_ACTION_REC.delete_flag );
3173
3174 -- Do not continue if the action is not allowed for the BR
3175
3176 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
3177
3178 IF (C_ACTION_REC.endorse_flag <> 'Y')
3179 THEN
3180 IF PG_DEBUG in ('Y', 'C') THEN
3181 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
3182 END IF;
3183 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_ENDORSE' );
3184 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
3185 app_exception.raise_exception;
3186 END IF;
3187
3188
3189 /*-----------------------------------------------+
3190 | Data preparation |
3191 +-----------------------------------------------*/
3192
3193 l_trh_rec.customer_trx_id := p_customer_trx_id;
3194 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
3195
3196 l_trx_date := trunc(p_endorse_date);
3197 l_gl_date := trunc(p_endorse_gl_date);
3198
3199 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
3200
3201 -- Modified for bug # 2712726
3202 -- ORASHID
3203 --
3204 l_nocopy_payment_schedule_id := l_ps_rec.payment_schedule_id;
3205 arp_ps_pkg.fetch_p(l_nocopy_payment_schedule_id, l_ps_rec);
3206
3207
3208 /*-----------------------------------------------+
3209 | Data Defaulting |
3210 +-----------------------------------------------*/
3211
3212 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
3213
3214
3215 /*----------------------------------------------+
3216 | Data Validation |
3217 +-----------------------------------------------*/
3218
3219 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_ENDORSE');
3220 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
3221
3222 l_trh_rec.trx_date := l_trx_date ;
3223 l_trh_rec.gl_date := l_gl_date ;
3224 l_trh_rec.comments := p_endorse_comments;
3225
3226 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Adj_Activity_ID (p_adjustment_activity_id);
3227
3228
3229 /*----------------------------------------------+
3230 | Endorsement |
3231 +-----------------------------------------------*/
3232
3233
3234 IF (p_recourse_flag = 'Y')
3235 THEN
3236
3237 /*----------------------------------------------+
3238 | Endorsement with recourse |
3239 +-----------------------------------------------*/
3240
3241 l_action := C_ENDORSE_RECOURSE;
3242
3243
3244 /*----------------------------------------------+
3245 | Create an adjustment with a status W : |
3246 | Waiting for approval |
3247 +-----------------------------------------------*/
3248
3249 AR_BILLS_MAINTAIN_LIB_PVT.Create_Adjustment (
3250 l_trh_rec ,
3251 p_customer_trx_id ,
3252 l_ps_rec ,
3253 l_ps_rec.amount_due_original ,
3254 p_adjustment_activity_id ,
3255 'W' ,
3256 l_move_deferred_tax ,
3257 new_adj_id );
3258
3259 /*----------------------------------------------+
3260 | Updates the Payment Schedule of the BR |
3261 | with the Adjustment Information |
3262 +-----------------------------------------------*/
3263
3264 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, 'ADJUSTMENT', new_adj_id);
3265
3266 ELSE
3267
3268 /*----------------------------------------------+
3269 | Endorsement without recourse |
3270 +-----------------------------------------------*/
3271
3272 l_action := C_ENDORSE;
3273
3274
3275 IF (l_ps_rec.tax_remaining IS NOT NULL and l_ps_rec.tax_remaining <> 0)
3276 THEN
3277 l_move_deferred_tax := 'Y';
3278 END IF;
3279
3280 /*----------------------------------------------+
3281 | Create an adjustment with a status A : |
3282 | Approved |
3283 +-----------------------------------------------*/
3284
3285 AR_BILLS_MAINTAIN_LIB_PVT.Create_Adjustment (
3286 l_trh_rec ,
3287 p_customer_trx_id ,
3288 l_ps_rec ,
3289 l_ps_rec.amount_due_original ,
3290 p_adjustment_activity_id ,
3291 'A' ,
3292 l_move_deferred_tax ,
3293 new_adj_id );
3294
3295
3296 /*----------------------------------------------+
3297 | Insert the first Transaction History Record |
3298 +-----------------------------------------------*/
3299
3300 -- Fetch the new status and new event of the BR
3301
3302 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
3303 p_trx_rec => l_trx_rec ,
3304 p_action => l_action ,
3305 p_new_status => l_trh_rec.status,
3306 p_new_event => l_trh_rec.event );
3307
3308 l_trh_rec.transaction_history_id:= NULL ;
3309 l_trh_rec.current_record_flag := 'Y' ;
3310 l_trh_rec.prv_trx_history_id := NULL ;
3311 l_trh_rec.posting_control_id := -3 ;
3312 l_trh_rec.gl_posted_date := NULL ;
3313 l_trh_rec.first_posted_record_flag := 'N' ;
3314 l_trh_rec.created_from := 'ARBRMAIB' ;
3315 l_trh_rec.postable_flag := 'N' ;
3316 l_trh_rec.current_accounted_flag:= 'N' ;
3317
3318 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
3319
3320 END IF;
3321
3322
3323 /*----------------------------------------------+
3324 | Insert the Transaction History Record |
3325 +-----------------------------------------------*/
3326
3327 -- Fetch the new status and new event of the BR
3328
3329 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
3330 p_trx_rec => l_trx_rec ,
3331 p_action => l_action ,
3332 p_new_status => l_trh_rec.status,
3333 p_new_event => l_trh_rec.event );
3334
3335 l_trh_rec.transaction_history_id:= NULL ;
3336 l_trh_rec.current_record_flag := 'Y' ;
3337 l_trh_rec.prv_trx_history_id := NULL ;
3338 l_trh_rec.posting_control_id := -3 ;
3339 l_trh_rec.gl_posted_date := NULL ;
3340 l_trh_rec.first_posted_record_flag := 'N' ;
3341 l_trh_rec.created_from := 'ARBRMAIB' ;
3342 l_trh_rec.postable_flag := 'N' ;
3343 l_trh_rec.current_accounted_flag:= 'N' ;
3344
3345 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
3346
3347
3348 /*-----------------------------------------------+
3349 | Output parameter |
3350 +------------------------------------------------*/
3351
3352 p_status := l_trh_rec.status ;
3353
3354 /*-----------------------------------------------+
3355 | Standard check of p_commit |
3356 +-----------------------------------------------*/
3357
3358 IF FND_API.To_Boolean( p_commit )
3359 THEN
3360 IF PG_DEBUG in ('Y', 'C') THEN
3361 arp_util.debug( 'committing');
3362 END IF;
3363 Commit;
3364 END IF;
3365
3366 IF PG_DEBUG in ('Y', 'C') THEN
3367 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Endorse_BR()- ');
3368 END IF;
3369
3370
3371 EXCEPTION
3372 WHEN FND_API.G_EXC_ERROR THEN
3373 IF PG_DEBUG in ('Y', 'C') THEN
3374 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3375 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3376 END IF;
3377 ROLLBACK TO Endorse_BR_PVT;
3378 x_return_status := FND_API.G_RET_STS_ERROR ;
3379 IF PG_DEBUG in ('Y', 'C') THEN
3380 arp_util.debug( 'Exception Error');
3381 END IF;
3382 RAISE;
3383
3384 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3385 IF PG_DEBUG in ('Y', 'C') THEN
3386 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3387 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3388 END IF;
3389 ROLLBACK TO Endorse_BR_PVT;
3390 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3391 IF PG_DEBUG in ('Y', 'C') THEN
3392 arp_util.debug( 'Exception Unexpected Error');
3393 END IF;
3394 RAISE;
3395
3396
3397 WHEN OTHERS THEN
3398 /*-------------------------------------------------------+
3399 | Handle application errors that result from trapable |
3400 | error conditions. The error messages have already |
3401 | been put on the error stack. |
3402 +-------------------------------------------------------*/
3403
3404 IF PG_DEBUG in ('Y', 'C') THEN
3405 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3406 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3407 END IF;
3408
3409 IF (SQLCODE = -20001)
3410 THEN
3411 ROLLBACK TO Endorse_BR_PVT;
3412 x_return_status := FND_API.G_RET_STS_ERROR ;
3413 RAISE;
3414 ELSE
3415 NULL;
3416 END IF;
3417
3418 ROLLBACK TO Endorse_BR_PVT;
3419 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3420 RAISE;
3421
3422
3423 END Endorse_BR;
3424
3425
3426 /*==============================================================================+
3427 | PROCEDURE |
3428 | Protest_BR |
3429 | |
3430 | DESCRIPTION |
3431 | Protest a BR |
3432 | |
3433 +==============================================================================*/
3434
3435
3436 PROCEDURE Protest_BR (
3437
3438 -- ***** Standard API parameters *****
3439
3440 p_api_version IN NUMBER ,
3441 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
3442 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
3443 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
3444 x_return_status OUT NOCOPY VARCHAR2 ,
3445 x_msg_count OUT NOCOPY NUMBER ,
3446 x_msg_data OUT NOCOPY VARCHAR2 ,
3447
3448 -- ***** Input parameters *****
3449
3450 p_customer_trx_id IN NUMBER ,
3451 p_protest_date IN DATE ,
3452 p_protest_comments IN VARCHAR2 ,
3453
3454 -- ***** Output parameters *****
3455
3456 p_status OUT NOCOPY VARCHAR2 )
3457
3458
3459 IS
3460 l_api_name CONSTANT VARCHAR2(20) := 'Protest_BR';
3461 l_api_version CONSTANT NUMBER := 1.0;
3462
3463 l_trh_rec ar_transaction_history%ROWTYPE;
3464 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
3465 l_action VARCHAR2(30);
3466 l_trx_date DATE;
3467 l_mesg VARCHAR2(2000);
3468
3469 BEGIN
3470
3471 IF PG_DEBUG in ('Y', 'C') THEN
3472 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Protest_BR()+ ');
3473 END IF;
3474
3475 x_msg_count := NULL;
3476 x_msg_data := NULL;
3477
3478 /*-----------------------------------------------+
3479 | Standard start of API savepoint |
3480 +-----------------------------------------------*/
3481
3482 SAVEPOINT Protest_BR_PVT;
3483
3484 /*-----------------------------------------------+
3485 | Standard call to check for call compatibility |
3486 +-----------------------------------------------*/
3487
3488 IF NOT FND_API.Compatible_API_Call( l_api_version ,
3489 p_api_version ,
3490 l_api_name ,
3491 G_PKG_NAME )
3492 THEN
3493 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3494 END IF;
3495
3496
3497 /*--------------------------------------------------------------+
3498 | Initialize message list if p_init_msg_list is set to TRUE |
3499 +--------------------------------------------------------------*/
3500
3501 IF FND_API.to_Boolean( p_init_msg_list ) THEN
3502 FND_MSG_PUB.initialize;
3503 END IF;
3504
3505
3506 /*-----------------------------------------------+
3507 | Initialize return status to SUCCESS |
3508 +-----------------------------------------------*/
3509
3510 x_return_status := FND_API.G_RET_STS_SUCCESS;
3511
3512
3513 /*-----------------------------------------------------------------------+
3514 | ============ START OF API BODY - PROTEST BR =================== |
3515 +-----------------------------------------------------------------------*/
3516
3517
3518 /*-----------------------------------------------+
3519 | Validate the action |
3520 +-----------------------------------------------*/
3521
3522 l_action := C_PROTEST;
3523
3524 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
3525 p_customer_trx_id => p_customer_trx_id ,
3526 p_complete_flag => C_ACTION_REC.complete_flag ,
3527 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
3528 p_accept_flag => C_ACTION_REC.accept_flag ,
3529 p_cancel_flag => C_ACTION_REC.cancel_flag ,
3530 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
3531 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
3532 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
3533 p_hold_flag => C_ACTION_REC.hold_flag ,
3534 p_unhold_flag => C_ACTION_REC.unhold_flag ,
3535 p_recall_flag => C_ACTION_REC.recall_flag ,
3536 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
3537 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
3538 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
3539 p_protest_flag => C_ACTION_REC.protest_flag ,
3540 p_endorse_flag => C_ACTION_REC.endorse_flag ,
3541 p_restate_flag => C_ACTION_REC.restate_flag ,
3542 p_exchange_flag => C_ACTION_REC.exchange_flag ,
3543 p_delete_flag => C_ACTION_REC.delete_flag );
3544
3545
3546 -- Do not continue if the action is not allowed for the BR
3547
3548 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
3549
3550 IF (C_ACTION_REC.protest_flag <> 'Y')
3551 THEN
3552 IF PG_DEBUG in ('Y', 'C') THEN
3553 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
3554 END IF;
3555 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_PROTEST' );
3556 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
3557 app_exception.raise_exception;
3558 END IF;
3559
3560
3561 /*-----------------------------------------------+
3562 | Data preparation |
3563 +-----------------------------------------------*/
3564
3565 l_trh_rec.customer_trx_id := p_customer_trx_id;
3566 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
3567
3568 l_trx_date := trunc(nvl(p_protest_date, sysdate));
3569
3570
3571 /*-----------------------------------------------+
3572 | Data validation |
3573 +-----------------------------------------------*/
3574
3575 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_PROTEST');
3576 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, NULL, l_trh_rec, l_mesg);
3577
3578 l_trh_rec.trx_date := l_trx_date;
3579 l_trh_rec.comments := p_protest_comments;
3580
3581
3582 /*----------------------------------------------+
3583 | Insert the Transaction History Record |
3584 +-----------------------------------------------*/
3585
3586 -- Fetch the new status and new event of the BR
3587
3588 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
3589 p_trx_rec => l_trx_rec ,
3590 p_action => l_action ,
3591 p_new_status => l_trh_rec.status,
3592 p_new_event => l_trh_rec.event );
3593
3594 l_trh_rec.transaction_history_id:= NULL ;
3595 l_trh_rec.current_record_flag := 'Y' ;
3596 l_trh_rec.prv_trx_history_id := NULL ;
3597 l_trh_rec.posting_control_id := -3 ;
3598 l_trh_rec.gl_posted_date := NULL ;
3599 l_trh_rec.first_posted_record_flag := 'N' ;
3600 l_trh_rec.created_from := 'ARBRMAIB' ;
3601 l_trh_rec.postable_flag := 'N' ;
3602 l_trh_rec.current_accounted_flag:= 'N' ;
3603
3604 arp_proc_transaction_history.insert_transaction_history (l_trh_rec, l_trh_rec.transaction_history_id);
3605
3606
3607 /*-----------------------------------------------+
3608 | Output parameter |
3609 +------------------------------------------------*/
3610
3611 p_status := l_trh_rec.status ;
3612
3613
3614 /*-----------------------------------------------+
3615 | Standard check of p_commit |
3616 +-----------------------------------------------*/
3617
3618 IF FND_API.To_Boolean( p_commit )
3619 THEN
3620 IF PG_DEBUG in ('Y', 'C') THEN
3621 arp_util.debug( 'committing');
3622 END IF;
3623 Commit;
3624 END IF;
3625
3626 IF PG_DEBUG in ('Y', 'C') THEN
3627 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Protest_BR()- ');
3628 END IF;
3629
3630
3631 EXCEPTION
3632 WHEN FND_API.G_EXC_ERROR THEN
3633 IF PG_DEBUG in ('Y', 'C') THEN
3634 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3635 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3636 END IF;
3637 ROLLBACK TO Protest_BR_PVT;
3638 x_return_status := FND_API.G_RET_STS_ERROR ;
3639 IF PG_DEBUG in ('Y', 'C') THEN
3640 arp_util.debug( 'Exception Error');
3641 END IF;
3642 RAISE;
3643
3644 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3645 IF PG_DEBUG in ('Y', 'C') THEN
3646 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3647 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3648 END IF;
3649 ROLLBACK TO Protest_BR_PVT;
3650 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3651 IF PG_DEBUG in ('Y', 'C') THEN
3652 arp_util.debug( 'Exception Unexpected Error');
3653 END IF;
3654 RAISE;
3655
3656
3657 WHEN OTHERS THEN
3658 /*-------------------------------------------------------+
3659 | Handle application errors that result from trapable |
3660 | error conditions. The error messages have already |
3661 | been put on the error stack. |
3662 +-------------------------------------------------------*/
3663
3664 IF PG_DEBUG in ('Y', 'C') THEN
3665 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3666 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3667 END IF;
3668
3669 IF (SQLCODE = -20001)
3670 THEN
3671 ROLLBACK TO Protest_BR_PVT;
3672 x_return_status := FND_API.G_RET_STS_ERROR ;
3673 RAISE;
3674 ELSE
3675 NULL;
3676 END IF;
3677
3678 ROLLBACK TO Protest_BR_PVT;
3679 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3680
3681 RAISE;
3682
3683 END Protest_BR;
3684
3685
3686 /*==============================================================================+
3687 | PROCEDURE |
3688 | Restate_BR |
3689 | |
3690 | DESCRIPTION |
3691 | Restates a BR |
3692 | |
3693 +==============================================================================*/
3694
3695
3696 PROCEDURE Restate_BR (
3697
3698 -- ***** Standard API parameters *****
3699
3700 p_api_version IN NUMBER ,
3701 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
3702 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
3703 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
3704 x_return_status OUT NOCOPY VARCHAR2 ,
3705 x_msg_count OUT NOCOPY NUMBER ,
3706 x_msg_data OUT NOCOPY VARCHAR2 ,
3707
3708
3709 -- ***** Input parameters *****
3710
3711 p_customer_trx_id IN NUMBER ,
3712 p_restatement_date IN DATE ,
3713 p_restatement_gl_date IN DATE ,
3714 p_restatement_comments IN VARCHAR2 ,
3715
3716
3717 -- ***** Output parameters *****
3718
3719 p_status OUT NOCOPY VARCHAR2 )
3720
3721 IS
3722 l_api_name CONSTANT VARCHAR2(20) := 'Restate_BR';
3723 l_api_version CONSTANT NUMBER := 1.0;
3724
3725 l_trh_rec ar_transaction_history%ROWTYPE ;
3726 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE ;
3727 l_action VARCHAR2(30) ;
3728 l_trx_date DATE ;
3729 l_gl_date DATE ;
3730 l_mesg VARCHAR2(2000);
3731
3732 BEGIN
3733
3734 IF PG_DEBUG in ('Y', 'C') THEN
3735 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Restate_BR()+ ');
3736 END IF;
3737
3738 x_msg_count := NULL;
3739 x_msg_data := NULL;
3740
3741 /*-----------------------------------------------+
3742 | Standard start of API savepoint |
3743 +-----------------------------------------------*/
3744
3745 SAVEPOINT Restate_BR_PVT;
3746
3747 /*-----------------------------------------------+
3748 | Standard call to check for call compatibility |
3749 +-----------------------------------------------*/
3750
3751 IF NOT FND_API.Compatible_API_Call( l_api_version ,
3752 p_api_version ,
3753 l_api_name ,
3754 G_PKG_NAME )
3755 THEN
3756 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3757 END IF;
3758
3759
3760 /*--------------------------------------------------------------+
3761 | Initialize message list if p_init_msg_list is set to TRUE |
3762 +--------------------------------------------------------------*/
3763
3764 IF FND_API.to_Boolean( p_init_msg_list ) THEN
3765 FND_MSG_PUB.initialize;
3766 END IF;
3767
3768
3769 /*-----------------------------------------------+
3770 | Initialize return status to SUCCESS |
3771 +-----------------------------------------------*/
3772
3773 x_return_status := FND_API.G_RET_STS_SUCCESS;
3774
3775
3776 /*-----------------------------------------------------------------------+
3777 | ============ START OF API BODY - RESTATE BR =================== |
3778 +-----------------------------------------------------------------------*/
3779
3780
3781 /*-----------------------------------------------+
3782 | Validate the action |
3783 +-----------------------------------------------*/
3784
3785 l_action := C_RESTATE;
3786
3787 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
3788 p_customer_trx_id => p_customer_trx_id ,
3789 p_complete_flag => C_ACTION_REC.complete_flag ,
3790 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
3791 p_accept_flag => C_ACTION_REC.accept_flag ,
3792 p_cancel_flag => C_ACTION_REC.cancel_flag ,
3793 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
3794 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
3795 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
3796 p_hold_flag => C_ACTION_REC.hold_flag ,
3797 p_unhold_flag => C_ACTION_REC.unhold_flag ,
3798 p_recall_flag => C_ACTION_REC.recall_flag ,
3799 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
3800 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
3801 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
3802 p_protest_flag => C_ACTION_REC.protest_flag ,
3803 p_endorse_flag => C_ACTION_REC.endorse_flag ,
3804 p_restate_flag => C_ACTION_REC.restate_flag ,
3805 p_exchange_flag => C_ACTION_REC.exchange_flag ,
3806 p_delete_flag => C_ACTION_REC.delete_flag );
3807
3808 -- Do not continue if the action is not allowed for the BR
3809
3810 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
3811
3812 IF (C_ACTION_REC.restate_flag <> 'Y')
3813 THEN
3814 IF PG_DEBUG in ('Y', 'C') THEN
3815 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
3816 END IF;
3817 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_RESTATE' );
3818 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
3819 app_exception.raise_exception;
3820 END IF;
3821
3822
3823 /*----------------------------------------------+
3824 | Data preparation |
3825 +-----------------------------------------------*/
3826
3827 l_trh_rec.customer_trx_id := p_customer_trx_id;
3828 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
3829
3830 l_trx_date := trunc(p_restatement_date);
3831 l_gl_date := trunc(p_restatement_gl_date);
3832
3833 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
3834
3835
3836 /*----------------------------------------------+
3837 | Data validation |
3838 +-----------------------------------------------*/
3839
3840 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_RESTATE');
3841 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
3842
3843 l_trh_rec.trx_date := l_trx_date ;
3844 l_trh_rec.gl_date := l_gl_date ;
3845 l_trh_rec.comments := p_restatement_comments ;
3846
3847
3848 /*----------------------------------------------+
3849 | Set the Unpaid Flag to NULL in the BR Header |
3850 +-----------------------------------------------*/
3851
3852 l_trx_rec.br_unpaid_flag := 'N';
3853
3854 ARP_PROCESS_BR_HEADER.update_header ( l_trx_rec ,
3855 l_trx_rec.customer_trx_id);
3856
3857 /*----------------------------------------------+
3858 | Insert the Transaction History Record |
3859 +-----------------------------------------------*/
3860
3861 -- Fetch the new status and new event of the BR
3862
3863 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
3864 p_trx_rec => l_trx_rec ,
3865 p_action => l_action ,
3866 p_new_status => l_trh_rec.status,
3867 p_new_event => l_trh_rec.event );
3868
3869 l_trh_rec.transaction_history_id:= NULL ;
3870 l_trh_rec.current_record_flag := 'Y' ;
3871 l_trh_rec.prv_trx_history_id := NULL ;
3872 l_trh_rec.posting_control_id := -3 ;
3873 l_trh_rec.gl_posted_date := NULL ;
3874 l_trh_rec.first_posted_record_flag := 'N' ;
3875 l_trh_rec.created_from := 'ARBRMAIB' ;
3876 l_trh_rec.postable_flag := 'Y' ;
3877 l_trh_rec.current_accounted_flag:= 'Y' ;
3878
3879 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
3880 l_trh_rec.transaction_history_id);
3881
3882
3883 /*-----------------------------------------------+
3884 | Output parameter |
3885 +------------------------------------------------*/
3886
3887 p_status := l_trh_rec.status ;
3888
3889
3890 /*-----------------------------------------------+
3891 | Standard check of p_commit |
3892 +-----------------------------------------------*/
3893
3894 IF FND_API.To_Boolean( p_commit )
3895 THEN
3896 IF PG_DEBUG in ('Y', 'C') THEN
3897 arp_util.debug( 'committing');
3898 END IF;
3899 Commit;
3900 END IF;
3901
3902 IF PG_DEBUG in ('Y', 'C') THEN
3903 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Restate_BR()- ');
3904 END IF;
3905
3906
3907 EXCEPTION
3908 WHEN FND_API.G_EXC_ERROR THEN
3909 IF PG_DEBUG in ('Y', 'C') THEN
3910 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3911 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3912 END IF;
3913 ROLLBACK TO Restate_BR_PVT;
3914 x_return_status := FND_API.G_RET_STS_ERROR ;
3915 IF PG_DEBUG in ('Y', 'C') THEN
3916 arp_util.debug( 'Exception Error');
3917 END IF;
3918 RAISE;
3919
3920 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3921 IF PG_DEBUG in ('Y', 'C') THEN
3922 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3923 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3924 END IF;
3925 ROLLBACK TO Restate_BR_PVT;
3926 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3927 IF PG_DEBUG in ('Y', 'C') THEN
3928 arp_util.debug( 'Exception Unexpected Error');
3929 END IF;
3930 RAISE;
3931
3932
3933 WHEN OTHERS THEN
3934 /*-------------------------------------------------------+
3935 | Handle application errors that result from trapable |
3936 | error conditions. The error messages have already |
3937 | been put on the error stack. |
3938 +-------------------------------------------------------*/
3939
3940 IF PG_DEBUG in ('Y', 'C') THEN
3941 arp_util.debug( 'SQLCODE : ' || SQLCODE);
3942 arp_util.debug( 'SQLERRM : ' || SQLERRM);
3943 END IF;
3944
3945 IF (SQLCODE = -20001)
3946 THEN
3947 ROLLBACK TO Restate_BR_PVT;
3948 x_return_status := FND_API.G_RET_STS_ERROR ;
3949 RAISE;
3950 ELSE
3951 NULL;
3952 END IF;
3953
3954 ROLLBACK TO Restate_BR_PVT;
3955 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3956 RAISE;
3957
3958
3959 END Restate_BR;
3960
3961
3962 /*==============================================================================+
3963 | PROCEDURE |
3964 | Recall_BR |
3965 | |
3966 | DESCRIPTION |
3967 | Recalls a BR |
3968 | |
3969 +==============================================================================*/
3970
3971
3972 PROCEDURE Recall_BR (
3973
3974 -- ***** Standard API parameters *****
3975
3976 p_api_version IN NUMBER ,
3977 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
3978 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
3979 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
3980 x_return_status OUT NOCOPY VARCHAR2 ,
3981 x_msg_count OUT NOCOPY NUMBER ,
3982 x_msg_data OUT NOCOPY VARCHAR2 ,
3983
3984 -- ***** Input parameters *****
3985
3986 p_customer_trx_id IN NUMBER ,
3987 p_recall_date IN DATE ,
3988 p_recall_gl_date IN DATE ,
3989 p_recall_comments IN VARCHAR2 ,
3990
3991 -- ***** Output parameters *****
3992
3993 p_status OUT NOCOPY VARCHAR2 )
3994
3995 IS
3996 l_api_name CONSTANT VARCHAR2(20) := 'Recall_BR';
3997 l_api_version CONSTANT NUMBER := 1.0;
3998
3999 l_trh_rec ar_transaction_history%ROWTYPE ;
4000 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE ;
4001 l_ps_rec AR_PAYMENT_SCHEDULES%ROWTYPE ;
4002 l_adj_id AR_ADJUSTMENTS.adjustment_id%TYPE ;
4003 l_action VARCHAR2(30) ;
4004 l_trx_date DATE ;
4005 l_gl_date DATE ;
4006
4007 l_cash_receipt_id ar_cash_receipts.cash_receipt_id%TYPE ;
4008 l_receivable_application_id ar_receivable_applications.receivable_application_id%TYPE;
4009 l_mesg VARCHAR2(2000);
4010
4011 BEGIN
4012
4013 IF PG_DEBUG in ('Y', 'C') THEN
4014 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Recall_BR()+ ');
4015 END IF;
4016
4017 x_msg_count := NULL;
4018 x_msg_data := NULL;
4019
4020 /*-----------------------------------------------+
4021 | Standard start of API savepoint |
4022 +-----------------------------------------------*/
4023
4024 SAVEPOINT Recall_BR_PVT;
4025
4026 /*-----------------------------------------------+
4027 | Standard call to check for call compatibility |
4028 +-----------------------------------------------*/
4029
4030 IF NOT FND_API.Compatible_API_Call( l_api_version ,
4031 p_api_version ,
4032 l_api_name ,
4033 G_PKG_NAME )
4034 THEN
4035 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4036 END IF;
4037
4038
4039 /*--------------------------------------------------------------+
4040 | Initialize message list if p_init_msg_list is set to TRUE |
4041 +--------------------------------------------------------------*/
4042
4043 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4044 FND_MSG_PUB.initialize;
4045 END IF;
4046
4047
4048 /*-----------------------------------------------+
4049 | Initialize return status to SUCCESS |
4050 +-----------------------------------------------*/
4051
4052 x_return_status := FND_API.G_RET_STS_SUCCESS;
4053
4054
4055 /*-----------------------------------------------------------------------+
4056 | ============ START OF API BODY - RECALL BR =================== |
4057 +-----------------------------------------------------------------------*/
4058
4059
4060 /*-----------------------------------------------+
4061 | Validate the action |
4062 +-----------------------------------------------*/
4063
4064 l_action := C_RECALL;
4065
4066 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
4067 p_customer_trx_id => p_customer_trx_id ,
4068 p_complete_flag => C_ACTION_REC.complete_flag ,
4069 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
4070 p_accept_flag => C_ACTION_REC.accept_flag ,
4071 p_cancel_flag => C_ACTION_REC.cancel_flag ,
4072 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
4073 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
4074 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
4075 p_hold_flag => C_ACTION_REC.hold_flag ,
4076 p_unhold_flag => C_ACTION_REC.unhold_flag ,
4077 p_recall_flag => C_ACTION_REC.recall_flag ,
4078 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
4079 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
4080 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
4081 p_protest_flag => C_ACTION_REC.protest_flag ,
4082 p_endorse_flag => C_ACTION_REC.endorse_flag ,
4083 p_restate_flag => C_ACTION_REC.restate_flag ,
4084 p_exchange_flag => C_ACTION_REC.exchange_flag ,
4085 p_delete_flag => C_ACTION_REC.delete_flag );
4086
4087 -- Do not continue if the action is not allowed for the BR
4088
4089 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
4090
4091 IF (C_ACTION_REC.recall_flag <> 'Y')
4092 THEN
4093 IF PG_DEBUG in ('Y', 'C') THEN
4094 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
4095 END IF;
4096 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_RECALL' );
4097 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
4098 app_exception.raise_exception;
4099 END IF;
4100
4101
4102 /*----------------------------------------------+
4103 | Data preparation |
4104 +-----------------------------------------------*/
4105
4106 l_trh_rec.customer_trx_id := p_customer_trx_id;
4107 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
4108
4109 l_trx_date := trunc(p_recall_date);
4110 l_gl_date := trunc(p_recall_gl_date);
4111
4112 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
4113
4114
4115 /*----------------------------------------------+
4116 | Data Validation |
4117 +-----------------------------------------------*/
4118
4119 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_RECALL');
4120 AR_BILLS_MAINTAIN_VAL_PVT.validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
4121
4122 l_trh_rec.trx_date := l_trx_date ;
4123 l_trh_rec.gl_date := l_gl_date ;
4124 l_trh_rec.comments := p_recall_comments ;
4125
4126
4127 /*-----------------------------------------------+
4128 | RECALL |
4129 +-----------------------------------------------*/
4130
4131 IF (l_trh_rec.status = C_REMITTED)
4132 THEN
4133 l_trh_rec.postable_flag := 'Y';
4134 l_trh_rec.current_accounted_flag := 'Y';
4135
4136 ELSIF (l_trh_rec.status = C_FACTORED)
4137 THEN
4138
4139 /*----------------------------------------------+
4140 | Reverse the receipt applied to STD |
4141 +-----------------------------------------------*/
4142
4143 AR_BILLS_MAINTAIN_LIB_PVT.Find_Last_STD (l_trh_rec.customer_trx_id, l_cash_receipt_id, l_receivable_application_id);
4144 AR_BILLS_MAINTAIN_LIB_PVT.Reverse_Receipt (l_trh_rec, l_cash_receipt_id, 'PAYMENT REVERSAL', C_BR_FACTORED_RECOURSE);
4145 l_trh_rec.postable_flag := 'Y';
4146 l_trh_rec.current_accounted_flag := 'Y';
4147
4148 ELSIF (l_trh_rec.status = C_ENDORSED)
4149 THEN
4150
4151 /*----------------------------------------------+
4152 | Reject the adjustment created during the |
4153 | endorsement. Status = 'R' (Reject) |
4154 +-----------------------------------------------*/
4155
4156 AR_BILLS_MAINTAIN_LIB_PVT.Find_Last_Adjustment (p_customer_trx_id, l_adj_id);
4157 AR_BILLS_MAINTAIN_LIB_PVT.Modify_Adjustment (l_adj_id, 'R');
4158 l_trh_rec.postable_flag := 'N';
4159 l_trh_rec.current_accounted_flag := 'N';
4160 END IF;
4161
4162
4163 /*-----------------------------------------------+
4164 | Remove the Remittance or adjustment tags |
4165 | on the BR Payment Schedule |
4166 +-----------------------------------------------*/
4167
4168 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
4169 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, NULL , NULL);
4170
4171
4172 /*----------------------------------------------+
4173 | Insert the Transaction History Record |
4174 +-----------------------------------------------*/
4175
4176 -- Fetch the new status and new event of the BR
4177
4178 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
4179 p_trx_rec => l_trx_rec ,
4180 p_action => l_action ,
4181 p_new_status => l_trh_rec.status,
4182 p_new_event => l_trh_rec.event );
4183
4184 l_trh_rec.transaction_history_id:= NULL ;
4185 l_trh_rec.current_record_flag := 'Y' ;
4186 l_trh_rec.prv_trx_history_id := NULL ;
4187 l_trh_rec.posting_control_id := -3 ;
4188 l_trh_rec.gl_posted_date := NULL ;
4189 l_trh_rec.first_posted_record_flag := 'N' ;
4190 l_trh_rec.created_from := 'ARBRMAIB' ;
4191 l_trh_rec.batch_id := NULL ;
4192
4193 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
4194 l_trh_rec.transaction_history_id);
4195
4196
4197 /*----------------------------------------------+
4198 | Remove the Remittance Information of the |
4199 | BR Header if it exists |
4200 +-----------------------------------------------*/
4201
4202 l_trx_rec.receipt_method_id := NULL;
4203
4204 ARP_PROCESS_BR_HEADER.update_header ( l_trx_rec, l_trx_rec.customer_trx_id);
4205
4206
4207 /*-----------------------------------------------+
4208 | Output parameter |
4209 +------------------------------------------------*/
4210
4211 p_status := l_trh_rec.status ;
4212
4213
4214 /*-----------------------------------------------+
4215 | Standard check of p_commit |
4216 +-----------------------------------------------*/
4217
4218 IF FND_API.To_Boolean( p_commit )
4219 THEN
4220 IF PG_DEBUG in ('Y', 'C') THEN
4221 arp_util.debug( 'committing');
4222 END IF;
4223 Commit;
4224 END IF;
4225
4226 IF PG_DEBUG in ('Y', 'C') THEN
4227 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Recall_BR()- ');
4228 END IF;
4229
4230
4231 EXCEPTION
4232 WHEN FND_API.G_EXC_ERROR THEN
4233 IF PG_DEBUG in ('Y', 'C') THEN
4234 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4235 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4236 END IF;
4237 ROLLBACK TO Recall_BR_PVT;
4238 x_return_status := FND_API.G_RET_STS_ERROR ;
4239 IF PG_DEBUG in ('Y', 'C') THEN
4240 arp_util.debug( 'Exception Error');
4241 END IF;
4242 RAISE;
4243
4244 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4245 IF PG_DEBUG in ('Y', 'C') THEN
4246 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4247 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4248 END IF;
4249 ROLLBACK TO Recall_BR_PVT;
4250 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4251 IF PG_DEBUG in ('Y', 'C') THEN
4252 arp_util.debug( 'Exception Unexpected Error');
4253 END IF;
4254 RAISE;
4255
4256
4257 WHEN OTHERS THEN
4258 /*-------------------------------------------------------+
4259 | Handle application errors that result from trapable |
4260 | error conditions. The error messages have already |
4261 | been put on the error stack. |
4262 +-------------------------------------------------------*/
4263
4264 IF PG_DEBUG in ('Y', 'C') THEN
4265 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4266 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4267 END IF;
4268
4269 IF (SQLCODE = -20001)
4270 THEN
4271 ROLLBACK TO Recall_BR_PVT;
4272 x_return_status := FND_API.G_RET_STS_ERROR ;
4273 RAISE;
4274 ELSE
4275 NULL;
4276 END IF;
4277
4278 ROLLBACK TO Recall_BR_PVT;
4279 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4280 RAISE;
4281
4282
4283 END Recall_BR;
4284
4285
4286 /*==============================================================================+
4287 | PROCEDURE |
4288 | Eliminate_Risk_BR |
4289 | |
4290 | DESCRIPTION |
4291 | Eliminates from Risk |
4292 | |
4293 +==============================================================================*/
4294
4295
4296 PROCEDURE Eliminate_Risk_BR (
4297
4298 -- ***** Standard API parameters *****
4299
4300 p_api_version IN NUMBER ,
4301 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
4302 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
4303 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
4304 x_return_status OUT NOCOPY VARCHAR2 ,
4305 x_msg_count OUT NOCOPY NUMBER ,
4306 x_msg_data OUT NOCOPY VARCHAR2 ,
4307
4308
4309 -- ***** Input parameters *****
4310
4311 p_customer_trx_id IN NUMBER ,
4312 p_risk_eliminate_date IN DATE ,
4313 p_risk_eliminate_gl_date IN DATE ,
4314 p_risk_eliminate_comments IN VARCHAR2 ,
4315
4316 -- ***** Output parameters *****
4317
4318 p_status OUT NOCOPY VARCHAR2) IS
4319
4320 l_api_name CONSTANT VARCHAR2(20) := 'Eliminate_Risk_BR';
4321 l_api_version CONSTANT NUMBER := 1.0;
4322 l_trh_rec ar_transaction_history%ROWTYPE;
4323 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
4324 l_ps_rec AR_PAYMENT_SCHEDULES%ROWTYPE;
4325 l_cash_receipt_id AR_CASH_RECEIPTS.cash_receipt_id%TYPE;
4326 l_adj_id AR_ADJUSTMENTS.adjustment_id%TYPE;
4327 l_move_deferred_tax VARCHAR2(1) := 'N';
4328 l_action VARCHAR2(30);
4329 l_trx_date DATE;
4330 l_gl_date DATE;
4331 l_mesg VARCHAR2(2000);
4332
4333 -- Added for bug # 2712726
4334 -- ORASHID
4335 --
4336 l_nocopy_payment_schedule_id ar_payment_schedules.payment_schedule_id%TYPE;
4337
4338 BEGIN
4339
4340 IF PG_DEBUG in ('Y', 'C') THEN
4341 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Eliminate_Risk_BR ()+ ');
4342 END IF;
4343
4344 x_msg_count := NULL;
4345 x_msg_data := NULL;
4346
4347 /*-----------------------------------------------+
4348 | Standard start of API savepoint |
4349 +-----------------------------------------------*/
4350
4351 SAVEPOINT Eliminate_Risk_BR_PVT;
4352
4353 /*-----------------------------------------------+
4354 | Standard call to check for call compatibility |
4355 +-----------------------------------------------*/
4356
4357 IF NOT FND_API.Compatible_API_Call( l_api_version ,
4358 p_api_version ,
4359 l_api_name ,
4360 G_PKG_NAME )
4361 THEN
4362 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4363 END IF;
4364
4365
4366 /*--------------------------------------------------------------+
4367 | Initialize message list if p_init_msg_list is set to TRUE |
4368 +--------------------------------------------------------------*/
4369
4370 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4371 FND_MSG_PUB.initialize;
4372 END IF;
4373
4374
4375 /*-----------------------------------------------+
4376 | Initialize return status to SUCCESS |
4377 +-----------------------------------------------*/
4378
4379 x_return_status := FND_API.G_RET_STS_SUCCESS;
4380
4381
4382 /*-----------------------------------------------------------------------+
4383 | ============ START OF API BODY - ELIMINATE RISK BR ============ |
4384 +-----------------------------------------------------------------------*/
4385
4386
4387 /*-----------------------------------------------+
4388 | Validate the action |
4389 +-----------------------------------------------*/
4390
4391 l_action := C_ELIMINATE_RISK;
4392
4393 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
4394 p_customer_trx_id => p_customer_trx_id ,
4395 p_complete_flag => C_ACTION_REC.complete_flag ,
4396 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
4397 p_accept_flag => C_ACTION_REC.accept_flag ,
4398 p_cancel_flag => C_ACTION_REC.cancel_flag ,
4399 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
4400 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
4401 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
4402 p_hold_flag => C_ACTION_REC.hold_flag ,
4403 p_unhold_flag => C_ACTION_REC.unhold_flag ,
4404 p_recall_flag => C_ACTION_REC.recall_flag ,
4405 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
4406 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
4407 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
4408 p_protest_flag => C_ACTION_REC.protest_flag ,
4409 p_endorse_flag => C_ACTION_REC.endorse_flag ,
4410 p_restate_flag => C_ACTION_REC.restate_flag ,
4411 p_exchange_flag => C_ACTION_REC.exchange_flag ,
4412 p_delete_flag => C_ACTION_REC.delete_flag );
4413
4414 -- Do not continue if the action is not allowed for the BR
4415
4416 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
4417
4418 IF (C_ACTION_REC.eliminate_flag <> 'Y')
4419 THEN
4420 IF PG_DEBUG in ('Y', 'C') THEN
4421 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_trx_rec.trx_number);
4422 END IF;
4423 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_ELIMINATE' );
4424 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
4425 app_exception.raise_exception;
4426 END IF;
4427
4428
4429 /*----------------------------------------------+
4430 | Data preparation |
4431 +-----------------------------------------------*/
4432
4433 l_trh_rec.customer_trx_id := p_customer_trx_id;
4434 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
4435
4436 l_trx_date := trunc(p_risk_eliminate_date);
4437 l_gl_date := trunc(p_risk_eliminate_gl_date);
4438
4439 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
4440
4441 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
4442
4443 -- Modified for bug # 2712726
4444 -- ORASHID
4445 --
4446 l_nocopy_payment_schedule_id := l_ps_rec.payment_schedule_id;
4447 arp_ps_pkg.fetch_p(l_nocopy_payment_schedule_id, l_ps_rec);
4448
4449 /*----------------------------------------------+
4450 | Data validation |
4451 +-----------------------------------------------*/
4452
4453 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_ELIMINATE');
4454 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
4455
4456 l_trh_rec.trx_date := l_trx_date;
4457 l_trh_rec.gl_date := l_gl_date;
4458 l_trh_rec.comments := p_risk_eliminate_comments;
4459
4460
4461 /*-----------------------------------------------+
4462 | RISK ELIMINATION |
4463 +-----------------------------------------------*/
4464
4465 IF (l_trh_rec.status = C_MATURED_PEND_RISK_ELIM)
4466 THEN
4467
4468 /*----------------------------------------------+
4469 | The receipt created during the remittance |
4470 | approval is unapplied from Short Term Debt |
4471 | and applied to the Bills Receivables |
4472 +-----------------------------------------------*/
4473
4474 AR_BILLS_MAINTAIN_LIB_PVT.Unapply_STD (l_trh_rec, C_BR_FACTORED_RECOURSE, l_cash_receipt_id);
4475 AR_BILLS_MAINTAIN_LIB_PVT.Apply_Receipt (l_trh_rec, l_ps_rec, l_cash_receipt_id, C_BR_FACTORED_RECOURSE);
4476
4477 ELSIF (l_trh_rec.status = C_ENDORSED)
4478 THEN
4479 IF NOT (AR_BILLS_MAINTAIN_STATUS_PUB.Is_BR_Matured (l_ps_rec.due_date))
4480 THEN
4481
4482 /*------------------------------------------------------+
4483 | The Maturity Date event has not happened, so the |
4484 | maturity event and payment event happen at the same |
4485 | time. So we approve the adjustment and move deferred |
4486 | tax as part of the approval. Deferred tax is only |
4487 | moved if tax to be moved exists |
4488 +-------------------------------------------------------*/
4489
4490 IF (l_ps_rec.tax_remaining IS NOT NULL and l_ps_rec.tax_remaining <> 0)
4491 THEN
4492 l_move_deferred_tax := 'Y';
4493 END IF;
4494
4495 END IF;
4496
4497
4498 /*----------------------------------------------+
4499 | The unapproved adjustment created during the|
4500 | endorsment is approved |
4501 +-----------------------------------------------*/
4502
4503 AR_BILLS_MAINTAIN_LIB_PVT.Find_Last_Adjustment (p_customer_trx_id, l_adj_id);
4504 AR_BILLS_MAINTAIN_LIB_PVT.Approve_Adjustment (l_adj_id, l_move_deferred_tax);
4505 END IF;
4506
4507
4508 /*-----------------------------------------------+
4509 | Remove the Remittance or adjustment tags |
4510 | on the BR Payment Schedule |
4511 +-----------------------------------------------*/
4512
4513 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, NULL , NULL);
4514
4515
4516 /*----------------------------------------------+
4517 | Insert the Transaction History Record |
4518 +-----------------------------------------------*/
4519
4520 -- Fetch the new status and new event of the BR
4521
4522 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
4523 p_trx_rec => l_trx_rec ,
4524 p_action => l_action ,
4525 p_new_status => l_trh_rec.status,
4526 p_new_event => l_trh_rec.event );
4527
4528 l_trh_rec.transaction_history_id:= NULL ;
4529 l_trh_rec.postable_flag := 'N' ;
4530 l_trh_rec.current_accounted_flag:= 'N' ;
4531 l_trh_rec.current_record_flag := 'Y' ;
4532 l_trh_rec.prv_trx_history_id := NULL ;
4533 l_trh_rec.posting_control_id := -3 ;
4534 l_trh_rec.gl_posted_date := NULL ;
4535 l_trh_rec.first_posted_record_flag := 'N' ;
4536 l_trh_rec.created_from := 'ARBRMAIB' ;
4537 l_trh_rec.batch_id := NULL ;
4538
4539 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
4540 l_trh_rec.transaction_history_id);
4541
4542
4543 /*-----------------------------------------------+
4544 | Output parameter |
4545 +------------------------------------------------*/
4546
4547 p_status := l_trh_rec.status ;
4548
4549
4550 /*-----------------------------------------------+
4551 | Standard check of p_commit |
4552 +-----------------------------------------------*/
4553
4554 IF FND_API.To_Boolean( p_commit )
4555 THEN
4556 IF PG_DEBUG in ('Y', 'C') THEN
4557 arp_util.debug( 'committing');
4558 END IF;
4559 Commit;
4560 END IF;
4561
4562 IF PG_DEBUG in ('Y', 'C') THEN
4563 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Eliminate_Risk_BR ()- ');
4564 END IF;
4565
4566
4567 EXCEPTION
4568 WHEN FND_API.G_EXC_ERROR THEN
4569 IF PG_DEBUG in ('Y', 'C') THEN
4570 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4571 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4572 END IF;
4573 ROLLBACK TO Eliminate_Risk_BR_PVT;
4574 x_return_status := FND_API.G_RET_STS_ERROR ;
4575 IF PG_DEBUG in ('Y', 'C') THEN
4576 arp_util.debug( 'Exception Error');
4577 END IF;
4578 RAISE;
4579
4580 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4581 IF PG_DEBUG in ('Y', 'C') THEN
4582 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4583 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4584 END IF;
4585 ROLLBACK TO Eliminate_Risk_BR_PVT;
4586 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4587 IF PG_DEBUG in ('Y', 'C') THEN
4588 arp_util.debug( 'Exception Unexpected Error');
4589 END IF;
4590 RAISE;
4591
4592
4593 WHEN OTHERS THEN
4594 /*-------------------------------------------------------+
4595 | Handle application errors that result from trapable |
4596 | error conditions. The error messages have already |
4597 | been put on the error stack. |
4598 +-------------------------------------------------------*/
4599
4600 IF PG_DEBUG in ('Y', 'C') THEN
4601 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4602 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4603 END IF;
4604
4605 IF (SQLCODE = -20001)
4606 THEN
4607 ROLLBACK TO Eliminate_Risk_BR_PVT;
4608 x_return_status := FND_API.G_RET_STS_ERROR ;
4609 RAISE;
4610 ELSE
4611 NULL;
4612 END IF;
4613
4614 ROLLBACK TO Eliminate_Risk_BR_PVT;
4615 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4616
4617 RAISE;
4618
4619 END Eliminate_Risk_BR;
4620
4621
4622 /*==============================================================================+
4623 | PROCEDURE |
4624 | UnEliminate_Risk_BR |
4625 | |
4626 | DESCRIPTION |
4627 | UnEliminates from Risk |
4628 | |
4629 +==============================================================================*/
4630
4631
4632 PROCEDURE UnEliminate_Risk_BR (
4633
4634 -- ***** Standard API parameters *****
4635
4636 p_api_version IN NUMBER ,
4637 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
4638 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
4639 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
4640 x_return_status OUT NOCOPY VARCHAR2 ,
4641 x_msg_count OUT NOCOPY NUMBER ,
4642 x_msg_data OUT NOCOPY VARCHAR2 ,
4643
4644 -- ***** Input parameters *****
4645
4646 p_customer_trx_id IN NUMBER ,
4647 p_risk_uneliminate_date IN DATE ,
4648 p_risk_uneliminate_gl_date IN DATE ,
4649 p_risk_uneliminate_comments IN VARCHAR2 ,
4650
4651 -- ***** Output parameters *****
4652
4653 p_status OUT NOCOPY VARCHAR2) IS
4654
4655
4656 l_api_name CONSTANT VARCHAR2(20) := 'UnEliminate_Risk_BR';
4657 l_api_version CONSTANT NUMBER := 1.0 ;
4658
4659 l_trh_rec ar_transaction_history%ROWTYPE;
4660 l_trh_prev_rec ar_transaction_history%ROWTYPE;
4661 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
4662 l_ps_rec AR_PAYMENT_SCHEDULES%ROWTYPE;
4663 l_cash_receipt_id AR_CASH_RECEIPTS.cash_receipt_id%TYPE;
4664 l_adj_id AR_ADJUSTMENTS.adjustment_id%TYPE;
4665 l_move_deferred_tax VARCHAR2(1):= 'N';
4666 l_action VARCHAR2(30);
4667 l_trx_date DATE;
4668 l_gl_date DATE;
4669 l_new_adj_id NUMBER;
4670 l_receivables_trx_id NUMBER;
4671 l_mesg VARCHAR2(2000);
4672
4673 -- Added for bug # 2712726
4674 -- ORASHID
4675 --
4676 l_nocopy_payment_schedule_id ar_payment_schedules.payment_schedule_id%TYPE;
4677
4678 BEGIN
4679
4680 IF PG_DEBUG in ('Y', 'C') THEN
4681 arp_util.debug('AR_BILLS_MAINTAIN_PUB.UnEliminate_Risk_BR ()+ ');
4682 END IF;
4683
4684 x_msg_count := NULL;
4685 x_msg_data := NULL;
4686
4687 /*-----------------------------------------------+
4688 | Standard start of API savepoint |
4689 +-----------------------------------------------*/
4690
4691 SAVEPOINT UnEliminate_Risk_BR_PVT;
4692
4693 /*-----------------------------------------------+
4694 | Standard call to check for call compatibility |
4695 +-----------------------------------------------*/
4696
4697 IF NOT FND_API.Compatible_API_Call( l_api_version ,
4698 p_api_version ,
4699 l_api_name ,
4700 G_PKG_NAME )
4701 THEN
4702 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4703 END IF;
4704
4705
4706 /*--------------------------------------------------------------+
4707 | Initialize message list if p_init_msg_list is set to TRUE |
4708 +--------------------------------------------------------------*/
4709
4710 IF FND_API.to_Boolean( p_init_msg_list ) THEN
4711 FND_MSG_PUB.initialize;
4712 END IF;
4713
4714
4715 /*-----------------------------------------------+
4716 | Initialize return status to SUCCESS |
4717 +-----------------------------------------------*/
4718
4719 x_return_status := FND_API.G_RET_STS_SUCCESS;
4720
4721
4722 /*-----------------------------------------------------------------------+
4723 | ============ START OF API BODY - UNELIMINATE RISK BR =============|
4724 +-----------------------------------------------------------------------*/
4725
4726
4727 /*-----------------------------------------------+
4728 | Validate the action |
4729 +-----------------------------------------------*/
4730
4731 l_action := C_UNELIMINATE_RISK;
4732
4733 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
4734 p_customer_trx_id => p_customer_trx_id ,
4735 p_complete_flag => C_ACTION_REC.complete_flag ,
4736 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
4737 p_accept_flag => C_ACTION_REC.accept_flag ,
4738 p_cancel_flag => C_ACTION_REC.cancel_flag ,
4739 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
4740 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
4741 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
4742 p_hold_flag => C_ACTION_REC.hold_flag ,
4743 p_unhold_flag => C_ACTION_REC.unhold_flag ,
4744 p_recall_flag => C_ACTION_REC.recall_flag ,
4745 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
4746 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
4747 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
4748 p_protest_flag => C_ACTION_REC.protest_flag ,
4749 p_endorse_flag => C_ACTION_REC.endorse_flag ,
4750 p_restate_flag => C_ACTION_REC.restate_flag ,
4751 p_exchange_flag => C_ACTION_REC.exchange_flag ,
4752 p_delete_flag => C_ACTION_REC.delete_flag );
4753
4754 -- Do not continue if the action is not allowed for the BR
4755
4756 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
4757
4758 IF (C_ACTION_REC.uneliminate_flag <> 'Y')
4759 THEN
4760 IF PG_DEBUG in ('Y', 'C') THEN
4761 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || l_trx_rec.trx_number);
4762 END IF;
4763 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_UNELIMINATE' );
4764 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
4765 app_exception.raise_exception;
4766 END IF;
4767
4768
4769 /*----------------------------------------------+
4770 | Data preparation |
4771 +-----------------------------------------------*/
4772
4773 -- Fetch the current transaction history record information
4774
4775 l_trh_rec.customer_trx_id := p_customer_trx_id;
4776 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
4777
4778 l_trx_date := trunc(p_risk_uneliminate_date);
4779 l_gl_date := trunc(p_risk_uneliminate_gl_date);
4780
4781
4782 -- Fetch the previous transaction history record information
4783
4784 l_trh_prev_rec.transaction_history_id := l_trh_rec.prv_trx_history_id;
4785 AR_BILLS_MAINTAIN_STATUS_PUB.Find_Last_Relevant_Trh (l_trh_prev_rec);
4786
4787
4788 -- Fetch the Payment Schedule information
4789
4790 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
4791
4792 -- Modified for bug # 2712726
4793 -- ORASHID
4794 --
4795 l_nocopy_payment_schedule_id := l_ps_rec.payment_schedule_id;
4796 arp_ps_pkg.fetch_p(l_nocopy_payment_schedule_id, l_ps_rec);
4797
4798
4799
4800 /*----------------------------------------------+
4801 | Data defaulting |
4802 +-----------------------------------------------*/
4803
4804 AR_BILLS_MAINTAIN_LIB_PVT.Default_Action_Dates (l_trx_date, l_gl_date);
4805
4806
4807 /*----------------------------------------------+
4808 | Data validation |
4809 +-----------------------------------------------*/
4810
4811 l_mesg := arp_standard.fnd_message('AR_BR_SPMENU_UNELIMINATE');
4812 AR_BILLS_MAINTAIN_VAL_PVT.Validate_Action_Dates (l_trx_date, l_gl_date, l_trh_rec, l_mesg);
4813
4814 l_trh_rec.trx_date := l_trx_date ;
4815 l_trh_rec.gl_date := l_gl_date ;
4816 l_trh_rec.comments := p_risk_uneliminate_comments;
4817
4818
4819 /*-----------------------------------------------+
4820 | RISK UNELIMINATION |
4821 +-----------------------------------------------*/
4822
4823 IF (l_trh_prev_rec.status = C_MATURED_PEND_RISK_ELIM)
4824 THEN
4825
4826
4827 /*----------------------------------------------+
4828 | Unapply the receipt from the BR and apply |
4829 | it to short term debt |
4830 +-----------------------------------------------*/
4831
4832 AR_BILLS_MAINTAIN_LIB_PVT.Find_Last_Receipt (l_trh_rec.customer_trx_id, l_cash_receipt_id);
4833 AR_BILLS_MAINTAIN_LIB_PVT.Unapply_Receipt (l_trh_rec, l_ps_rec.payment_schedule_id, l_cash_receipt_id, C_RISK_UNELIMINATED);
4834 AR_BILLS_MAINTAIN_LIB_PVT.Apply_STD (p_customer_trx_id, l_cash_receipt_id, l_trh_rec.trx_date, l_trh_rec.gl_date);
4835
4836 /*-----------------------------------------------+
4837 | Put the Remittance tags |
4838 | on the BR Payment Schedule |
4839 +-----------------------------------------------*/
4840
4841 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, 'REMITTANCE' , l_trx_rec.remittance_batch_id);
4842
4843
4844 ELSIF (l_trh_prev_rec.status = C_ENDORSED)
4845 THEN
4846
4847 /*----------------------------------------------+
4848 | Reverse the adjustment created during |
4849 | endorsement and create a new unapproved |
4850 | adjustment |
4851 +-----------------------------------------------*/
4852
4853 AR_BILLS_MAINTAIN_LIB_PVT.Find_Last_Adjustment (l_trh_rec.customer_trx_id, l_adj_id);
4854
4855 SELECT receivables_trx_id
4856 INTO l_receivables_trx_id
4857 FROM ar_adjustments
4858 WHERE adjustment_id = l_adj_id;
4859
4860 AR_BILLS_MAINTAIN_LIB_PVT.Reverse_Adjustment (l_adj_id, l_trh_rec, C_RISK_UNELIMINATED);
4861
4862 AR_BILLS_MAINTAIN_LIB_PVT.Create_Adjustment (
4863 l_trh_rec ,
4864 p_customer_trx_id ,
4865 l_ps_rec ,
4866 l_ps_rec.amount_due_original ,
4867 l_receivables_trx_id ,
4868 'W' ,
4869 l_move_deferred_tax ,
4870 l_new_adj_id );
4871
4872 /*----------------------------------------------+
4873 | Updates the Payment Schedule of the BR |
4874 | with the Adjustment Information |
4875 +-----------------------------------------------*/
4876
4877 AR_BILLS_MAINTAIN_LIB_PVT.update_reserved_columns (l_ps_rec.payment_schedule_id, 'ADJUSTMENT', l_new_adj_id);
4878
4879
4880 END IF;
4881
4882
4883 /*----------------------------------------------+
4884 | Insert the Transaction History Record |
4885 +-----------------------------------------------*/
4886
4887 -- Fetch the new status and new event of the BR
4888
4889 AR_BILLS_MAINTAIN_STATUS_PUB.New_Status_Event (
4890 p_trx_rec => l_trx_rec ,
4891 p_action => l_action ,
4892 p_new_status => l_trh_rec.status,
4893 p_new_event => l_trh_rec.event );
4894
4895 l_trh_rec.transaction_history_id:= NULL ;
4896 l_trh_rec.postable_flag := 'N' ;
4897 l_trh_rec.current_accounted_flag:= 'N' ;
4898 l_trh_rec.current_record_flag := 'Y' ;
4899 l_trh_rec.prv_trx_history_id := NULL ;
4900 l_trh_rec.posting_control_id := -3 ;
4901 l_trh_rec.gl_posted_date := NULL ;
4902 l_trh_rec.first_posted_record_flag := 'N' ;
4903 l_trh_rec.created_from := 'ARBRMAIB' ;
4904 l_trh_rec.batch_id := NULL ;
4905
4906 arp_proc_transaction_history.insert_transaction_history (l_trh_rec ,
4907 l_trh_rec.transaction_history_id);
4908
4909
4910 /*-----------------------------------------------+
4911 | Output parameter |
4912 +------------------------------------------------*/
4913
4914 p_status := l_trh_rec.status ;
4915
4916
4917 /*-----------------------------------------------+
4918 | Standard check of p_commit |
4919 +-----------------------------------------------*/
4920
4921 IF FND_API.To_Boolean( p_commit )
4922 THEN
4923
4924 IF PG_DEBUG in ('Y', 'C') THEN
4925 arp_util.debug( 'committing');
4926 END IF;
4927 Commit;
4928 END IF;
4929
4930 IF PG_DEBUG in ('Y', 'C') THEN
4931 arp_util.debug('AR_BILLS_MAINTAIN_PUB.UnEliminate_Risk_BR ()- ');
4932 END IF;
4933
4934
4935 EXCEPTION
4936 WHEN FND_API.G_EXC_ERROR THEN
4937 IF PG_DEBUG in ('Y', 'C') THEN
4938 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4939 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4940 END IF;
4941 ROLLBACK TO UnEliminate_Risk_BR_PVT;
4942 x_return_status := FND_API.G_RET_STS_ERROR ;
4943 IF PG_DEBUG in ('Y', 'C') THEN
4944 arp_util.debug( 'Exception Error');
4945 END IF;
4946 RAISE;
4947
4948 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4949 IF PG_DEBUG in ('Y', 'C') THEN
4950 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4951 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4952 END IF;
4953 ROLLBACK TO UnEliminate_Risk_BR_PVT;
4954 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4955 IF PG_DEBUG in ('Y', 'C') THEN
4956 arp_util.debug( 'Exception Unexpected Error');
4957 END IF;
4958 RAISE;
4959
4960
4961 WHEN OTHERS THEN
4962 /*-------------------------------------------------------+
4963 | Handle application errors that result from trapable |
4964 | error conditions. The error messages have already |
4965 | been put on the error stack. |
4966 +-------------------------------------------------------*/
4967
4968 IF PG_DEBUG in ('Y', 'C') THEN
4969 arp_util.debug( 'SQLCODE : ' || SQLCODE);
4970 arp_util.debug( 'SQLERRM : ' || SQLERRM);
4971 END IF;
4972
4973 IF (SQLCODE = -20001)
4974 THEN
4975 ROLLBACK TO UnEliminate_Risk_BR_PVT;
4976 x_return_status := FND_API.G_RET_STS_ERROR ;
4977 RAISE;
4978 ELSE
4979 NULL;
4980 END IF;
4981
4982 ROLLBACK TO UnEliminate_Risk_BR_PVT;
4983 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4984 RAISE;
4985
4986
4987 END UnEliminate_Risk_BR;
4988
4989
4990 /*==============================================================================+
4991 | PROCEDURE |
4992 | Exchange_BR |
4993 | |
4994 | DESCRIPTION |
4995 | Exchanges a BR for another |
4996 | |
4997 +==============================================================================*/
4998
4999
5000 PROCEDURE Exchange_BR (
5001
5002 -- ***** Standard API parameters *****
5003
5004 p_api_version IN NUMBER ,
5005 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
5006 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
5007 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
5008 x_return_status OUT NOCOPY VARCHAR2 ,
5009 x_msg_count OUT NOCOPY NUMBER ,
5010 x_msg_data OUT NOCOPY VARCHAR2 ,
5011
5012 -- ***** Input parameters *****
5013
5014 p_customer_trx_id IN NUMBER ,
5015
5016 -- ***** Output parameters *****
5017
5018 p_new_customer_trx_id OUT NOCOPY NUMBER ,
5019 p_new_trx_number OUT NOCOPY VARCHAR2) IS
5020
5021
5022 l_api_name CONSTANT VARCHAR2(20) := 'Exchange_BR';
5023 l_api_version CONSTANT NUMBER := 1.0;
5024 l_trx_rec ra_customer_trx%ROWTYPE;
5025 l_trh_rec ar_transaction_history%ROWTYPE;
5026 l_ps_rec ar_payment_schedules%ROWTYPE;
5027 l_action_rec action_rec_type;
5028 l_status VARCHAR2(30);
5029 l_customer_trx_line_id ra_customer_trx_lines.customer_trx_line_id%TYPE;
5030 l_msg_count NUMBER;
5031 l_msg_data VARCHAR2(2000);
5032 l_return_status VARCHAR2(1);
5033
5034 l_action VARCHAR2(30) := C_EXCHANGE;
5035
5036 -- Added for bug # 2712726
5037 -- ORASHID
5038 --
5039 l_nocopy_payment_schedule_id ar_payment_schedules.payment_schedule_id%TYPE;
5040
5041 BEGIN
5042
5043 IF PG_DEBUG in ('Y', 'C') THEN
5044 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Exchange_BR()+ ');
5045 END IF;
5046
5047 x_msg_count := NULL;
5048 x_msg_data := NULL;
5049
5050 /*-----------------------------------------------+
5051 | Standard start of API savepoint |
5052 +-----------------------------------------------*/
5053
5054 SAVEPOINT Exchange_BR_PVT;
5055
5056
5057 /*-----------------------------------------------+
5058 | Standard call to check for call compatibility |
5059 +-----------------------------------------------*/
5060
5061 IF NOT FND_API.Compatible_API_Call( l_api_version ,
5062 p_api_version ,
5063 l_api_name ,
5064 G_PKG_NAME )
5065 THEN
5066 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5067 END IF;
5068
5069
5070 /*--------------------------------------------------------------+
5071 | Initialize message list if p_init_msg_list is set to TRUE |
5072 +--------------------------------------------------------------*/
5073
5074 IF FND_API.to_Boolean( p_init_msg_list ) THEN
5075 FND_MSG_PUB.initialize;
5076 END IF;
5077
5078
5079 /*-----------------------------------------------+
5080 | Initialize return status to SUCCESS |
5081 +-----------------------------------------------*/
5082
5083 x_return_status := FND_API.G_RET_STS_SUCCESS;
5084
5085
5086 /*-----------------------------------------------------------------------+
5087 | ============ START OF API BODY - EXCHANGE BR =================== |
5088 +-----------------------------------------------------------------------*/
5089
5090
5091 /*-----------------------------------------------+
5092 | Action Validation |
5093 +-----------------------------------------------*/
5094
5095
5096 AR_BILLS_MAINTAIN_STATUS_PUB.validate_actions (
5097 p_customer_trx_id => p_customer_trx_id ,
5098 p_complete_flag => C_ACTION_REC.complete_flag ,
5099 p_uncomplete_flag => C_ACTION_REC.uncomplete_flag ,
5100 p_accept_flag => C_ACTION_REC.accept_flag ,
5101 p_cancel_flag => C_ACTION_REC.cancel_flag ,
5102 p_select_remit_flag => C_ACTION_REC.select_remit_flag ,
5103 p_deselect_remit_flag => C_ACTION_REC.deselect_remit_flag,
5104 p_approve_remit_flag => C_ACTION_REC.approve_remit_flag ,
5105 p_hold_flag => C_ACTION_REC.hold_flag ,
5106 p_unhold_flag => C_ACTION_REC.unhold_flag ,
5107 p_recall_flag => C_ACTION_REC.recall_flag ,
5108 p_eliminate_flag => C_ACTION_REC.eliminate_flag ,
5109 p_uneliminate_flag => C_ACTION_REC.uneliminate_flag ,
5110 p_unpaid_flag => C_ACTION_REC.unpaid_flag ,
5111 p_protest_flag => C_ACTION_REC.protest_flag ,
5112 p_endorse_flag => C_ACTION_REC.endorse_flag ,
5113 p_restate_flag => C_ACTION_REC.restate_flag ,
5114 p_exchange_flag => C_ACTION_REC.exchange_flag ,
5115 p_delete_flag => C_ACTION_REC.delete_flag );
5116
5117
5118 -- Do not continue if the action is not allowed for the BR
5119
5120 ARP_CT_PKG.lock_fetch_p (l_trx_rec, p_customer_trx_id);
5121
5122 IF (C_ACTION_REC.exchange_flag <> 'Y')
5123 THEN
5124 IF PG_DEBUG in ('Y', 'C') THEN
5125 arp_util.debug( '>>>>>>>>>> The action ' || l_action || ' is not allowed on the BR ' || p_customer_trx_id);
5126 END IF;
5127 FND_MESSAGE.set_name ( 'AR', 'AR_BR_CANNOT_EXCHANGE' );
5128 FND_MESSAGE.set_token ( 'BRNUM' , l_trx_rec.trx_number);
5129 app_exception.raise_exception;
5130 END IF;
5131
5132
5133
5134 /*-----------------------------------------------+
5135 | Data preparation |
5136 +-----------------------------------------------*/
5137
5138 l_trh_rec.customer_trx_id := p_customer_trx_id;
5139 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
5140
5141 AR_BILLS_CREATION_LIB_PVT.Get_Payment_Schedule_Id (p_customer_trx_id, l_ps_rec.payment_schedule_id);
5142
5143 -- Modified for bug # 2712726
5144 -- ORASHID
5145 --
5146 l_nocopy_payment_schedule_id := l_ps_rec.payment_schedule_id;
5147 arp_ps_pkg.fetch_p(l_nocopy_payment_schedule_id, l_ps_rec);
5148
5149 /*-----------------------------------------------+
5150 | Creation of the new BR |
5151 +------------------------------------------------*/
5152
5153 /* 5191632 - Added LE_ID and ORG_ID to create call */
5154
5155 AR_BILLS_CREATION_PUB.create_br_header (
5156
5157 p_api_version => 1.0 ,
5158 x_return_status => l_return_status ,
5159 p_init_msg_list => FND_API.G_TRUE ,
5160 x_msg_count => l_msg_count ,
5161 x_msg_data => l_msg_data ,
5162
5163 p_trx_number => NULL ,
5164 p_term_due_date => l_trx_rec.term_due_date ,
5165 p_batch_source_id => l_trx_rec.batch_source_id ,
5166 p_cust_trx_type_id => l_trx_rec.cust_trx_type_id ,
5167 p_invoice_currency_code => l_trx_rec.invoice_currency_code ,
5168 p_br_amount => l_ps_rec.amount_due_remaining ,
5169 p_trx_date => l_trx_rec.trx_date ,
5170 p_gl_date => l_trh_rec.gl_date ,
5171 p_drawee_id => l_trx_rec.drawee_id ,
5172 p_drawee_site_use_id => l_trx_rec.drawee_site_use_id ,
5173 p_drawee_contact_id => l_trx_rec.drawee_contact_id ,
5174 p_printing_option => l_trx_rec.printing_option ,
5175 p_comments => l_trx_rec.comments ,
5176 p_special_instructions => l_trx_rec.special_instructions ,
5177 p_drawee_bank_account_id => l_trx_rec.drawee_bank_account_id ,
5178 p_remittance_bank_account_id => l_trx_rec.remit_bank_acct_use_id,
5179 p_override_remit_account_flag => l_trx_rec.override_remit_account_flag,
5180 p_batch_id => l_trx_rec.batch_id ,
5181 p_doc_sequence_id => NULL ,
5182 p_doc_sequence_value => NULL ,
5183 p_created_from => 'ARBRMAIB' ,
5184 p_attribute_category => l_trx_rec.attribute_category ,
5185 p_attribute1 => l_trx_rec.attribute1 ,
5186 p_attribute2 => l_trx_rec.attribute2 ,
5187 p_attribute3 => l_trx_rec.attribute3 ,
5188 p_attribute4 => l_trx_rec.attribute4 ,
5189 p_attribute5 => l_trx_rec.attribute5 ,
5190 p_attribute6 => l_trx_rec.attribute6 ,
5191 p_attribute7 => l_trx_rec.attribute7 ,
5192 p_attribute8 => l_trx_rec.attribute8 ,
5193 p_attribute9 => l_trx_rec.attribute9 ,
5194 p_attribute10 => l_trx_rec.attribute10 ,
5195 p_attribute11 => l_trx_rec.attribute11 ,
5196 p_attribute12 => l_trx_rec.attribute12 ,
5197 p_attribute13 => l_trx_rec.attribute13 ,
5198 p_attribute14 => l_trx_rec.attribute14 ,
5199 p_attribute15 => l_trx_rec.attribute15 ,
5200 p_le_id => l_trx_rec.legal_entity_id,
5201 p_org_id => l_trx_rec.org_id,
5202 p_customer_trx_id => p_new_customer_trx_id ,
5203 p_new_trx_number => p_new_trx_number ,
5204 p_status => l_status );
5205
5206 IF (l_return_status <> 'S')
5207 THEN
5208 IF PG_DEBUG in ('Y', 'C') THEN
5209 arp_util.debug( '>>>>>>>>>> Problems during the creation of the new BR');
5210 arp_util.debug( 'l_msg_count : ' || l_msg_count);
5211 arp_util.debug( 'l_msg_data : ' || l_msg_data);
5212 END IF;
5213 RAISE API_exception;
5214 END IF;
5215
5216
5217 /*-----------------------------------------------+
5218 | Assign the old BR to the new BR |
5219 +------------------------------------------------*/
5220
5221 AR_BILLS_CREATION_PUB.create_br_assignment (
5222
5223 p_api_version => 1.0 ,
5224 p_init_msg_list => FND_API.G_TRUE ,
5225 p_commit => FND_API.G_FALSE ,
5226 p_validation_level => FND_API.G_VALID_LEVEL_FULL ,
5227 x_return_status => l_return_status ,
5228 x_msg_count => l_msg_count ,
5229 x_msg_data => l_msg_data ,
5230
5231 p_customer_trx_id => p_new_customer_trx_id ,
5232 p_br_ref_payment_schedule_id => l_ps_rec.payment_schedule_id,
5233 p_assigned_amount => l_ps_rec.amount_due_remaining,
5234 p_attribute_category => NULL ,
5235 p_attribute1 => NULL ,
5236 p_attribute2 => NULL ,
5237 p_attribute3 => NULL ,
5238 p_attribute4 => NULL ,
5239 p_attribute5 => NULL ,
5240 p_attribute6 => NULL ,
5241 p_attribute7 => NULL ,
5242 p_attribute8 => NULL ,
5243 p_attribute9 => NULL ,
5244 p_attribute10 => NULL ,
5245 p_attribute11 => NULL ,
5246 p_attribute12 => NULL ,
5247 p_attribute13 => NULL ,
5248 p_attribute14 => NULL ,
5249 p_attribute15 => NULL ,
5250 p_customer_trx_line_id => l_customer_trx_line_id);
5251
5252 IF (l_return_status <> 'S')
5253 THEN
5254 IF PG_DEBUG in ('Y', 'C') THEN
5255 arp_util.debug( '>>>>>>>>>> Problems during the assignment of the exchanged BR to the new BR');
5256 arp_util.debug( 'l_msg_count : ' || l_msg_count);
5257 arp_util.debug( 'l_msg_data : ' || l_msg_data);
5258 END IF;
5259 RAISE API_exception;
5260 END IF;
5261
5262
5263
5264 /*-----------------------------------------------+
5265 | Update the event of the new BR created |
5266 +------------------------------------------------*/
5267
5268 l_trh_rec.customer_trx_id := p_new_customer_trx_id;
5269 ARP_TRANSACTION_HISTORY_PKG.lock_fetch_f_trx_id (l_trh_rec);
5270
5271 l_trh_rec.event := 'EXCHANGED';
5272
5273 ARP_PROC_TRANSACTION_HISTORY.update_transaction_history (l_trh_rec,
5274 l_trh_rec.transaction_history_id);
5275
5276
5277 /*-----------------------------------------------+
5278 | Standard check of p_commit |
5279 +-----------------------------------------------*/
5280
5281 IF FND_API.To_Boolean( p_commit )
5282 THEN
5283 IF PG_DEBUG in ('Y', 'C') THEN
5284 arp_util.debug( 'committing');
5285 END IF;
5286 Commit;
5287 END IF;
5288
5289 IF PG_DEBUG in ('Y', 'C') THEN
5290 arp_util.debug('AR_BILLS_MAINTAIN_PUB.Exchange_BR()- ');
5291 END IF;
5292
5293
5294 EXCEPTION
5295 WHEN API_exception THEN
5296 ROLLBACK TO Exchange_BR_PVT;
5297 x_return_status := FND_API.G_RET_STS_ERROR ;
5298 IF PG_DEBUG in ('Y', 'C') THEN
5299 arp_util.debug ('API Exception : AR_BILLS_MAINTAIN_PUB.Exchange_BR : ' || SQLERRM);
5300 END IF;
5301 RAISE;
5302
5303 WHEN FND_API.G_EXC_ERROR THEN
5304 IF PG_DEBUG in ('Y', 'C') THEN
5305 arp_util.debug( 'SQLCODE : ' || SQLCODE);
5306 arp_util.debug( 'SQLERRM : ' || SQLERRM);
5307 END IF;
5308 ROLLBACK TO Exchange_BR_PVT;
5309 x_return_status := FND_API.G_RET_STS_ERROR ;
5310 IF PG_DEBUG in ('Y', 'C') THEN
5311 arp_util.debug( 'Exception Error');
5312 END IF;
5313 RAISE;
5314
5315
5316 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5317 IF PG_DEBUG in ('Y', 'C') THEN
5318 arp_util.debug( 'SQLCODE : ' || SQLCODE);
5319 arp_util.debug( 'SQLERRM : ' || SQLERRM);
5320 END IF;
5321 ROLLBACK TO Exchange_BR_PVT;
5322 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5323 IF PG_DEBUG in ('Y', 'C') THEN
5324 arp_util.debug( 'Exception Unexpected Error');
5325 END IF;
5326 RAISE;
5327
5328
5329 WHEN OTHERS THEN
5330 /*-------------------------------------------------------+
5331 | Handle application errors that result from trapable |
5332 | error conditions. The error messages have already |
5333 | been put on the error stack. |
5334 +-------------------------------------------------------*/
5335
5336 IF PG_DEBUG in ('Y', 'C') THEN
5337 arp_util.debug( 'SQLCODE : ' || SQLCODE);
5338 arp_util.debug( 'SQLERRM : ' || SQLERRM);
5339 END IF;
5340
5341 IF (SQLCODE = -20001)
5342 THEN
5343 ROLLBACK TO Exchange_BR_PVT;
5344 x_return_status := FND_API.G_RET_STS_ERROR ;
5345 RAISE;
5346 ELSE
5347 NULL;
5348 END IF;
5349
5350 ROLLBACK TO Exchange_BR_PVT;
5351 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5352 RAISE;
5353
5354 END Exchange_BR;
5355
5356
5357
5358
5359 /*===========================================================================+
5360 | FUNCTION |
5361 | revision |
5362 | |
5363 | DESCRIPTION |
5364 | This function returns the revision number of this package. |
5365 | |
5366 | SCOPE - PUBLIC |
5367 | |
5368 | RETURNS : Revision number of this package |
5369 | |
5370 | MODIFICATION HISTORY |
5371 | 10 JAN 2001 John HALL Created |
5372 +===========================================================================*/
5373
5374 FUNCTION revision RETURN VARCHAR2 IS
5375 BEGIN
5376 RETURN '$Revision: 120.11.12010000.2 $';
5377 END revision;
5378 --
5379
5380 END AR_BILLS_MAINTAIN_PUB;
5381