DBA Data[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;