[Home] [Help]
PACKAGE BODY: APPS.AR_ADJUSTAPI_PUB
Source
1 PACKAGE BODY AR_ADJUSTAPI_PUB AS
2 /* $Header: ARTAADJB.pls 115.3 2003/10/10 19:43:15 mraymond noship $ */
3 G_PKG_NAME CONSTANT VARCHAR2(30) :='AR_ADJUSTAPI_PUB';
4 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
5 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
6 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
7 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
8 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
9 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
10
11 /*===========================================================================+
12 | PROCEDURE |
13 | Validate_Adj_Insert |
14 | |
15 | DESCRIPTION |
16 | This is the routine that validates the inputs during creation|
17 | of adjustments |
18 | |
19 | SCOPE - PRIVATE |
20 | |
21 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
22 | arp_util.disable_debug |
23 | arp_util.enable_debug |
24 | fnd_api.compatible_api_call |
25 | fnd_api.g_exc_unexpected_error |
26 | fnd_api.g_ret_sts_error |
27 | fnd_api.g_ret_sts_error |
28 | fnd_api.g_ret_sts_success |
29 | fnd_api.to_boolean |
30 | fnd_msg_pub.check_msg_level |
31 | fnd_msg_pub.count_and_get |
32 | fnd_msg_pub.initialize |
33 | ar_adjvalidate_pub.Validate_Type |
34 | ar_adjvalidate_pub.Validate_Payschd |
35 | ar_adjvalidate_pub.Validate_amount |
36 | ar_adjvalidate_pub.Validate_Rcvtrxccid |
37 | ar_adjvalidate_pub.Validate_dates |
38 | ar_adjvalidate_pub.Validate_Reason_code |
39 | ar_adjvalidate_pub.Validate_doc_seq |
40 | ar_adjvalidate_pub.Validate_Associated_Receipt |
41 | ar_adjvalidate_pub.Validate_Ussgl_code |
42 | ar_adjvalidate_pub.Validate_Desc_Flexfield |
43 | ar_adjvalidate_pub.Validate_Created_From |
44 | |
45 | ARGUMENTS : IN: |
46 | OUT: |
47 | IN/ OUT: |
48 | p_Validation_status |
49 | p_adj_rec |
50 | p_ps_rec |
51 | |
52 | RETURNS : NONE |
53 | |
54 | NOTES |
55 | |
56 | MODIFICATION HISTORY |
57 | Vivek Halder 30-JUN-97 Created |
58 | |
59 +===========================================================================*/
60
61
62 PROCEDURE Validate_Adj_Insert (
63 p_adj_rec IN OUT NOCOPY ar_adjustments%rowtype,
64 p_validation_status IN OUT NOCOPY varchar2
65 ) IS
66
67 l_return_status varchar2(1);
68 l_ps_rec ar_payment_schedules%rowtype;
69 BEGIN
70
71 IF PG_DEBUG in ('Y', 'C') THEN
72 arp_util.debug('Validate_Adj_Insert()+' , G_MSG_HIGH);
73 END IF;
74
75 /*-------------------------------------------------+
76 | 1. Validate type |
77 +-------------------------------------------------*/
78 ar_adjvalidate_pub.Validate_Type (
79 p_adj_rec,
80 p_validation_status
81 ) ;
82 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
83 THEN
84 RETURN ;
85 END IF;
86
87 /*-------------------------------------------------+
88 | 2. Validate payment_schedule_id and |
89 | customer_trx_line_id |
90 +-------------------------------------------------*/
91 ar_adjvalidate_pub.Validate_Payschd (
92 p_adj_rec,
93 l_ps_rec,
94 p_validation_status
95 );
96 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
97 THEN
98 RETURN ;
99 END IF;
100
101 /*-------------------------------------------------+
102 | 3. Validate adjustment apply_date and GL date |
103 +-------------------------------------------------*/
104
105 ar_adjvalidate_pub.Validate_dates (
106 p_adj_rec.apply_date,
107 p_adj_rec.gl_date,
108 l_ps_rec,
109 p_validation_status
110 );
111 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
112 THEN
113 RETURN ;
114 ELSE
115 p_adj_rec.apply_date := trunc(p_adj_rec.apply_date);
116 p_adj_rec.gl_date := trunc(p_adj_rec.gl_date);
117 END IF;
118
119 /*-------------------------------------------------+
120 | 4. Validate amount and status |
121 +-------------------------------------------------*/
122
123 ar_adjvalidate_pub.Validate_amount (
124 p_adj_rec,
125 l_ps_rec,
126 p_validation_status
127 );
128 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
129 THEN
130 RETURN ;
131 END IF;
132
133 /*-------------------------------------------------+
134 | 5. Validate receivables_trx_id and code |
135 | combination |
136 +-------------------------------------------------*/
137
138 ar_adjvalidate_pub.Validate_Rcvtrxccid (
139 p_adj_rec ,
140 p_validation_status
141 );
142 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
143 THEN
144 RETURN ;
145 END IF;
146
147 /*-------------------------------------------------+
148 | 6. Validate doc_sequence_value |
149 +-------------------------------------------------*/
150 ar_adjvalidate_pub.Validate_doc_seq (
151 p_adj_rec,
152 p_validation_status
153 ) ;
154 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
155 THEN
156 RETURN ;
157 END IF;
158
159 /*-------------------------------------------------+
160 | 7. Validate reason_code |
161 +-------------------------------------------------*/
162 ar_adjvalidate_pub.Validate_Reason_code (
163 p_adj_rec,
164 p_validation_status
165 );
166 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
167 THEN
168 RETURN ;
169 END IF;
170
171 /*-------------------------------------------------+
172 | 8. Validate associated cash_receipt_id |
173 +-------------------------------------------------*/
174 ar_adjvalidate_pub.Validate_Associated_Receipt (
175 p_adj_rec,
176 p_validation_status
177 );
178 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
179 THEN
180 RETURN ;
181 END IF;
182
183 /*-------------------------------------------------+
184 | 9. Validate ussgl transaction code |
185 +-------------------------------------------------*/
186 ar_adjvalidate_pub.Validate_Ussgl_code (
187 p_adj_rec,
188 p_validation_status
189 );
190 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
191 THEN
192 RETURN ;
193 END IF;
194
195 /*-------------------------------------------------+
196 | 10. Validate descriptive flex |
197 +-------------------------------------------------*/
198 ar_adjvalidate_pub.Validate_Desc_Flexfield(
199 p_adj_rec,
200 p_validation_status
201 );
202 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
203 THEN
204 RETURN ;
205 END IF;
206
207 /*-------------------------------------------------+
208 | 11. Validate created form |
209 +-------------------------------------------------*/
210 ar_adjvalidate_pub.Validate_Created_From (
211 p_adj_rec,
212 p_validation_status
213 );
214
215 IF PG_DEBUG in ('Y', 'C') THEN
216 arp_util.debug('Validate_Adj_Insert()-' , G_MSG_HIGH);
217 END IF;
218 RETURN;
219
220 EXCEPTION
221
222 WHEN OTHERS THEN
223 IF PG_DEBUG in ('Y', 'C') THEN
224 arp_util.debug('EXCEPTION: Validate_Adj_Insert() ', G_MSG_UERROR);
225 END IF;
226 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,'Validate_Adj_Insert');
227 p_validation_status := FND_API.G_RET_STS_UNEXP_ERROR ;
228 RETURN;
229
230
231 END Validate_Adj_Insert;
232
233 /*===========================================================================+
234 | PROCEDURE |
235 | Set_Remaining_Attributes |
236 | |
237 | DESCRIPTION |
238 | This routine sets data of remaining attributes which are not |
239 | not populated by the validation process. It also resets the |
240 | the columns in the adjustment record that should not be |
241 | populated during creation of adjustments |
242 | |
243 | SCOPE - PRIVATE |
244 | |
245 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
246 | |
247 | |
248 | |
249 | ARGUMENTS : IN: |
250 | OUT: |
251 | p_Validation_status |
252 | IN/ OUT: |
253 | p_adj_rec |
254 | |
255 | |
256 | RETURNS : NONE |
257 | |
258 | NOTES |
259 | |
260 | MODIFICATION HISTORY |
261 | Vivek Halder 30-JUN-97 Created |
262 | |
263 +===========================================================================*/
264
265 PROCEDURE Set_Remaining_Attributes (
266 p_adj_rec IN OUT NOCOPY ar_adjustments%rowtype,
267 p_return_status IN OUT NOCOPY varchar2
268 ) IS
269
270 BEGIN
271
272 IF PG_DEBUG in ('Y', 'C') THEN
273 arp_util.debug('Set_Remaining_Attributes()+' , G_MSG_HIGH);
274 END IF;
275
276 /*-----------------------------------------------+
277 | Set the status to success |
278 +-----------------------------------------------*/
279 p_return_status := FND_API.G_RET_STS_SUCCESS ;
280
281 /*-----------------------------------------------+
282 | Set Adjustment Type and Postable attributes |
283 +-----------------------------------------------*/
284
285 p_adj_rec.adjustment_type := 'M' ;
289 | Reset the distribution_set_id, chargeback_customer_id |
286 p_adj_rec.postable := 'Y' ;
287
288 /*--------------------------------------------------------+
290 | and subsequent customer trx id |
291 +--------------------------------------------------------*/
292 p_adj_rec.distribution_set_id := NULL;
293 p_adj_rec.chargeback_customer_trx_id := NULL ;
294 p_adj_rec.subsequent_trx_id := NULL ;
295
296
297 IF PG_DEBUG in ('Y', 'C') THEN
298 arp_util.debug('Set_Remaining_Attributes()-' , G_MSG_HIGH);
299 END IF;
300
301 RETURN ;
302
303 EXCEPTION
304
305 WHEN OTHERS THEN
306 IF PG_DEBUG in ('Y', 'C') THEN
307 arp_util.debug('EXCEPTION: Set_Remaining_Attributes() ', G_MSG_UERROR);
308 END IF;
309 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,'Set_Remaining_Attributes');
310 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
311 RETURN;
312
313 END Set_Remaining_Attributes;
314
315 /*===========================================================================+
316 | PROCEDURE |
317 | Validate_Adj_Modify |
318 | |
319 | DESCRIPTION |
320 | This is the validation routine for Modification of Approvals |
321 | |
322 | |
323 | SCOPE - PRIVATE |
324 | |
325 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
326 | |
327 | |
328 | |
329 | ARGUMENTS : IN: |
330 | p_old_adj_rec |
331 | |
332 | OUT: |
333 | p_Validation_status |
334 | IN/ OUT: |
335 | p_adj_rec |
336 | |
337 | RETURNS : NONE |
338 | |
339 | NOTES |
340 | |
341 | MODIFICATION HISTORY |
342 | Vivek Halder 30-JAN-97 Created |
343 | |
344 +===========================================================================*/
345
346 PROCEDURE Validate_Adj_modify (
347 p_adj_rec IN OUT NOCOPY ar_adjustments%rowtype,
348 p_old_adj_rec IN ar_adjustments%rowtype,
349 p_validation_status IN OUT NOCOPY varchar2
350 ) IS
351
352 l_ps_rec ar_payment_schedules%rowtype;
353 l_approved_flag varchar2(1);
354 l_temp_adj_rec ar_adjustments%rowtype;
355
356 BEGIN
357
358 IF PG_DEBUG in ('Y', 'C') THEN
359 arp_util.debug('Validate_Adj_modify()+' , G_MSG_HIGH);
360 END IF;
361
362 /*----------------------------------------------+
363 | Validate Old Adjustment status. Cannot modify |
364 | if status is 'A' |
365 +----------------------------------------------*/
366
367 IF ( p_old_adj_rec.status = 'A' )
368 THEN
369 ar_adjvalidate_pub.aapi_message (
370 p_application_name => 'AR',
371 p_message_name => 'AR_AAPI_NO_CHANGE_OR_REVERSE',
372 p_token1_name => 'STATUS',
373 p_token1_value => p_old_adj_rec.status
374 );
375
376 p_validation_status := FND_API.G_RET_STS_ERROR;
377 RETURN;
378 END IF;
379
380 /*----------------------------------------------------+
381 | Check new status. It could be NULL, 'A','R','W','M'|
382 +----------------------------------------------------*/
383
384 IF ( (p_adj_rec.status IS NOT NULL) AND
385 (p_adj_rec.status NOT IN ('A', 'R', 'W', 'M')) )
386 THEN
387 ar_adjvalidate_pub.aapi_message (
388 p_application_name => 'AR',
389 p_message_name => 'AR_AAPI_INVALID_CHANGE_STATUS',
390 p_token1_name => 'STATUS',
391 p_token1_value => p_adj_rec.status
392 );
393
394 p_validation_status := FND_API.G_RET_STS_ERROR;
395 RETURN;
396 END IF;
397
398 /*---------------------------------------------------+
399 | 2. Validate approval limits if new status is 'A' |
400 +---------------------------------------------------*/
401
402 /*----------------------------------+
403 | a) Get the invoice currency code |
404 +----------------------------------*/
405
406 BEGIN
407
411 WHERE payment_schedule_id = p_old_adj_rec.payment_schedule_id;
408 SELECT *
409 INTO l_ps_rec
410 FROM ar_payment_schedules
412
413 EXCEPTION
414 WHEN NO_DATA_FOUND THEN
415
416 /*-----------------------------------------------+
417 | Payment schedule Id does not exist |
418 | Set the message and status accordingly |
419 +-----------------------------------------------*/
420 ar_adjvalidate_pub.aapi_message(
421 p_application_name =>'AR',
422 p_message_name => 'AR_AAPI_INVALID_PAYMENT_SCHEDULE',
423 p_token1_name => 'PAYMENT_SCHEDULE_ID',
424 p_token1_value => to_char(p_old_adj_rec.payment_schedule_id)
425 ) ;
426 p_validation_status := FND_API.G_RET_STS_ERROR;
427 RETURN ;
428 END ;
429
430 IF ( p_adj_rec.status = 'A' )
431 THEN
432
433 /*-----------------------------------+
434 | Get the approval limits and check |
435 +-----------------------------------*/
436
437 ar_adjvalidate_pub.Within_approval_limits(
438 p_old_adj_rec.amount,
439 l_ps_rec.invoice_currency_code,
440 l_approved_flag,
441 p_validation_status
442 ) ;
443
444 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
445 THEN
446 RETURN;
447 END IF;
448
449 IF ( l_approved_flag <> FND_API.G_TRUE )
450 THEN
451 ar_adjvalidate_pub.aapi_message
452 ( p_application_name => 'AR',
453 p_message_name => 'AR_VAL_AMT_APPROVAL_LIMIT'
454 );
455 p_validation_status := FND_API.G_RET_STS_ERROR;
456 RETURN ;
457 END IF;
458
459 /*-------------------------------------------------+
460 | Check over application |
461 +-------------------------------------------------*/
462
463 -- This is done by the entity handler
464
465 END IF;
466
467 /*-------------------------------------------------+
468 | 3. Validate GL date |
469 +-------------------------------------------------*/
470
471 IF ( p_adj_rec.gl_date IS NOT NULL )
472 THEN
473 ar_adjvalidate_pub.Validate_dates (
474 p_old_adj_rec.apply_date,
475 p_adj_rec.gl_date,
476 l_ps_rec,
477 p_validation_status
478 ) ;
479 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
480 THEN
481 RETURN;
482 END IF;
483 END IF;
484
485 p_adj_rec.gl_date := trunc(p_adj_rec.gl_date);
486
487 /*---------------------------------------------------+
488 | 4. Copy all other attributes into p_adj_rec |
489 +---------------------------------------------------*/
490
491 l_temp_adj_rec.comments := p_adj_rec.comments ;
492 l_temp_adj_rec.status := p_adj_rec.status ;
493 l_temp_adj_rec.gl_date := p_adj_rec.gl_date ;
494
495 p_adj_rec := p_old_adj_rec ;
496
497 IF ( l_temp_adj_rec.comments IS NOT NULL )
498 THEN
499 p_adj_rec.comments := l_temp_adj_rec.comments;
500 END IF;
501
502 IF ( l_temp_adj_rec.status IS NOT NULL )
503 THEN
504 p_adj_rec.status := l_temp_adj_rec.status ;
505 END IF ;
506
507 IF ( l_temp_adj_rec.gl_date IS NOT NULL )
508 THEN
509 p_adj_rec.gl_date := l_temp_adj_rec.gl_date ;
510 END IF ;
511
512 IF PG_DEBUG in ('Y', 'C') THEN
513 arp_util.debug('Validate_Adj_modify()-' , G_MSG_HIGH);
514 END IF;
515
516 EXCEPTION
517
518 WHEN OTHERS THEN
519 IF PG_DEBUG in ('Y', 'C') THEN
520 arp_util.debug('EXCEPTION: Validate_Adj_Modify() ', G_MSG_UERROR);
521 END IF;
522 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,'Validate_Adj_Modify');
523 p_validation_status := FND_API.G_RET_STS_UNEXP_ERROR ;
524 RETURN;
525
526
527 END Validate_Adj_Modify;
528
529 /*===========================================================================+
530 | PROCEDURE |
531 | Validate_Adj_Reverse |
532 | |
533 | DESCRIPTION |
534 | This is the validation routine for Reversal of Approvals |
535 | |
536 | |
537 | SCOPE - PRIVATE |
538 | |
539 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
540 | |
541 | |
542 | |
543 | ARGUMENTS : IN: |
544 | p_old_adj_rec |
548 | |
545 | |
546 | OUT: |
547 | p_Validation_status |
549 | IN/ OUT: |
550 | p_reversal_gl_date |
551 | p_reversal_date |
552 | |
553 | RETURNS : NONE |
554 | |
555 | NOTES |
556 | |
557 | MODIFICATION HISTORY |
558 | Vivek Halder 30-JAN-97 Created |
559 | |
560 +===========================================================================*/
561
562 PROCEDURE Validate_Adj_Reverse (
563 p_old_adj_rec IN ar_adjustments%rowtype,
564 p_reversal_gl_date IN OUT NOCOPY date,
565 p_reversal_date IN OUT NOCOPY date,
566 p_validation_status IN OUT NOCOPY varchar2
567 ) IS
568
569 l_ps_rec ar_payment_schedules%rowtype;
570
571 BEGIN
572
573 IF PG_DEBUG in ('Y', 'C') THEN
574 arp_util.debug('Validate_Adj_Reverse()+' , G_MSG_HIGH);
575 END IF;
576
577 /*----------------------------------------------+
578 | Validate Old Adjustment status. Cannot reverse|
579 | if status is 'A' or 'R' |
580 +----------------------------------------------*/
581
582 IF ( p_old_adj_rec.status <> 'A' )
583 THEN
584 ar_adjvalidate_pub.aapi_message (
585 p_application_name => 'AR',
586 p_message_name => 'AR_AAPI_NO_CHANGE_OR_REVERSE',
587 p_token1_name => 'STATUS',
588 p_token1_value => p_old_adj_rec.status
589 );
590
591 p_validation_status := FND_API.G_RET_STS_ERROR;
592 RETURN;
593 END IF;
594
595
596 /*-------------------------------------------------+
597 | Validate reversal dates |
598 +-------------------------------------------------*/
599
600
601 IF ( p_reversal_gl_date IS NULL )
602 THEN
603 p_reversal_gl_date := p_old_adj_rec.gl_date;
604 END IF;
605
606 IF ( p_reversal_date IS NULL )
607 THEN
608 p_reversal_date := p_old_adj_rec.apply_date;
609 END IF;
610
611 /*-----------------------------------+
612 | Get the Payment schedule details |
613 +-----------------------------------*/
614
615 BEGIN
616
617 SELECT *
618 INTO l_ps_rec
619 FROM ar_payment_schedules
620 WHERE payment_schedule_id = p_old_adj_rec.payment_schedule_id;
621
622 EXCEPTION
623 WHEN NO_DATA_FOUND THEN
624
625 /*-----------------------------------------------+
626 | Payment schedule Id does not exist |
627 | Set the message and status accordingly |
628 +-----------------------------------------------*/
629 ar_adjvalidate_pub.aapi_message(
630 p_application_name =>'AR',
631 p_message_name => 'AR_AAPI_INVALID_PAYMENT_SCHEDULE',
632 p_token1_name => 'PAYMENT_SCHEDULE_ID',
633 p_token1_value => to_char(p_old_adj_rec.payment_schedule_id)
634 ) ;
635 p_validation_status := FND_API.G_RET_STS_ERROR;
636 RETURN ;
637 END ;
638
639 ar_adjvalidate_pub.Validate_dates (
640 p_reversal_date,
641 p_reversal_gl_date,
642 l_ps_rec,
643 p_validation_status
644 ) ;
645 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
646 THEN
647 RETURN;
648 END IF;
649
650 p_reversal_gl_date := trunc(p_reversal_gl_date);
651 p_reversal_date := trunc(p_reversal_date);
652
653 IF PG_DEBUG in ('Y', 'C') THEN
654 arp_util.debug('Validate_Adj_Reverse()-' , G_MSG_HIGH);
655 END IF;
656
657 EXCEPTION
658
659 WHEN OTHERS THEN
660 IF PG_DEBUG in ('Y', 'C') THEN
661 arp_util.debug('EXCEPTION: Validate_Adj_Reverse() ', G_MSG_UERROR);
662 END IF;
663 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,'Validate_Adj_Reverse');
664 p_validation_status := FND_API.G_RET_STS_UNEXP_ERROR ;
665 RETURN;
666
667
668 END Validate_Adj_Reverse;
669
670 /*===========================================================================+
671 | PROCEDURE |
672 | Validate_Adj_Approve |
673 | |
674 | DESCRIPTION |
675 | This is the validation routine for Approval |
676 | |
680 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
677 | |
678 | SCOPE - PRIVATE |
679 | |
681 | |
682 | |
683 | |
684 | ARGUMENTS : IN: |
685 | p_old_adj_rec |
686 | |
687 | OUT: |
688 | p_Validation_status |
689 | |
690 | IN/ OUT: |
691 | p_adj_rec |
692 | |
693 | |
694 | RETURNS : NONE |
695 | |
696 | NOTES |
697 | |
698 | MODIFICATION HISTORY |
699 | Vivek Halder 30-JAN-97 Created |
700 | |
701 +===========================================================================*/
702
703 PROCEDURE Validate_Adj_Approve (
704 p_adj_rec IN OUT NOCOPY ar_adjustments%rowtype,
705 p_old_adj_rec IN ar_adjustments%rowtype,
706 p_validation_status IN OUT NOCOPY varchar2
707 ) IS
708
709 l_ps_rec ar_payment_schedules%rowtype;
710 l_approved_flag varchar2(1);
711 l_temp_adj_rec ar_adjustments%rowtype;
712
713 BEGIN
714
715 IF PG_DEBUG in ('Y', 'C') THEN
716 arp_util.debug('Validate_Adj_Approve()+' , G_MSG_HIGH);
717 END IF;
718
719 /*-----------------------------------------------+
720 | Validate Old Adjustment status. Cannot approve|
721 | if status is 'A' or 'R' |
722 +----------------------------------------------*/
723
724 IF ( p_old_adj_rec.status = 'A' )
725 THEN
726 ar_adjvalidate_pub.aapi_message (
727 p_application_name => 'AR',
728 p_message_name => 'AR_AAPI_NO_CHANGE_OR_REVERSE',
729 p_token1_name => 'STATUS',
730 p_token1_value => p_old_adj_rec.status
731 );
732 p_validation_status := FND_API.G_RET_STS_ERROR;
733 RETURN;
734 END IF;
735
736 /*----------------------------------------------------+
737 | If new status is NULL set it to 'A' |
738 +----------------------------------------------------*/
739
740 IF (p_adj_rec.status IS NULL )
741 THEN
742 p_adj_rec.status := 'A' ;
743 END IF;
744
745 /*----------------------------------------------------+
746 | Check new status. It could be NULL, 'A','R','W','M'|
747 +----------------------------------------------------*/
748
749 IF ( (p_adj_rec.status IS NOT NULL) AND
750 (p_adj_rec.status NOT IN ('A', 'R', 'W', 'M')) )
751 THEN
752 ar_adjvalidate_pub.aapi_message (
753 p_application_name => 'AR',
754 p_message_name => 'AR_AAPI_INVALID_CHANGE_STATUS',
755 p_token1_name => 'STATUS',
756 p_token1_value => p_adj_rec.status
757 );
758
759 p_validation_status := FND_API.G_RET_STS_ERROR;
760 RETURN;
761 END IF;
762
763
764
765 /*---------------------------------------------------+
766 | 2. Validate approval limits if new status is 'A' |
767 +---------------------------------------------------*/
768
769 /*----------------------------------+
770 | a) Get the invoice currency code |
771 +----------------------------------*/
772
773 BEGIN
774
775 SELECT *
776 INTO l_ps_rec
777 FROM ar_payment_schedules
778 WHERE payment_schedule_id = p_old_adj_rec.payment_schedule_id;
779
780 EXCEPTION
781 WHEN NO_DATA_FOUND THEN
782
783 /*-----------------------------------------------+
784 | Payment schedule Id does not exist |
785 | Set the message and status accordingly |
786 +-----------------------------------------------*/
787 ar_adjvalidate_pub.aapi_message(
788 p_application_name =>'AR',
789 p_message_name => 'AR_AAPI_INVALID_PAYMENT_SCHEDULE',
790 p_token1_name => 'PAYMENT_SCHEDULE_ID',
791 p_token1_value => to_char(p_old_adj_rec.payment_schedule_id)
792 ) ;
793 p_validation_status := FND_API.G_RET_STS_ERROR;
794 RETURN ;
795 END ;
796
797 IF ( p_adj_rec.status = 'A' )
798 THEN
799
800 /*-----------------------------------+
804 ar_adjvalidate_pub.Within_approval_limits(
801 | Get the approval limits and check |
802 +-----------------------------------*/
803
805 p_old_adj_rec.amount,
806 l_ps_rec.invoice_currency_code,
807 l_approved_flag,
808 p_validation_status
809 ) ;
810
811 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
812 THEN
813 RETURN;
814 END IF;
815
816 IF ( l_approved_flag <> FND_API.G_TRUE )
817 THEN
818 ar_adjvalidate_pub.aapi_message
819 ( p_application_name => 'AR',
820 p_message_name => 'AR_VAL_AMT_APPROVAL_LIMIT'
821 );
822 p_validation_status := FND_API.G_RET_STS_ERROR;
823 RETURN ;
824 END IF;
825
826 /*-------------------------------------------------+
827 | Check over application |
828 +-------------------------------------------------*/
829
830 -- This is done by the entity handler
831
832 END IF;
833
834 /*-------------------------------------------------+
835 | 3. Validate GL date |
836 +-------------------------------------------------*/
837
838 IF ( p_adj_rec.gl_date IS NOT NULL )
839 THEN
840 ar_adjvalidate_pub.Validate_dates (
841 p_old_adj_rec.apply_date,
842 p_adj_rec.gl_date,
843 l_ps_rec,
844 p_validation_status
845 ) ;
846 IF ( p_validation_status <> FND_API.G_RET_STS_SUCCESS )
847 THEN
848 RETURN;
849 END IF;
850 END IF;
851
852 p_adj_rec.gl_date := trunc(p_adj_rec.gl_date);
853
854 /*---------------------------------------------------+
855 | 4. Copy all other attributes into p_adj_rec |
856 +---------------------------------------------------*/
857
858 l_temp_adj_rec := NULL ;
859
860 l_temp_adj_rec.comments := p_adj_rec.comments ;
861 l_temp_adj_rec.status := p_adj_rec.status ;
862 l_temp_adj_rec.gl_date := p_adj_rec.gl_date ;
863
864 p_adj_rec := p_old_adj_rec ;
865
866 IF ( l_temp_adj_rec.comments IS NOT NULL )
867 THEN
868 p_adj_rec.comments := l_temp_adj_rec.comments;
869 END IF;
870
871 IF ( l_temp_adj_rec.status IS NOT NULL )
872 THEN
873 p_adj_rec.status := l_temp_adj_rec.status ;
874 END IF ;
875
876 IF ( l_temp_adj_rec.gl_date IS NOT NULL )
877 THEN
878 p_adj_rec.gl_date := l_temp_adj_rec.gl_date ;
879 END IF ;
880
881 IF PG_DEBUG in ('Y', 'C') THEN
882 arp_util.debug('Validate_Adj_Approve ()-' , G_MSG_HIGH);
883 END IF;
884
885 EXCEPTION
886
887 WHEN OTHERS THEN
888 IF PG_DEBUG in ('Y', 'C') THEN
889 arp_util.debug('EXCEPTION: Validate_Adj_Approve() ', G_MSG_UERROR);
890 END IF;
891 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,'Validate_Adj_Approve');
892 p_validation_status := FND_API.G_RET_STS_UNEXP_ERROR ;
893 RETURN;
894
895
896 END Validate_Adj_Approve;
897
898 /*===========================================================================+
899 | PROCEDURE |
900 | Create_Adjustment |
901 | |
902 | DESCRIPTION |
903 | This is the main routine that creates adjustment |
904 | |
905 | SCOPE - PUBLIC |
906 | |
907 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
908 | arp_util.disable_debug |
909 | arp_util.enable_debug |
910 | fnd_api.compatible_api_call |
911 | fnd_api.g_exc_unexpected_error |
912 | fnd_api.g_ret_sts_error |
913 | fnd_api.g_ret_sts_error |
914 | fnd_api.g_ret_sts_success |
915 | fnd_api.to_boolean |
916 | fnd_msg_pub.check_msg_level |
917 | fnd_msg_pub.count_and_get |
918 | fnd_msg_pub.initialize |
919 | ar_adjvalidate_pub.Init_Context_Rec |
920 | ar_adjvalidate_pub.Cache_Details |
921 | |
922 | ARGUMENTS : IN: |
923 | p_api_name |
924 | p_api_version |
925 | p_init_msg_list |
926 | p_commit |
930 | p_return_status |
927 | p_validation_level |
928 | p_adj_rec |
929 | OUT: |
931 | p_msg_count |
932 | p_msg_data |
933 | p_new_adjust_number |
934 | p_new_adjust_id |
935 | |
936 | IN/ OUT: |
937 | |
938 | |
939 | |
940 | RETURNS : NONE |
941 | |
942 | NOTES |
943 | |
944 | MODIFICATION HISTORY |
945 | Vivek Halder 30-JUN-97 Created |
946 | |
947 +===========================================================================*/
948
949 PROCEDURE Create_Adjustment (
950 p_api_name IN varchar2,
951 p_api_version IN number,
952 p_init_msg_list IN varchar2 := FND_API.G_FALSE,
953 p_commit_flag IN varchar2 := FND_API.G_FALSE,
954 p_validation_level IN number := FND_API.G_VALID_LEVEL_FULL,
955 p_msg_count OUT NOCOPY number,
956 p_msg_data OUT NOCOPY varchar2,
957 p_return_status OUT NOCOPY varchar2 ,
958 p_adj_rec IN ar_adjustments%rowtype,
959 p_new_adjust_number OUT NOCOPY ar_adjustments.adjustment_number%type,
960 p_new_adjust_id OUT NOCOPY ar_adjustments.adjustment_id%type
961 ) IS
962
963 l_api_name CONSTANT VARCHAR2(20) := 'AR_ADJUSTAPI_PUB';
964 l_api_version CONSTANT NUMBER := 1.0;
965
966 l_hsec VARCHAR2(10);
967 l_status number;
968
969 l_inp_adj_rec ar_adjustments%rowtype;
970 o_adjustment_number ar_adjustments.adjustment_number%type;
971 o_adjustment_id ar_adjustments.adjustment_id%type;
972 l_return_status varchar2(1);
973
974 BEGIN
975 select hsecs
976 into G_START_TIME
977 from v$timer;
978
979 /*------------------------------------+
980 | Standard start of API savepoint |
981 +------------------------------------*/
982
983 SAVEPOINT AR_ADJUSTAPI_PUB;
984
985 /*--------------------------------------------------+
986 | Standard call to check for call compatibility |
987 +--------------------------------------------------*/
988
989 IF NOT FND_API.Compatible_API_Call(
990 l_api_version,
991 p_api_version,
992 l_api_name,
993 G_PKG_NAME
994 )
995 THEN
996 p_return_status := FND_API.G_RET_STS_ERROR ;
997
998 /*--------------------------------------------------+
999 | Get message count and if 1, return message data |
1000 +---------------------------------------------------*/
1001
1002 FND_MSG_PUB.Count_And_Get(
1003 p_encoded => FND_API.G_FALSE,
1004 p_count => p_msg_count,
1005 p_data => p_msg_data
1006 );
1007 IF PG_DEBUG in ('Y', 'C') THEN
1008 arp_util.debug('Compatility error occurred.', G_MSG_ERROR);
1009 END IF;
1010
1011 RETURN ;
1012 END IF;
1013
1014 /*-------------------------------------------------------------+
1015 | Initialize message list if p_init_msg_list is set to TRUE |
1016 +-------------------------------------------------------------*/
1017
1018 IF FND_API.to_Boolean( p_init_msg_list )
1019 THEN
1020 FND_MSG_PUB.initialize;
1021 END IF;
1022
1023 /*------------------------------------------------------------+
1024 | Turn on AR debugging messages only if the most verbose |
1025 | log is requested. The AR messages do not provide message |
1026 | level information. |
1027 +------------------------------------------------------------*/
1028
1029 IF ( FND_MSG_PUB.Check_Msg_Level( G_MSG_LOW) )
1030 THEN
1031 arp_util.enable_debug;
1032 ELSE
1033 arp_util.disable_debug;
1034 END IF;
1035
1036 IF PG_DEBUG in ('Y', 'C') THEN
1037 arp_util.debug('Insert_Adjustment()+ ', G_MSG_HIGH);
1038 END IF;
1039
1040 /*-----------------------------------------+
1041 | Initialize return status to SUCCESS |
1042 +-----------------------------------------*/
1043
1044 p_return_status := FND_API.G_RET_STS_SUCCESS;
1045
1046 /*---------------------------------------------+
1047 | ========== Start of API Body ========== |
1048 +---------------------------------------------*/
1049
1050 /*--------------------------------------------+
1051 | Copy the input adjustment record to local |
1055
1052 | variable to allow changes to it |
1053 +--------------------------------------------*/
1054 l_inp_adj_rec := p_adj_rec ;
1056
1057 /*------------------------------------------------+
1058 | Initialize the profile options and cache data |
1059 +------------------------------------------------*/
1060
1061 ar_adjvalidate_pub.Init_Context_Rec (
1062 p_validation_level,
1063 l_return_status
1064 );
1065 /*------------------------------------------------+
1066 | Check status and return if error |
1067 +------------------------------------------------*/
1068
1069 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1070 THEN
1071 /*---------------------------------------------------+
1072 | Rollback to the defined Savepoint |
1073 +---------------------------------------------------*/
1074
1075 ROLLBACK TO AR_ADJUSTAPI_PUB;
1076 p_return_status := l_return_status ;
1077 RETURN;
1078 END IF;
1079
1080 /*------------------------------------------------+
1081 | Cache details |
1082 +------------------------------------------------*/
1083
1084 ar_adjvalidate_pub.Cache_Details (
1085 l_return_status
1086 );
1087 /*------------------------------------------------+
1088 | Check status and return if error |
1089 +------------------------------------------------*/
1090
1091 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1092 THEN
1093 /*---------------------------------------------------+
1094 | Rollback to the defined Savepoint |
1095 +---------------------------------------------------*/
1096
1097 ROLLBACK TO AR_ADJUSTAPI_PUB;
1098 p_return_status := l_return_status ;
1099 RETURN;
1100 END IF;
1101
1102 /*------------------------------------------+
1103 | Validate the input details |
1104 | Do not continue if there are errors. |
1105 +------------------------------------------*/
1106
1107 ar_adjustapi_pub.Validate_Adj_Insert(
1108 l_inp_adj_rec,
1109 l_return_status
1110 );
1111
1112 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1113 THEN
1114
1115 /*---------------------------------------------------+
1116 | Rollback to the defined Savepoint |
1117 +---------------------------------------------------*/
1118
1119 ROLLBACK TO AR_ADJUSTAPI_PUB;
1120
1121 p_return_status := l_return_status ;
1122
1123 /*--------------------------------------------------+
1124 | Get message count and if 1, return message data |
1125 +---------------------------------------------------*/
1126
1127 FND_MSG_PUB.Count_And_Get(
1128 p_encoded => FND_API.G_FALSE,
1129 p_count => p_msg_count,
1130 p_data => p_msg_data
1131 );
1132
1133 IF PG_DEBUG in ('Y', 'C') THEN
1134 arp_util.debug('Create_Adjustment: ' ||
1135 'Validation error(s) occurred. Rolling back '||
1136 'and setting status to ERROR', G_MSG_ERROR);
1137 END IF;
1138
1139 RETURN;
1140
1141 END IF;
1142
1143 /*-----------------------------------------------+
1144 | Build up remaining data for the entity handler |
1145 | Reset attributes which should not be populated |
1146 +-----------------------------------------------*/
1147
1148 ar_adjustapi_pub.Set_Remaining_Attributes (
1149 l_inp_adj_rec,
1150 l_return_status
1151 ) ;
1152
1153 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1154 THEN
1155
1156 /*---------------------------------------------------+
1157 | Rollback to the defined Savepoint |
1158 +---------------------------------------------------*/
1159
1160 ROLLBACK TO AR_ADJUSTAPI_PUB;
1161
1162 p_return_status := l_return_status ;
1163
1164 /*--------------------------------------------------+
1165 | Get message count and if 1, return message data |
1166 +---------------------------------------------------*/
1167
1168 FND_MSG_PUB.Count_And_Get(
1169 p_encoded => FND_API.G_FALSE,
1170 p_count => p_msg_count,
1171 p_data => p_msg_data
1172 );
1173
1174 IF PG_DEBUG in ('Y', 'C') THEN
1175 arp_util.debug('Create_Adjustment: ' ||
1176 'Validation error(s) occurred. Rolling back '||
1177 'and setting status to ERROR', G_MSG_ERROR);
1178 END IF;
1179
1180 RETURN;
1181
1182 END IF;
1183
1184 /*-----------------------------------------------+
1185 | Call the entity Handler for insert |
1186 +-----------------------------------------------*/
1187 BEGIN
1188 arp_process_adjustment.insert_adjustment (
1192 o_adjustment_number,
1189 'DUMMY',
1190 '1',
1191 l_inp_adj_rec,
1193 o_adjustment_id
1194 ) ;
1195
1196 EXCEPTION
1197 WHEN OTHERS THEN
1198 /*---------------------------------------------------+
1199 | Rollback to the defined Savepoint |
1200 +---------------------------------------------------*/
1201
1202 ROLLBACK TO AR_ADJUSTAPI_PUB;
1203
1204 p_return_status := FND_API.G_RET_STS_ERROR ;
1205
1206 /*--------------------------------------------------+
1207 | Get message count and if 1, return message data |
1208 +---------------------------------------------------*/
1209
1210 FND_MSG_PUB.Count_And_Get(
1211 p_encoded => FND_API.G_FALSE,
1212 p_count => p_msg_count,
1213 p_data => p_msg_data
1214 );
1215
1216 IF PG_DEBUG in ('Y', 'C') THEN
1217 arp_util.debug('Create_Adjustment: ' ||
1218 'Error in Insert Entity handler. Rolling back ' ||
1219 'and setting status to ERROR', G_MSG_ERROR);
1220 END IF;
1221
1222
1223 RETURN;
1224
1225 END ;
1226
1227 p_new_adjust_id := o_adjustment_id ;
1228 p_new_adjust_number := o_adjustment_number ;
1229
1230 /*-------------------------------------------+
1231 | ========== End of API Body ========== |
1232 +-------------------------------------------*/
1233
1234 /*---------------------------------------------------+
1235 | Get message count and if 1, return message data |
1236 +---------------------------------------------------*/
1237
1238 FND_MSG_PUB.Count_And_Get(
1239 p_encoded => FND_API.G_FALSE,
1240 p_count => p_msg_count,
1241 p_data => p_msg_data
1242 );
1243
1244 /*--------------------------------+
1245 | Standard check of p_commit |
1246 +--------------------------------*/
1247
1248 IF FND_API.To_Boolean( p_commit_flag )
1249 THEN
1250 IF PG_DEBUG in ('Y', 'C') THEN
1251 arp_util.debug('Create_Adjustment: ' || 'committing', G_MSG_HIGH);
1252 END IF;
1253 Commit;
1254 END IF;
1255
1256 IF PG_DEBUG in ('Y', 'C') THEN
1257 arp_util.debug('Create_Adjustment()- ', G_MSG_HIGH);
1258 END IF;
1259
1260 select TO_CHAR( (hsecs - G_START_TIME) / 100)
1261 into l_hsec
1262 from v$timer;
1263
1264 IF PG_DEBUG in ('Y', 'C') THEN
1265 arp_util.debug('Create_Adjustment: ' || 'Elapsed Time : '||l_hsec||' seconds', G_MSG_LOW);
1266 END IF;
1267
1268
1269 EXCEPTION
1270 WHEN FND_API.G_EXC_ERROR THEN
1271
1272 IF PG_DEBUG in ('Y', 'C') THEN
1273 arp_util.debug(SQLCODE, G_MSG_ERROR);
1274 arp_util.debug(SQLERRM, G_MSG_ERROR);
1275 END IF;
1276
1277 ROLLBACK TO AR_ADJUSTAPI_PUB;
1278 p_return_status := FND_API.G_RET_STS_ERROR ;
1279 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1280 p_count => p_msg_count,
1281 p_data => p_msg_data
1282 );
1283
1284 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1285
1286 IF PG_DEBUG in ('Y', 'C') THEN
1287 arp_util.debug(SQLERRM, G_MSG_ERROR);
1288 END IF;
1289 ROLLBACK TO AR_ADJUSTAPI_PUB ;
1290 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1291 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1292 p_count => p_msg_count,
1293 p_data => p_msg_data
1294 );
1295
1296 WHEN OTHERS THEN
1297
1298 /*-------------------------------------------------------+
1299 | Handle application errors that result from trapable |
1300 | error conditions. The error messages have already |
1301 | been put on the error stack. |
1302 +-------------------------------------------------------*/
1303
1304 IF (SQLCODE = -20001)
1305 THEN
1306 p_return_status := FND_API.G_RET_STS_ERROR ;
1307 ROLLBACK TO AR_ADJUSTAPI_PUB;
1308 IF PG_DEBUG in ('Y', 'C') THEN
1309 arp_util.debug('Create_Adjustment: ' ||
1310 'Completion validation error(s) occurred. ' ||
1311 'Rolling back and setting status to ERROR',
1312 G_MSG_ERROR);
1313 END IF;
1314
1315 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1316 p_count => p_msg_count,
1317 p_data => p_msg_data
1318 );
1319 RETURN;
1320 ELSE
1321 NULL;
1322 END IF;
1323
1324 arp_util.disable_debug;
1325
1326 END Create_Adjustment;
1327
1328
1332 | |
1329 /*===========================================================================+
1330 | PROCEDURE |
1331 | Modify_Adjustment |
1333 | DESCRIPTION |
1334 | This is the main routine that modifies an adjustment |
1335 | |
1336 | SCOPE - PUBLIC |
1337 | |
1338 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
1339 | arp_util.disable_debug |
1340 | arp_util.enable_debug |
1341 | fnd_api.compatible_api_call |
1342 | fnd_api.g_exc_unexpected_error |
1343 | fnd_api.g_ret_sts_error |
1344 | fnd_api.g_ret_sts_error |
1345 | fnd_api.g_ret_sts_success |
1346 | fnd_api.to_boolean |
1347 | fnd_msg_pub.check_msg_level |
1348 | fnd_msg_pub.count_and_get |
1349 | fnd_msg_pub.initialize |
1350 | ar_adjustments_pkg.fetch_p |
1351 | ar_process_adjustment.update_adjustment |
1352 | ar_adjvalidate_pub.within_approval_limit |
1353 | |
1354 | ARGUMENTS : IN: |
1355 | p_api_name |
1356 | p_api_version |
1357 | p_init_msg_list |
1358 | p_commit_flag |
1359 | p_validation_level |
1360 | p_adj_rec |
1361 | p_old_adjust_id |
1362 | OUT: |
1363 | p_return_status |
1364 | p_msg_count |
1365 | p_msg_data |
1366 | |
1367 | IN/ OUT: |
1368 | |
1369 | |
1370 | RETURNS : NONE |
1371 | |
1372 | NOTES |
1373 | |
1374 | MODIFICATION HISTORY |
1375 | Vivek Halder 30-JAN-97 Created |
1376 | |
1377 +===========================================================================*/
1378
1379 PROCEDURE Modify_Adjustment (
1380 p_api_name IN varchar2,
1381 p_api_version IN number,
1382 p_init_msg_list IN varchar2 := FND_API.G_FALSE,
1383 p_commit_flag IN varchar2 := FND_API.G_FALSE,
1384 p_validation_level IN number := FND_API.G_VALID_LEVEL_FULL,
1385 p_msg_count OUT NOCOPY number,
1386 p_msg_data OUT NOCOPY varchar2,
1387 p_return_status OUT NOCOPY varchar2 ,
1388 p_adj_rec IN ar_adjustments%rowtype,
1389 p_old_adjust_id IN ar_adjustments.adjustment_id%type
1390 ) IS
1391
1392 l_api_name CONSTANT VARCHAR2(20) := 'AR_ADJUSTAPI_PUB';
1393 l_api_version CONSTANT NUMBER := 1.0;
1394 l_old_adj_rec ar_adjustments%rowtype;
1395 l_hsec VARCHAR2(10);
1396 l_status number;
1397 l_inp_adj_rec ar_adjustments%rowtype;
1398 l_return_status varchar2(1) := FND_API.G_RET_STS_SUCCESS;
1399
1400
1401 BEGIN
1402 select hsecs
1403 into G_START_TIME
1404 from v$timer;
1405
1406 /*------------------------------------+
1407 | Standard start of API savepoint |
1408 +------------------------------------*/
1409
1410 SAVEPOINT AR_ADJUSTAPI_PUB;
1411
1412 /*--------------------------------------------------+
1413 | Standard call to check for call compatibility |
1414 +--------------------------------------------------*/
1415
1416 IF NOT FND_API.Compatible_API_Call(
1417 l_api_version,
1418 p_api_version,
1419 l_api_name,
1420 G_PKG_NAME
1421 )
1422 THEN
1423 p_return_status := FND_API.G_RET_STS_ERROR ;
1424 /*--------------------------------------------------+
1425 | Get message count and if 1, return message data |
1426 +---------------------------------------------------*/
1427
1428 FND_MSG_PUB.Count_And_Get(
1429 p_encoded => FND_API.G_FALSE,
1430 p_count => p_msg_count,
1434 arp_util.debug('Modify_Adjustment: ' || 'Compatility error occurred.', G_MSG_ERROR);
1431 p_data => p_msg_data
1432 );
1433 IF PG_DEBUG in ('Y', 'C') THEN
1435 END IF;
1436
1437 RETURN ;
1438 END IF;
1439
1440 /*-------------------------------------------------------------+
1441 | Initialize message list if p_init_msg_list is set to TRUE |
1442 +-------------------------------------------------------------*/
1443
1444 IF FND_API.to_Boolean( p_init_msg_list )
1445 THEN
1446 FND_MSG_PUB.initialize;
1447 END IF;
1448
1449 /*------------------------------------------------------------+
1450 | Turn on AR debugging messages only if the most verbose |
1451 | log is requested. The AR messages do not provide message |
1452 | level information. |
1453 +------------------------------------------------------------*/
1454
1455 IF ( FND_MSG_PUB.Check_Msg_Level( G_MSG_LOW ) )
1456 THEN
1457 arp_util.enable_debug;
1458 ELSE
1459 arp_util.disable_debug;
1460 END IF;
1461
1462
1463 IF PG_DEBUG in ('Y', 'C') THEN
1464 arp_util.debug('Modify_Adjustment()+ ', G_MSG_HIGH);
1465 END IF;
1466
1467 /*-----------------------------------------+
1468 | Initialize return status to SUCCESS |
1469 +-----------------------------------------*/
1470
1471 p_return_status := FND_API.G_RET_STS_SUCCESS;
1472
1473 /*---------------------------------------------+
1474 | ========== Start of API Body ========== |
1475 +---------------------------------------------*/
1476
1477 /*---------------------------------------------+
1478 | Copy the input record to local variable to |
1479 | allow changes to it |
1480 +---------------------------------------------*/
1481 l_inp_adj_rec := p_adj_rec ;
1482
1483
1484 /*------------------------------------------------+
1485 | Initialize the profile options and cache data |
1486 +------------------------------------------------*/
1487
1488 ar_adjvalidate_pub.Init_Context_Rec (
1489 p_validation_level,
1490 l_return_status
1491 );
1492 /*------------------------------------------------+
1493 | Check status and return if error |
1494 +------------------------------------------------*/
1495
1496 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1497 THEN
1498 /*---------------------------------------------------+
1499 | Rollback to the defined Savepoint |
1500 +---------------------------------------------------*/
1501
1502 ROLLBACK TO AR_ADJUSTAPI_PUB;
1503 p_return_status := l_return_status ;
1504 RETURN;
1505 END IF;
1506
1507 /*------------------------------------------------+
1508 | Cache details |
1509 +------------------------------------------------*/
1510
1511 ar_adjvalidate_pub.Cache_Details (
1512 l_return_status
1513 );
1514 /*------------------------------------------------+
1515 | Check status and return if error |
1516 +------------------------------------------------*/
1517
1518 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1519 THEN
1520 /*---------------------------------------------------+
1521 | Rollback to the defined Savepoint |
1522 +---------------------------------------------------*/
1523
1524 ROLLBACK TO AR_ADJUSTAPI_PUB;
1525 p_return_status := l_return_status ;
1526 RETURN;
1527 END IF;
1528
1529 /*------------------------------------------------+
1530 | Fetch details of the old adjustment record |
1531 +------------------------------------------------*/
1532 BEGIN
1533
1534 arp_adjustments_pkg.fetch_p (
1535 l_old_adj_rec,
1536 p_old_adjust_id
1537 );
1538
1539 EXCEPTION
1540 WHEN OTHERS THEN
1541 /*---------------------------------------------------+
1542 | Rollback to the defined Savepoint |
1543 +---------------------------------------------------*/
1544
1545 ROLLBACK TO AR_ADJUSTAPI_PUB;
1546
1547 p_return_status := FND_API.G_RET_STS_ERROR ;
1548
1549 ar_adjvalidate_pub.aapi_message (
1550 p_application_name => 'AR',
1554 );
1551 p_message_name => 'AR_AAPI_INVALID_ADJ_ID',
1552 p_token1_name => 'ADJUSTMENT_ID',
1553 p_token1_value => to_char(p_old_adjust_id)
1555
1556 RETURN ;
1557 END ;
1558
1559 /*------------------------------------------+
1560 | Validate the input details |
1561 | Do not continue if there are errors. |
1562 +------------------------------------------*/
1563
1564 ar_adjustapi_pub.Validate_Adj_Modify (
1565 l_inp_adj_rec,
1566 l_old_adj_rec,
1567 l_return_status
1568 );
1569
1570
1571 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1572 THEN
1573
1574 /*---------------------------------------------------+
1575 | Rollback to the defined Savepoint |
1576 +---------------------------------------------------*/
1577
1578 ROLLBACK TO AR_ADJUSTAPI_PUB;
1579
1580 p_return_status := l_return_status ;
1581
1582 /*--------------------------------------------------+
1583 | Get message count and if 1, return message data |
1584 +---------------------------------------------------*/
1585
1586 FND_MSG_PUB.Count_And_Get(
1587 p_encoded => FND_API.G_FALSE,
1588 p_count => p_msg_count,
1589 p_data => p_msg_data
1590 );
1591
1592 IF PG_DEBUG in ('Y', 'C') THEN
1593 arp_util.debug('Modify_Adjustment: ' ||
1594 'Validation error(s) occurred. Rolling back ' ||
1595 'and setting status to ERROR', G_MSG_ERROR);
1596 END IF;
1597
1598 RETURN;
1599
1600 END IF;
1601
1602
1603 /*-----------------------------------------------+
1604 | Call the entity Handler for Modify |
1605 +-----------------------------------------------*/
1606 BEGIN
1607 arp_process_adjustment.update_adjustment (
1608 'DUMMY',
1609 '1',
1610 l_inp_adj_rec,
1611 NULL,
1612 p_old_adjust_id
1613 ) ;
1614
1615 EXCEPTION
1616 WHEN OTHERS THEN
1617 /*---------------------------------------------------+
1618 | Rollback to the defined Savepoint |
1619 +---------------------------------------------------*/
1620
1621 ROLLBACK TO AR_ADJUSTAPI_PUB;
1622
1623 p_return_status := FND_API.G_RET_STS_ERROR ;
1624
1625 /*--------------------------------------------------+
1626 | Get message count and if 1, return message data |
1627 +---------------------------------------------------*/
1628
1629 FND_MSG_PUB.Count_And_Get(
1630 p_encoded => FND_API.G_FALSE,
1631 p_count => p_msg_count,
1632 p_data => p_msg_data
1633 );
1634 IF PG_DEBUG in ('Y', 'C') THEN
1635 arp_util.debug('Modify_Adjustment: ' ||
1636 'Error in Insert Entity handler. Rolling back '||
1637 'and setting status to ERROR', G_MSG_ERROR);
1638 END IF;
1639
1640 RETURN;
1641
1642 END ;
1643
1644 /*-------------------------------------------+
1645 | ========== End of API Body ========== |
1646 +-------------------------------------------*/
1647
1648 /*---------------------------------------------------+
1649 | Get message count and if 1, return message data |
1650 +---------------------------------------------------*/
1651
1652 FND_MSG_PUB.Count_And_Get(
1653 p_encoded => FND_API.G_FALSE,
1654 p_count => p_msg_count,
1655 p_data => p_msg_data
1656 );
1657
1658 /*--------------------------------+
1659 | Standard check of p_commit |
1660 +--------------------------------*/
1661
1662 IF FND_API.To_Boolean( p_commit_flag )
1663 THEN
1664 IF PG_DEBUG in ('Y', 'C') THEN
1665 arp_util.debug('Modify_Adjustment: ' || 'committing', G_MSG_HIGH);
1666 END IF;
1667 Commit;
1668 END IF;
1669
1670 IF PG_DEBUG in ('Y', 'C') THEN
1671 arp_util.debug('Modify_Adjustment()- ', G_MSG_HIGH);
1672 END IF;
1673
1674 select TO_CHAR( (hsecs - G_START_TIME) / 100)
1675 into l_hsec
1676 from v$timer;
1677
1678 IF PG_DEBUG in ('Y', 'C') THEN
1679 arp_util.debug('Modify_Adjustment: ' || 'Elapsed Time : '||l_hsec||' seconds', G_MSG_LOW);
1680 END IF;
1681
1682
1683 EXCEPTION
1684 WHEN FND_API.G_EXC_ERROR THEN
1685
1686 IF PG_DEBUG in ('Y', 'C') THEN
1687 arp_util.debug('Modify_Adjustment: ' || SQLCODE, G_MSG_ERROR);
1688 arp_util.debug('Modify_Adjustment: ' || SQLERRM, G_MSG_ERROR);
1689 END IF;
1690
1691 ROLLBACK TO AR_ADJUSTAPI_PUB;
1692 p_return_status := FND_API.G_RET_STS_ERROR ;
1693 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1694 p_count => p_msg_count,
1698 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1695 p_data => p_msg_data
1696 );
1697
1699
1700 IF PG_DEBUG in ('Y', 'C') THEN
1701 arp_util.debug('Modify_Adjustment: ' || SQLERRM, G_MSG_ERROR);
1702 END IF;
1703 ROLLBACK TO AR_ADJUSTAPI_PUB ;
1704 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1705 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1706 p_count => p_msg_count,
1707 p_data => p_msg_data
1708 );
1709
1710 WHEN OTHERS THEN
1711
1712 /*-------------------------------------------------------+
1713 | Handle application errors that result from trapable |
1714 | error conditions. The error messages have already |
1715 | been put on the error stack. |
1716 +-------------------------------------------------------*/
1717
1718 IF (SQLCODE = -20001)
1719 THEN
1720 p_return_status := FND_API.G_RET_STS_ERROR ;
1721 ROLLBACK TO AR_ADJUSTAPI_PUB;
1722 IF PG_DEBUG in ('Y', 'C') THEN
1723 arp_util.debug('Modify_Adjustment: ' ||
1724 'Completion validation error(s) occurred. ' ||
1725 'Rolling back and setting status to ERROR',
1726 G_MSG_ERROR);
1727 END IF;
1728 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
1729 p_count => p_msg_count,
1730 p_data => p_msg_data
1731 );
1732 RETURN;
1733 ELSE
1734 NULL;
1735 END IF;
1736
1737 arp_util.disable_debug;
1738
1739 END Modify_Adjustment;
1740
1741
1742 /*===========================================================================+
1743 | PROCEDURE |
1744 | Reverse_Adjustment |
1745 | |
1746 | DESCRIPTION |
1747 | This is the main routine that reverses an adjustment |
1748 | |
1749 | SCOPE - PUBLIC |
1750 | |
1751 | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED |
1752 | arp_util.disable_debug |
1753 | arp_util.enable_debug |
1754 | fnd_api.compatible_api_call |
1755 | fnd_api.g_exc_unexpected_error |
1756 | fnd_api.g_ret_sts_error |
1757 | fnd_api.g_ret_sts_error |
1758 | fnd_api.g_ret_sts_success |
1759 | fnd_api.to_boolean |
1760 | fnd_msg_pub.check_msg_level |
1761 | fnd_msg_pub.count_and_get |
1762 | fnd_msg_pub.initialize |
1763 | ar_adjustments_pkg.fetch_p |
1764 | ar_process_adjustment.reverse_adjustment |
1765 | |
1766 | ARGUMENTS : IN: |
1767 | p_api_name |
1768 | p_api_version |
1769 | p_init_msg_list |
1770 | p_commit_flag |
1771 | p_validation_level |
1772 | p_old_adjust_id |
1773 | OUT: |
1774 | p_return_status |
1775 | p_msg_count |
1776 | p_msg_data |
1777 | |
1778 | IN/ OUT: |
1779 | |
1780 | |
1781 | RETURNS : NONE |
1782 | |
1783 | NOTES |
1784 | |
1785 | MODIFICATION HISTORY |
1786 | Vivek Halder 30-JAN-97 Created |
1787 | |
1788 +===========================================================================*/
1789
1790 PROCEDURE Reverse_Adjustment (
1791 p_api_name IN varchar2,
1792 p_api_version IN number,
1793 p_init_msg_list IN varchar2 := FND_API.G_FALSE,
1797 p_msg_data OUT NOCOPY varchar2,
1794 p_commit_flag IN varchar2 := FND_API.G_FALSE,
1795 p_validation_level IN number := FND_API.G_VALID_LEVEL_FULL,
1796 p_msg_count OUT NOCOPY number,
1798 p_return_status OUT NOCOPY varchar2 ,
1799 p_old_adjust_id IN ar_adjustments.adjustment_id%type,
1800 p_reversal_gl_date IN date,
1801 p_reversal_date IN date
1802 ) IS
1803
1804 l_api_name CONSTANT VARCHAR2(20) := 'AR_ADJUSTAPI_PUB';
1805 l_api_version CONSTANT NUMBER := 1.0;
1806
1807 l_reversal_date ar_adjustments.apply_date%type;
1808 l_reversal_gl_date ar_adjustments.gl_date%type;
1809 l_hsec VARCHAR2(10);
1810 l_status number;
1811 l_old_adj_rec ar_adjustments%rowtype;
1812 l_return_status varchar2(1) := FND_API.G_RET_STS_SUCCESS;
1813
1814
1815 BEGIN
1816 select hsecs
1817 into G_START_TIME
1818 from v$timer;
1819
1820 /*------------------------------------+
1821 | Standard start of API savepoint |
1822 +------------------------------------*/
1823
1824 SAVEPOINT AR_ADJUSTAPI_PUB;
1825
1826 /*--------------------------------------------------+
1827 | Standard call to check for call compatibility |
1828 +--------------------------------------------------*/
1829
1830 IF NOT FND_API.Compatible_API_Call(
1831 l_api_version,
1832 p_api_version,
1833 l_api_name,
1834 G_PKG_NAME
1835 )
1836 THEN
1837 p_return_status := FND_API.G_RET_STS_ERROR ;
1838
1839 /*--------------------------------------------------+
1840 | Get message count and if 1, return message data |
1841 +---------------------------------------------------*/
1842
1843 FND_MSG_PUB.Count_And_Get(
1844 p_encoded =>FND_API.G_FALSE,
1845 p_count => p_msg_count,
1846 p_data => p_msg_data
1847 );
1848 IF PG_DEBUG in ('Y', 'C') THEN
1849 arp_util.debug('Reverse_Adjustment: ' || 'Compatility error occurred.', G_MSG_ERROR);
1850 END IF;
1851
1852 RETURN ;
1853 END IF;
1854
1855 /*-------------------------------------------------------------+
1856 | Initialize message list if p_init_msg_list is set to TRUE |
1857 +-------------------------------------------------------------*/
1858
1859 IF FND_API.to_Boolean( p_init_msg_list )
1860 THEN
1861 FND_MSG_PUB.initialize;
1862 END IF;
1863
1864 /*------------------------------------------------------------+
1865 | Turn on AR debugging messages only if the most verbose |
1866 | log is requested. The AR messages do not provide message |
1867 | level information. |
1868 +------------------------------------------------------------*/
1869
1870 IF ( FND_MSG_PUB.Check_Msg_Level( G_MSG_LOW ) )
1871 THEN
1872 arp_util.enable_debug;
1873 ELSE
1874 arp_util.disable_debug;
1875 END IF;
1876
1877
1878 IF PG_DEBUG in ('Y', 'C') THEN
1879 arp_util.debug('Reverse_Adjustment()+ ', G_MSG_HIGH);
1880 END IF;
1881
1882 /*-----------------------------------------+
1883 | Initialize return status to SUCCESS |
1884 +-----------------------------------------*/
1885
1886 p_return_status := FND_API.G_RET_STS_SUCCESS;
1887
1888 /*---------------------------------------------+
1889 | ========== Start of API Body ========== |
1890 +---------------------------------------------*/
1891
1892
1893 /*------------------------------------------------+
1894 | Initialize the profile options and cache data |
1895 +------------------------------------------------*/
1896
1897 ar_adjvalidate_pub.Init_Context_Rec (
1898 p_validation_level,
1899 l_return_status
1900 );
1901 /*------------------------------------------------+
1902 | Check status and return if error |
1903 +------------------------------------------------*/
1904
1905 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1906 THEN
1907 /*---------------------------------------------------+
1908 | Rollback to the defined Savepoint |
1909 +---------------------------------------------------*/
1910
1911 ROLLBACK TO AR_ADJUSTAPI_PUB;
1912 p_return_status := l_return_status ;
1913 RETURN;
1914 END IF;
1915
1916 /*------------------------------------------------+
1917 | Fetch details of the old adjustment record |
1918 +------------------------------------------------*/
1919 BEGIN
1920
1921 arp_adjustments_pkg.fetch_p (
1922 l_old_adj_rec,
1923 p_old_adjust_id
1924 );
1925 EXCEPTION
1926 WHEN OTHERS THEN
1927 /*---------------------------------------------------+
1928 | Rollback to the defined Savepoint |
1929 +---------------------------------------------------*/
1930
1931 ROLLBACK TO AR_ADJUSTAPI_PUB;
1932
1933 p_return_status := FND_API.G_RET_STS_ERROR ;
1937 p_message_name => 'AR_AAPI_INVALID_ADJ_ID',
1934
1935 ar_adjvalidate_pub.aapi_message (
1936 p_application_name => 'AR',
1938 p_token1_name => 'ADJUSTMENT_ID',
1939 p_token1_value => to_char(p_old_adjust_id)
1940 );
1941
1942 RETURN;
1943 END ;
1944
1945 /*------------------------------------------------+
1946 | Cache details |
1947 +------------------------------------------------*/
1948
1949 ar_adjvalidate_pub.Cache_Details (
1950 l_return_status
1951 );
1952 /*------------------------------------------------+
1953 | Check status and return if error |
1954 +------------------------------------------------*/
1955
1956 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1957 THEN
1958 /*---------------------------------------------------+
1959 | Rollback to the defined Savepoint |
1960 +---------------------------------------------------*/
1961
1962 ROLLBACK TO AR_ADJUSTAPI_PUB;
1963 p_return_status := l_return_status ;
1964 RETURN;
1965 END IF;
1966
1967 /*--------------------------------------------+
1968 | Validate the input details. Copy the dates |
1969 | into local variables |
1970 +--------------------------------------------*/
1971
1972 l_reversal_gl_date := p_reversal_gl_date ;
1973 l_reversal_date := p_reversal_date ;
1974
1975 /*------------------------------------------------+
1976 | Validate if the adjustment can be reversed |
1977 +------------------------------------------------*/
1978
1979
1980 ar_adjustapi_pub.Validate_Adj_Reverse (
1981 l_old_adj_rec,
1982 l_reversal_gl_date,
1983 l_reversal_date,
1984 l_return_status
1985 );
1986
1987
1988 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
1989 THEN
1990
1991 /*---------------------------------------------------+
1992 | Rollback to the defined Savepoint |
1993 +---------------------------------------------------*/
1994
1995 ROLLBACK TO AR_ADJUSTAPI_PUB;
1996
1997 p_return_status := l_return_status ;
1998
1999 /*--------------------------------------------------+
2000 | Get message count and if 1, return message data |
2001 +---------------------------------------------------*/
2002
2003 FND_MSG_PUB.Count_And_Get(
2004 p_encoded =>FND_API.G_FALSE,
2005 p_count => p_msg_count,
2006 p_data => p_msg_data
2007 );
2008
2009 IF PG_DEBUG in ('Y', 'C') THEN
2010 arp_util.debug('Reverse_Adjustment: ' ||
2011 'Validation error(s) occurred. Rolling back '||
2012 'and setting status to ERROR', G_MSG_ERROR);
2013 END IF;
2014
2015 RETURN;
2016
2017 END IF;
2018
2019
2020 /*-----------------------------------------------+
2021 | Call the entity Handler for Reversal |
2022 +-----------------------------------------------*/
2023 BEGIN
2024
2025 arp_process_adjustment.reverse_adjustment (
2026 p_old_adjust_id,
2027 l_reversal_gl_date,
2028 l_reversal_date,
2029 'DUMMY',
2030 '1'
2031 ) ;
2032 EXCEPTION
2033 WHEN OTHERS THEN
2034 /*---------------------------------------------------+
2035 | Rollback to the defined Savepoint |
2036 +---------------------------------------------------*/
2037
2038 ROLLBACK TO AR_ADJUSTAPI_PUB;
2039
2040 p_return_status := FND_API.G_RET_STS_ERROR ;
2041
2042 /*--------------------------------------------------+
2043 | Get message count and if 1, return message data |
2044 +---------------------------------------------------*/
2045
2046 FND_MSG_PUB.Count_And_Get(
2047 p_encoded =>FND_API.G_FALSE,
2048 p_count => p_msg_count,
2049 p_data => p_msg_data
2050 );
2051
2052 IF PG_DEBUG in ('Y', 'C') THEN
2053 arp_util.debug('Reverse_Adjustment: ' ||
2054 'Error in Insert Entity handler. Rolling back '||
2055 'and setting status to ERROR', G_MSG_ERROR);
2056 END IF;
2057
2058 RETURN;
2059
2060 END ;
2061
2062
2063 /*-------------------------------------------+
2064 | ========== End of API Body ========== |
2065 +-------------------------------------------*/
2066
2067 /*---------------------------------------------------+
2068 | Get message count and if 1, return message data |
2069 +---------------------------------------------------*/
2070
2071 FND_MSG_PUB.Count_And_Get(
2072 p_encoded =>FND_API.G_FALSE,
2073 p_count => p_msg_count,
2074 p_data => p_msg_data
2078 | Standard check of p_commit |
2075 );
2076
2077 /*--------------------------------+
2079 +--------------------------------*/
2080
2081 IF FND_API.To_Boolean( p_commit_flag )
2082 THEN
2083 IF PG_DEBUG in ('Y', 'C') THEN
2084 arp_util.debug('Reverse_Adjustment: ' || 'committing', G_MSG_HIGH);
2085 END IF;
2086 Commit;
2087 END IF;
2088
2089 IF PG_DEBUG in ('Y', 'C') THEN
2090 arp_util.debug('Reverse_Adjustment()- ', G_MSG_HIGH);
2091 END IF;
2092
2093 select TO_CHAR( (hsecs - G_START_TIME) / 100)
2094 into l_hsec
2095 from v$timer;
2096
2097 IF PG_DEBUG in ('Y', 'C') THEN
2098 arp_util.debug('Reverse_Adjustment: ' || 'Elapsed Time : '||l_hsec||' seconds', G_MSG_LOW);
2099 END IF;
2100
2101
2102 EXCEPTION
2103 WHEN FND_API.G_EXC_ERROR THEN
2104
2105 IF PG_DEBUG in ('Y', 'C') THEN
2106 arp_util.debug('Reverse_Adjustment: ' || SQLCODE, G_MSG_ERROR);
2107 arp_util.debug('Reverse_Adjustment: ' || SQLERRM, G_MSG_ERROR);
2108 END IF;
2109
2110 ROLLBACK TO AR_ADJUSTAPI_PUB;
2111 p_return_status := FND_API.G_RET_STS_ERROR ;
2112 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2113 p_count => p_msg_count,
2114 p_data => p_msg_data
2115 );
2116
2117 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2118
2119 IF PG_DEBUG in ('Y', 'C') THEN
2120 arp_util.debug('Reverse_Adjustment: ' || SQLERRM, G_MSG_ERROR);
2121 END IF;
2122 ROLLBACK TO AR_ADJUSTAPI_PUB ;
2123 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2124 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2125 p_count => p_msg_count,
2126 p_data => p_msg_data
2127 );
2128
2129 WHEN OTHERS THEN
2130
2131 /*-------------------------------------------------------+
2132 | Handle application errors that result from trapable |
2133 | error conditions. The error messages have already |
2134 | been put on the error stack. |
2135 +-------------------------------------------------------*/
2136
2137 IF (SQLCODE = -20001)
2138 THEN
2139 p_return_status := FND_API.G_RET_STS_ERROR ;
2140 ROLLBACK TO AR_ADJUSTAPI_PUB;
2141 IF PG_DEBUG in ('Y', 'C') THEN
2142 arp_util.debug('Reverse_Adjustment: ' ||
2143 'Completion validation error(s) occurred. ' ||
2144 'Rolling back and setting status to ERROR',
2145 G_MSG_ERROR);
2146 END IF;
2147
2148 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2149 p_count => p_msg_count,
2150 p_data => p_msg_data
2151 );
2152 RETURN;
2153 ELSE
2154 NULL;
2155 END IF;
2156
2157 arp_util.disable_debug;
2158
2159 END Reverse_Adjustment;
2160
2161
2162 /*===========================================================================+
2163 | PROCEDURE |
2164 | Approve_Adjustment |
2165 | |
2166 | DESCRIPTION |
2167 | This is the main routine that approves an adjustment |
2168 | |
2169 | SCOPE - PUBLIC |
2170 | |
2171 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED |
2172 | arp_util.disable_debug |
2173 | arp_util.enable_debug |
2174 | fnd_api.compatible_api_call |
2175 | fnd_api.g_exc_unexpected_error |
2176 | fnd_api.g_ret_sts_error |
2177 | fnd_api.g_ret_sts_error |
2178 | fnd_api.g_ret_sts_success |
2179 | fnd_api.to_boolean |
2180 | fnd_msg_pub.check_msg_level |
2181 | fnd_msg_pub.count_and_get |
2182 | fnd_msg_pub.initialize |
2183 | ar_adjustments_pkg.fetch_p |
2184 | ar_process_adjustment.update_approve_adjustment |
2185 | |
2186 | ARGUMENTS : IN: |
2187 | p_api_name |
2188 | p_api_version |
2189 | p_init_msg_list |
2190 | p_commit_flag |
2194 | OUT: |
2191 | p_validation_level |
2192 | p_adj_rec |
2193 | p_old_adjust_id |
2195 | p_return_status |
2196 | p_msg_count |
2197 | p_msg_data |
2198 | |
2199 | IN/ OUT: |
2200 | |
2201 | |
2202 | RETURNS : NONE |
2203 | |
2204 | NOTES |
2205 | |
2206 | MODIFICATION HISTORY |
2207 | Vivek Halder 30-JAN-97 Created |
2208 | |
2209 +===========================================================================*/
2210
2211 PROCEDURE Approve_Adjustment (
2212 p_api_name IN varchar2,
2213 p_api_version IN number,
2214 p_init_msg_list IN varchar2 := FND_API.G_FALSE,
2215 p_commit_flag IN varchar2 := FND_API.G_FALSE,
2216 p_validation_level IN number := FND_API.G_VALID_LEVEL_FULL,
2217 p_msg_count OUT NOCOPY number,
2218 p_msg_data OUT NOCOPY varchar2,
2219 p_return_status OUT NOCOPY varchar2 ,
2220 p_adj_rec IN ar_adjustments%rowtype,
2221 p_old_adjust_id IN ar_adjustments.adjustment_id%type
2222 ) IS
2223
2224 l_api_name CONSTANT VARCHAR2(20) := 'AR_ADJUSTAPI_PUB';
2225 l_api_version CONSTANT NUMBER := 1.0;
2226 l_old_adj_rec ar_adjustments%rowtype;
2227
2228 l_inp_adj_rec ar_adjustments%rowtype;
2229 l_hsec VARCHAR2(10);
2230 l_status number;
2231
2232 l_return_status varchar2(1) := FND_API.G_RET_STS_SUCCESS;
2233
2234
2235 BEGIN
2236 select hsecs
2237 into G_START_TIME
2238 from v$timer;
2239
2240 /*------------------------------------+
2241 | Standard start of API savepoint |
2242 +------------------------------------*/
2243
2244 SAVEPOINT AR_ADJUSTAPI_PUB;
2245
2246 /*--------------------------------------------------+
2247 | Standard call to check for call compatibility |
2248 +--------------------------------------------------*/
2249
2250 IF NOT FND_API.Compatible_API_Call(
2251 l_api_version,
2252 p_api_version,
2253 l_api_name,
2254 G_PKG_NAME
2255 )
2256 THEN
2257 p_return_status := FND_API.G_RET_STS_ERROR ;
2258 /*--------------------------------------------------+
2259 | Get message count and if 1, return message data |
2260 +---------------------------------------------------*/
2261
2262 FND_MSG_PUB.Count_And_Get(
2263 p_encoded => FND_API.G_FALSE,
2264 p_count => p_msg_count,
2265 p_data => p_msg_data
2266 );
2267 IF PG_DEBUG in ('Y', 'C') THEN
2268 arp_util.debug('Approve_Adjustment: ' || 'Compatility error occurred.', G_MSG_ERROR);
2269 END IF;
2270
2271 RETURN ;
2272 END IF;
2273
2274 /*-------------------------------------------------------------+
2275 | Initialize message list if p_init_msg_list is set to TRUE |
2276 +-------------------------------------------------------------*/
2277
2278 IF FND_API.to_Boolean( p_init_msg_list )
2279 THEN
2280 FND_MSG_PUB.initialize;
2281 END IF;
2282
2283 /*------------------------------------------------------------+
2284 | Turn on AR debugging messages only if the most verbose |
2285 | log is requested. The AR messages do not provide message |
2286 | level information. |
2287 +------------------------------------------------------------*/
2288
2289 IF ( FND_MSG_PUB.Check_Msg_Level( G_MSG_LOW ) )
2290 THEN
2291 arp_util.enable_debug;
2292 ELSE
2293 arp_util.disable_debug;
2294 END IF;
2295
2296
2297 IF PG_DEBUG in ('Y', 'C') THEN
2298 arp_util.debug('Approve_Adjustment()+ ', G_MSG_HIGH);
2299 END IF;
2300
2301 /*-----------------------------------------+
2302 | Initialize return status to SUCCESS |
2303 +-----------------------------------------*/
2304
2305 p_return_status := FND_API.G_RET_STS_SUCCESS;
2306
2307 /*---------------------------------------------+
2308 | ========== Start of API Body ========== |
2309 +---------------------------------------------*/
2310
2311
2312 /*---------------------------------------------+
2313 | Copy the input record to local variable to |
2314 | allow changes to it |
2315 +---------------------------------------------*/
2316 l_inp_adj_rec := p_adj_rec ;
2317
2318
2319 /*------------------------------------------------+
2323 ar_adjvalidate_pub.Init_Context_Rec (
2320 | Initialize the profile options and cache data |
2321 +------------------------------------------------*/
2322
2324 p_validation_level,
2325 l_return_status
2326 );
2327 /*------------------------------------------------+
2328 | Check status and return if error |
2329 +------------------------------------------------*/
2330
2331 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
2332 THEN
2333 /*---------------------------------------------------+
2334 | Rollback to the defined Savepoint |
2335 +---------------------------------------------------*/
2336
2337 ROLLBACK TO AR_ADJUSTAPI_PUB;
2338 p_return_status := l_return_status ;
2339 RETURN;
2340 END IF;
2341
2342 /*------------------------------------------------+
2343 | Cache details |
2344 +------------------------------------------------*/
2345
2346 ar_adjvalidate_pub.Cache_Details (
2347 l_return_status
2348 );
2349 /*------------------------------------------------+
2350 | Check status and return if error |
2351 +------------------------------------------------*/
2352
2353 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
2354 THEN
2355 /*---------------------------------------------------+
2356 | Rollback to the defined Savepoint |
2357 +---------------------------------------------------*/
2358
2359 ROLLBACK TO AR_ADJUSTAPI_PUB;
2360 p_return_status := l_return_status ;
2361 RETURN;
2362 END IF;
2363
2364 /*------------------------------------------------+
2365 | Fetch details of the old adjustment record |
2366 +------------------------------------------------*/
2367 BEGIN
2368
2369 arp_adjustments_pkg.fetch_p (
2370 l_old_adj_rec,
2371 p_old_adjust_id
2372 );
2373
2374 EXCEPTION
2375 WHEN OTHERS THEN
2376 /*---------------------------------------------------+
2377 | Rollback to the defined Savepoint |
2378 +---------------------------------------------------*/
2379
2380 ROLLBACK TO AR_ADJUSTAPI_PUB;
2381
2382 p_return_status := FND_API.G_RET_STS_ERROR ;
2383
2384 ar_adjvalidate_pub.aapi_message (
2385 p_application_name => 'AR',
2386 p_message_name => 'AR_AAPI_INVALID_ADJ_ID',
2387 p_token1_name => 'ADJUSTMENT_ID',
2388 p_token1_value => to_char(p_old_adjust_id)
2389 );
2390
2391 RETURN ;
2392 END ;
2393
2394 /*------------------------------------------+
2395 | Validate the input details |
2396 | Do not continue if there are errors. |
2397 +------------------------------------------*/
2398
2399 ar_adjustapi_pub.Validate_Adj_Approve (
2400 l_inp_adj_rec,
2401 l_old_adj_rec,
2402 l_return_status
2403 );
2404
2405
2406 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS )
2407 THEN
2408
2409 /*---------------------------------------------------+
2410 | Rollback to the defined Savepoint |
2411 +---------------------------------------------------*/
2412
2413 ROLLBACK TO AR_ADJUSTAPI_PUB;
2414
2415 p_return_status := l_return_status ;
2416
2417 /*--------------------------------------------------+
2418 | Get message count and if 1, return message data |
2419 +---------------------------------------------------*/
2420
2421 FND_MSG_PUB.Count_And_Get(
2422 p_encoded => FND_API.G_FALSE,
2423 p_count => p_msg_count,
2424 p_data => p_msg_data
2425 );
2426
2427 IF PG_DEBUG in ('Y', 'C') THEN
2428 arp_util.debug('Approve_Adjustment: ' ||
2429 'Validation error(s) occurred. Rolling back ' ||
2430 'and setting status to ERROR', G_MSG_ERROR);
2431 END IF;
2432
2433 RETURN;
2434
2435 END IF;
2436
2437 /*-----------------------------------------------+
2438 | Call the entity Handler for Approve |
2439 +-----------------------------------------------*/
2440 BEGIN
2441
2442 arp_process_adjustment.update_approve_adj (
2443 'DUMMY',
2444 '1',
2445 l_inp_adj_rec,
2446 NULL,
2447 l_inp_adj_rec.status,
2448 p_old_adjust_id
2449 ) ;
2450
2451 EXCEPTION
2452 WHEN OTHERS THEN
2453 /*---------------------------------------------------+
2454 | Rollback to the defined Savepoint |
2455 +---------------------------------------------------*/
2456
2457 ROLLBACK TO AR_ADJUSTAPI_PUB;
2458
2462 | Get message count and if 1, return message data |
2459 p_return_status := FND_API.G_RET_STS_ERROR ;
2460
2461 /*--------------------------------------------------+
2463 +---------------------------------------------------*/
2464
2465 FND_MSG_PUB.Count_And_Get(
2466 p_encoded => FND_API.G_FALSE,
2467 p_count => p_msg_count,
2468 p_data => p_msg_data
2469 );
2470
2471 IF PG_DEBUG in ('Y', 'C') THEN
2472 arp_util.debug('Approve_Adjustment: ' ||
2473 'Error in Insert Entity handler. Rolling back ' ||
2474 'and setting status to ERROR', G_MSG_ERROR);
2475 END IF;
2476
2477 RETURN;
2478
2479 END ;
2480
2481
2482 /*-------------------------------------------+
2483 | ========== End of API Body ========== |
2484 +-------------------------------------------*/
2485
2486 /*---------------------------------------------------+
2487 | Get message count and if 1, return message data |
2488 +---------------------------------------------------*/
2489
2490 FND_MSG_PUB.Count_And_Get(
2491 p_encoded => FND_API.G_FALSE,
2492 p_count => p_msg_count,
2493 p_data => p_msg_data
2494 );
2495
2496 /*--------------------------------+
2497 | Standard check of p_commit |
2498 +--------------------------------*/
2499
2500 IF FND_API.To_Boolean( p_commit_flag )
2501 THEN
2502 IF PG_DEBUG in ('Y', 'C') THEN
2503 arp_util.debug('Approve_Adjustment: ' || 'committing', G_MSG_HIGH);
2504 END IF;
2505 Commit;
2506 END IF;
2507
2508 IF PG_DEBUG in ('Y', 'C') THEN
2509 arp_util.debug('Approve_Adjustment()- ', G_MSG_HIGH);
2510 END IF;
2511
2512 select TO_CHAR( (hsecs - G_START_TIME) / 100)
2513 into l_hsec
2514 from v$timer;
2515
2516 IF PG_DEBUG in ('Y', 'C') THEN
2517 arp_util.debug('Approve_Adjustment: ' || 'Elapsed Time : '||l_hsec||' seconds', G_MSG_LOW);
2518 END IF;
2519
2520
2521 EXCEPTION
2522 WHEN FND_API.G_EXC_ERROR THEN
2523
2524 IF PG_DEBUG in ('Y', 'C') THEN
2525 arp_util.debug('Approve_Adjustment: ' || SQLCODE, G_MSG_ERROR);
2526 arp_util.debug('Approve_Adjustment: ' || SQLERRM, G_MSG_ERROR);
2527 END IF;
2528
2529 ROLLBACK TO AR_ADJUSTAPI_PUB;
2530 p_return_status := FND_API.G_RET_STS_ERROR ;
2531 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2532 p_count => p_msg_count,
2533 p_data => p_msg_data
2534 );
2535
2536 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2537
2538 IF PG_DEBUG in ('Y', 'C') THEN
2539 arp_util.debug('Approve_Adjustment: ' || SQLERRM, G_MSG_ERROR);
2540 END IF;
2541 ROLLBACK TO AR_ADJUSTAPI_PUB ;
2542 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2543 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2544 p_count => p_msg_count,
2545 p_data => p_msg_data
2546 );
2547
2548 WHEN OTHERS THEN
2549
2550 /*-------------------------------------------------------+
2551 | Handle application errors that result from trapable |
2552 | error conditions. The error messages have already |
2553 | been put on the error stack. |
2554 +-------------------------------------------------------*/
2555
2556 IF (SQLCODE = -20001)
2557 THEN
2558 p_return_status := FND_API.G_RET_STS_ERROR ;
2559 ROLLBACK TO AR_ADJUSTAPI_PUB;
2560 IF PG_DEBUG in ('Y', 'C') THEN
2561 arp_util.debug('Approve_Adjustment: ' ||
2562 'Completion validation error(s) occurred. ' ||
2563 'Rolling back and setting status to ERROR',
2564 G_MSG_ERROR);
2565 END IF;
2566
2567 FND_MSG_PUB.Count_And_Get( p_encoded => FND_API.G_FALSE,
2568 p_count => p_msg_count,
2569 p_data => p_msg_data
2570 );
2571 RETURN;
2572 ELSE
2573 NULL;
2574 END IF;
2575
2576 arp_util.disable_debug;
2577
2578 END Approve_Adjustment;
2579
2580
2581 END AR_ADJUSTAPI_PUB;