DBA Data[Home] [Help]

PACKAGE BODY: APPS.AR_REVENUEADJUST_PUB

Source


4   G_PKG_NAME          CONSTANT VARCHAR2(30):= 'AR_RevenueAdjust_PUB';
1 PACKAGE BODY AR_RevenueAdjust_PUB AS
2 /*$Header: ARXPRADB.pls 120.7.12010000.2 2008/08/28 20:03:37 mraymond ship $*/
3 
5   PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'),'N');
6 
7 
8 -----------------------------------------------------------------------
9 --   The following subroutine group_compatible is local procedure
10 --   introdcued for the Sales Group project.  This subroutine checks
11 --   for backward compatibility.  If the API user passes 'B' for
12 --   sales_credit_type indicating both Revenue and Non-Revenue then
13 --   from_salesgroup_id  or to_salesgroup_id can not be populated.
14 --   if they are then we raise an error.
15 ------------------------------------------------------------------------
16 
17 FUNCTION group_compatible (
18   p_rev_adj_rec ar_revenue_adjustment_pvt.rev_adj_rec_type)
19   RETURN BOOLEAN IS
20 
21 BEGIN
22 
23   IF p_rev_adj_rec.sales_credit_type = 'B' THEN
24     IF (p_rev_adj_rec.from_salesgroup_id IS NOT NULL OR
25         p_rev_adj_rec.to_salesgroup_id IS NOT NULL) THEN
26       RETURN FALSE;
27     END IF;
28   END IF;
29 
30   RETURN TRUE;
31 
32 END group_compatible;
33 
34 -----------------------------------------------------------------------
35 --	API name 	: Unearn_Revenue
36 --	Type		: Public
37 --	Function	: Transfers a specified amount of revenue from
38 --                        earned to unearned revenue account
39 --	Pre-reqs	: Sufficient earned revenue must exist.
40 --	Parameters	:
41 --	IN		: p_api_version        	  NUMBER       Required
42 --		 	  p_init_msg_list         VARCHAR2     Optional
43 --				Default = FND_API.G_FALSE
44 --			  p_commit                VARCHAR2     Optional
45 --				Default = FND_API.G_FALSE
46 --                        p_rev_adj_rec           Rev_Adj_Rec_Type  Required
47 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
48 --                        x_msg_count             NUMBER
49 --                        x_msg_data              VARCHAR2(2000)
50 --                        x_adjustment_id         NUMBER
51 --                        x_adjustment_number     VARCHAR2
52 --
53 --	Version	: Current version	2.0
54 --				Initial version created 31-MAY-2000
55 --			  Initial version 	1.0
56 --
57 --	Notes		:
58 --
59 -----------------------------------------------------------------------
60 
61 PROCEDURE Unearn_Revenue
62   (   p_api_version           IN   NUMBER
63      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
64      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
65      ,x_return_status         OUT NOCOPY  VARCHAR2
66      ,x_msg_count             OUT NOCOPY  NUMBER
67      ,x_msg_data              OUT NOCOPY  VARCHAR2
68      ,p_rev_adj_rec           IN   AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type
69      ,p_org_id                IN  NUMBER DEFAULT NULL
70      ,x_adjustment_id         OUT NOCOPY  NUMBER
71      ,x_adjustment_number     OUT NOCOPY  VARCHAR2)
72   IS
73     l_api_name			CONSTANT VARCHAR2(30)	:= 'Unearn_Revenue';
74     l_api_version           	CONSTANT NUMBER 	:= 2.0;
75     l_org_return_status VARCHAR2(1);
76     l_org_id                           NUMBER;
77   BEGIN
78     IF PG_DEBUG in ('Y', 'C') THEN
79        arp_debug.debug('AR_RevenueAdjust_PUB.Unearn_Revenue()+');
80     END IF;
81     -- Standard Start of API savepoint
82     SAVEPOINT	Unearn_Revenue_PUB;
83     -- Standard call to check for call compatibility.
84     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
85         	    	    	    	 	p_api_version        	,
86    	       	    	 			l_api_name 	    	,
87 		    	    	    	    	G_PKG_NAME )
88     THEN
89       IF PG_DEBUG in ('Y', 'C') THEN
90          arp_debug.debug('Unearn_Revenue: ' || '.Unexpected EXCEPTION '||sqlerrm||
91                      ' at AR_RevenueAdjust_PUB.Unearn_Revenue()+');
92       END IF;
93       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
94     END IF;
95     -- Initialize message list if p_init_msg_list is set to TRUE.
96     IF FND_API.to_Boolean( p_init_msg_list )
97     THEN
98       FND_MSG_PUB.initialize;
99     END IF;
100     --  Initialize API return status to success
101     x_return_status := FND_API.G_RET_STS_SUCCESS;
102 /* SSA change */
103        l_org_id            := p_org_id;
104        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
105        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
106                                                 p_return_status =>l_org_return_status);
107  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
108        x_return_status := FND_API.G_RET_STS_ERROR;
109  ELSE
110     -- Introduced for the Sales Group Project.
111     -- ORASHID 11-AUG-2003
112     --
113     IF NOT group_compatible(p_rev_adj_rec) THEN
114       fnd_message.set_name('AR','AR_INCOMPATIBLE_CREDIT_TYPE');
115       fnd_msg_pub.add;
116       RAISE fnd_api.g_exc_error;
120           (   p_api_version          => 2.0
117     END IF;
118 
119     AR_Revenue_Adjustment_PVT.Unearn_Revenue
121              ,p_init_msg_list        => p_init_msg_list
122              ,p_commit	             => p_commit
123              ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
124              ,x_return_status        => x_return_status
125              ,x_msg_count            => x_msg_count
126              ,x_msg_data             => x_msg_data
127              ,p_rev_adj_rec          => p_rev_adj_rec
128              ,x_adjustment_id        => x_adjustment_id
129              ,x_adjustment_number    => x_adjustment_number);
130 
131     -- Standard check of p_commit.
132     IF FND_API.To_Boolean( p_commit )
133     THEN
134       COMMIT WORK;
135     END IF;
136  END IF;
137     -- Standard call to get message count and if count is 1, get message info.
138     FND_MSG_PUB.Count_And_Get
139                 (p_encoded => FND_API.G_FALSE,
140                  p_count   => x_msg_count,
141         	 p_data    => x_msg_data);
142   EXCEPTION
143     WHEN FND_API.G_EXC_ERROR THEN
144 		ROLLBACK TO Unearn_Revenue_PUB;
145 		x_return_status := FND_API.G_RET_STS_ERROR ;
146 		FND_MSG_PUB.Count_And_Get
147                            (p_encoded => FND_API.G_FALSE,
148                             p_count   => x_msg_count,
149                             p_data    => x_msg_data);
150     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
151                 IF PG_DEBUG in ('Y', 'C') THEN
152                    arp_debug.debug('Unearn_Revenue: ' || 'Unexpected EXCEPTION '||sqlerrm||
153                              ' at AR_RevenueAdjust_PUB.Unearn_Revenue()+');
154                 END IF;
155 		ROLLBACK TO Unearn_Revenue_PUB;
156 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
157 		FND_MSG_PUB.Count_And_Get
158                            (p_encoded => FND_API.G_FALSE,
159                             p_count   => x_msg_count,
160                             p_data    => x_msg_data);
161     WHEN OTHERS THEN
162                 IF PG_DEBUG in ('Y', 'C') THEN
163                    arp_debug.debug('Unearn_Revenue: ' || 'Unexpected EXCEPTION '||sqlerrm||
164                              ' at AR_RevenueAdjust_PUB.Unearn_Revenue()+');
165                 END IF;
166 		ROLLBACK TO Unearn_Revenue_PUB;
167 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
168   		IF 	FND_MSG_PUB.Check_Msg_Level
169 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
170 		THEN
171         		FND_MSG_PUB.Add_Exc_Msg
172     	    		(	G_PKG_NAME  	    ,
173     	    			l_api_name
174 	    		);
175 		END IF;
176 		FND_MSG_PUB.Count_And_Get
177                            (p_encoded => FND_API.G_FALSE,
178                             p_count   => x_msg_count,
179                             p_data    => x_msg_data);
180   END Unearn_Revenue;
181 
182 -----------------------------------------------------------------------
183 --	API name 	: Earn_Revenue
184 --	Type		: Public
185 --	Function	: Transfers a specified amount of revenue from
186 --                        unearned to earned revenue account
190 --		 	  p_init_msg_list         VARCHAR2     Optional
187 --	Pre-reqs	: Sufficient unearned revenue must exist.
188 --	Parameters	:
189 --	IN		: p_api_version        	  NUMBER       Required
191 --				Default = FND_API.G_FALSE
192 --			  p_commit                VARCHAR2     Optional
193 --				Default = FND_API.G_FALSE
194 --                        p_rev_adj_rec           Rev_Adj_Rec_Type  Optional
195 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
196 --                        x_msg_count             NUMBER
197 --                        x_msg_data              VARCHAR2(2000)
198 --                        x_adjustment_id         NUMBER
199 --                        x_adjustment_number     VARCHAR2
200 --
201 --	Version	: Current version	2.0
202 --				Initial version created 31-MAY-2000
203 --			  Initial version 	1.0
204 --
205 --	Notes		:
206 --
207 -----------------------------------------------------------------------
208   PROCEDURE Earn_Revenue
209   (   p_api_version           IN   NUMBER
210      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
211      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
212      ,x_return_status         OUT NOCOPY  VARCHAR2
213      ,x_msg_count             OUT NOCOPY  NUMBER
214      ,x_msg_data              OUT NOCOPY  VARCHAR2
215      ,p_rev_adj_rec           IN   AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type
216      ,p_org_id                IN  NUMBER DEFAULT NULL
217      ,x_adjustment_id         OUT NOCOPY  NUMBER
218      ,x_adjustment_number     OUT NOCOPY  VARCHAR2)
219   IS
220     l_api_name			CONSTANT VARCHAR2(30)	:= 'Earn_Revenue';
221     l_api_version           	CONSTANT NUMBER 	:= 2.0;
222     l_org_return_status VARCHAR2(1);
223     l_org_id                           NUMBER;
224   BEGIN
225     -- Standard Start of API savepoint
226     SAVEPOINT	Earn_Revenue_PUB;
227     -- Standard call to check for call compatibility.
228     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
229         	    	    	    	 	p_api_version        	,
230    	       	    	 			l_api_name 	    	,
231 		    	    	    	    	G_PKG_NAME )
232     THEN
233       IF PG_DEBUG in ('Y', 'C') THEN
234          arp_debug.debug('Earn_Revenue: ' || 'Unexpected EXCEPTION '||sqlerrm||
235                                ' at AR_RevenueAdjust_PUB.Earn_Revenue()+');
236       END IF;
237       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
238     END IF;
239     -- Initialize message list if p_init_msg_list is set to TRUE.
240     IF FND_API.to_Boolean( p_init_msg_list )
241     THEN
242       FND_MSG_PUB.initialize;
243     END IF;
244     --  Initialize API return status to success
245     x_return_status := FND_API.G_RET_STS_SUCCESS;
246 
247 /* SSA change */
248        l_org_id            := p_org_id;
249        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
250        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
251                                                 p_return_status =>l_org_return_status);
252  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
253        x_return_status := FND_API.G_RET_STS_ERROR;
254  ELSE
255     -- Introduced for the Sales Group Project.
256     -- ORASHID 11-AUG-2003
257     --
258     IF NOT group_compatible(p_rev_adj_rec) THEN
259       fnd_message.set_name('AR','AR_INCOMPATIBLE_CREDIT_TYPE');
260       fnd_msg_pub.add;
261       RAISE fnd_api.g_exc_error;
262     END IF;
263 
264     AR_Revenue_Adjustment_PVT.Earn_Revenue
265           (   p_api_version          => 2.0
266              ,p_init_msg_list        => p_init_msg_list
267              ,p_commit	             => p_commit
268              ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
269              ,x_return_status        => x_return_status
270              ,x_msg_count            => x_msg_count
271              ,x_msg_data             => x_msg_data
272              ,p_rev_adj_rec          => p_rev_adj_rec
273              ,x_adjustment_id        => x_adjustment_id
274              ,x_adjustment_number    => x_adjustment_number);
275 
276     -- Standard check of p_commit.
277     IF FND_API.To_Boolean( p_commit )
278     THEN
279       COMMIT WORK;
280     END IF;
281     -- Standard call to get message count and if count is 1, get message info.
282  END IF;
283     FND_MSG_PUB.Count_And_Get
284                 (p_encoded => FND_API.G_FALSE,
285                  p_count   => x_msg_count,
286         	 p_data    => x_msg_data);
287   EXCEPTION
288     WHEN FND_API.G_EXC_ERROR THEN
289 		ROLLBACK TO Earn_Revenue_PUB;
290 		x_return_status := FND_API.G_RET_STS_ERROR ;
291 		FND_MSG_PUB.Count_And_Get
292                            (p_encoded => FND_API.G_FALSE,
293                             p_count   => x_msg_count,
294                             p_data    => x_msg_data);
295     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
296                 IF PG_DEBUG in ('Y', 'C') THEN
297                    arp_debug.debug('Earn_Revenue: ' || 'Unexpected EXCEPTION '||sqlerrm||
298                                ' at AR_RevenueAdjust_PUB.Earn_Revenue()+');
299                 END IF;
300 		ROLLBACK TO Earn_Revenue_PUB;
301 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
302 		FND_MSG_PUB.Count_And_Get
303                            (p_encoded => FND_API.G_FALSE,
304                             p_count   => x_msg_count,
305                             p_data    => x_msg_data);
306     WHEN OTHERS THEN
307                 IF PG_DEBUG in ('Y', 'C') THEN
308                    arp_debug.debug('Earn_Revenue: ' || 'Unexpected EXCEPTION '||sqlerrm||
312 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
309                                ' at AR_RevenueAdjust_PUB.Earn_Revenue()+');
310                 END IF;
311 		ROLLBACK TO Earn_Revenue_PUB;
313   		IF 	FND_MSG_PUB.Check_Msg_Level
314 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
315 		THEN
316         		FND_MSG_PUB.Add_Exc_Msg
317     	    		(	G_PKG_NAME  	    ,
318     	    			l_api_name
319 	    		);
320 		END IF;
321 		FND_MSG_PUB.Count_And_Get
322                            (p_encoded => FND_API.G_FALSE,
323                             p_count   => x_msg_count,
324                             p_data    => x_msg_data);
325   END Earn_Revenue;
326 
327 -----------------------------------------------------------------------
328 --	API name 	: Transfer_Sales_Credits
329 --	Type		: Public
330 --	Function	: Transfers revenue and/or non revenue sales credits
331 --                        between the specified salesreps. The associated
332 --                        earned revenue is transferred with revenue sales
333 --                        credits
334 --	Pre-reqs	: Sufficient earned revenue must exist for the salesrep
335 --                        from whom sales credits are being transferred.
336 --	Parameters	:
337 --	IN		: p_api_version        	  NUMBER       Required
338 --		 	  p_init_msg_list         VARCHAR2     Optional
339 --				Default = FND_API.G_FALSE
340 --			  p_commit                VARCHAR2     Optional
341 --				Default = FND_API.G_FALSE
342 --                        p_rev_adj_rec           Rev_Adj_Rec_Type  Optional
343 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
344 --                        x_msg_count             NUMBER
345 --                        x_msg_data              VARCHAR2(2000)
346 --                        x_adjustment_id         NUMBER
347 --                        x_adjustment_number     VARCHAR2
348 --
349 --	Version	: Current version	2.0
350 --				Initial version created 31-MAY-2000
351 --			  Initial version 	1.0
352 --
353 --	Notes		:
354 --
355 -----------------------------------------------------------------------
356   PROCEDURE Transfer_Sales_Credits
357   (   p_api_version           IN   NUMBER
358      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
359      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
360      ,x_return_status         OUT NOCOPY  VARCHAR2
361      ,x_msg_count             OUT NOCOPY  NUMBER
362      ,x_msg_data              OUT NOCOPY  VARCHAR2
363      ,p_rev_adj_rec           IN   AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type
364      ,p_org_id                IN  NUMBER DEFAULT NULL
365      ,x_adjustment_id         OUT NOCOPY  NUMBER
366      ,x_adjustment_number     OUT NOCOPY  VARCHAR2)
367   IS
368     l_api_name            CONSTANT VARCHAR2(30) := 'Transfer_Sales_Credits';
369     l_api_version         CONSTANT NUMBER 	:= 2.0;
370     l_org_return_status VARCHAR2(1);
371     l_org_id                           NUMBER;
372 
373   BEGIN
374     IF PG_DEBUG in ('Y', 'C') THEN
375        arp_debug.debug('AR_RevenueAdjust_PUB.Transfer_Sales_Credits()+');
376     END IF;
377     -- Standard Start of API savepoint
378     SAVEPOINT	Transfer_Sales_Credits_PUB;
379     -- Standard call to check for call compatibility.
380     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
381         	    	    	    	 	p_api_version        	,
382    	       	    	 			l_api_name 	    	,
383 		    	    	    	    	G_PKG_NAME )
384     THEN
385       IF PG_DEBUG in ('Y', 'C') THEN
386          arp_debug.debug('Transfer_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
387                      ' at AR_RevenueAdjust_PUB.Transfer_Sales_Credits()+');
388       END IF;
389       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
390     END IF;
391     -- Initialize message list if p_init_msg_list is set to TRUE.
392     IF FND_API.to_Boolean( p_init_msg_list )
393     THEN
394       FND_MSG_PUB.initialize;
395     END IF;
396     --  Initialize API return status to success
397     x_return_status := FND_API.G_RET_STS_SUCCESS;
398 
399 
400 
401 /* SSA change */
402        l_org_id            := p_org_id;
403        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
404        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
405                                                 p_return_status =>l_org_return_status);
406  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
407        x_return_status := FND_API.G_RET_STS_ERROR;
408  ELSE
409     -- Introduced for the Sales Group Project.
410     -- ORASHID 11-AUG-2003
411     --
412     IF NOT group_compatible(p_rev_adj_rec) THEN
413       fnd_message.set_name('AR','AR_INCOMPATIBLE_CREDIT_TYPE');
414       fnd_msg_pub.add;
415       RAISE fnd_api.g_exc_error;
416     END IF;
417 
418     AR_Revenue_Adjustment_PVT.Transfer_Sales_Credits
419           (   p_api_version          => 2.0
420              ,p_init_msg_list        => p_init_msg_list
421              ,p_commit	             => p_commit
422              ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
423              ,x_return_status        => x_return_status
424              ,x_msg_count            => x_msg_count
425              ,x_msg_data             => x_msg_data
426              ,p_rev_adj_rec          => p_rev_adj_rec
427              ,x_adjustment_id        => x_adjustment_id
428              ,x_adjustment_number    => x_adjustment_number);
429 
430     -- Standard check of p_commit.
431     IF FND_API.To_Boolean( p_commit )
432     THEN
433       COMMIT WORK;
434     END IF;
435  END IF;
436     -- Standard call to get message count and if count is 1, get message info.
437     FND_MSG_PUB.Count_And_Get
438                 (p_encoded => FND_API.G_FALSE,
439                  p_count   => x_msg_count,
443 		ROLLBACK TO Transfer_Sales_Credits_PUB;
440         	 p_data    => x_msg_data);
441   EXCEPTION
442     WHEN FND_API.G_EXC_ERROR THEN
444 		x_return_status := FND_API.G_RET_STS_ERROR ;
445 		FND_MSG_PUB.Count_And_Get
446                            (p_encoded => FND_API.G_FALSE,
447                             p_count   => x_msg_count,
448                             p_data    => x_msg_data);
449     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
450                 IF PG_DEBUG in ('Y', 'C') THEN
451                    arp_debug.debug('Transfer_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
452                     ' at AR_RevenueAdjust_PUB.Transfer_Sales_Credits()+');
453                 END IF;
454 		ROLLBACK TO Transfer_Sales_Credits_PUB;
455 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
456 		FND_MSG_PUB.Count_And_Get
457                            (p_encoded => FND_API.G_FALSE,
458                             p_count   => x_msg_count,
459                             p_data    => x_msg_data);
460     WHEN OTHERS THEN
461                 IF PG_DEBUG in ('Y', 'C') THEN
462                    arp_debug.debug('Transfer_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
463                      ' at AR_RevenueAdjust_PUB.Transfer_Sales_Credits()+');
464                 END IF;
465 		ROLLBACK TO Transfer_Sales_Credits_PUB;
466 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
467   		IF 	FND_MSG_PUB.Check_Msg_Level
468 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
469 		THEN
470         		FND_MSG_PUB.Add_Exc_Msg
471     	    		(	G_PKG_NAME  	    ,
472     	    			l_api_name
473 	    		);
474 		END IF;
475 		FND_MSG_PUB.Count_And_Get
476                            (p_encoded => FND_API.G_FALSE,
477                             p_count   => x_msg_count,
478                             p_data    => x_msg_data);
479 
480   END Transfer_Sales_Credits;
481 
482 -----------------------------------------------------------------------
483 --	API name 	: Add_Non_Revenue_Sales_Credits
484 --	Type		: Public
485 --	Function	: Adds non revenue sales credits to the specified
486 --                        salesrep subject to any maximum limit of revenue
487 --                        and non revenue sales credit per salesrep per line
488 --                        as defined in the sales credit percent limit in
489 --                        system options.
490 --	Pre-reqs	: None
491 --
492 --	Parameters	:
493 --	IN		: p_api_version        	  NUMBER       Required
494 --		 	  p_init_msg_list         VARCHAR2     Optional
495 --				Default = FND_API.G_FALSE
496 --			  p_commit                VARCHAR2     Optional
497 --				Default = FND_API.G_FALSE
498 --                        p_rev_adj_rec           Rev_Adj_Rec_Type  Optional
499 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
500 --                        x_msg_count             NUMBER
501 --                        x_msg_data              VARCHAR2(2000)
502 --                        x_adjustment_id         NUMBER
503 --                        x_adjustment_number     VARCHAR2
504 --
505 --	Version	: Current version	2.0
506 --				Initial version created 31-MAY-2000
507 --			  Initial version 	1.0
508 --
509 --	Notes		:
510 --
511   PROCEDURE Add_Non_Revenue_Sales_Credits
512   (   p_api_version           IN   NUMBER
513      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
514      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
515      ,x_return_status         OUT NOCOPY  VARCHAR2
516      ,x_msg_count             OUT NOCOPY  NUMBER
517      ,x_msg_data              OUT NOCOPY  VARCHAR2
518      ,p_rev_adj_rec           IN   AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type
519      ,p_org_id                IN  NUMBER DEFAULT NULL
520      ,x_adjustment_id         OUT NOCOPY  NUMBER
521      ,x_adjustment_number     OUT NOCOPY  VARCHAR2)
522   IS
523     l_api_name            CONSTANT VARCHAR2(30) :=
524                                                 'Add_Non_Revenue_Sales_Credits';
525     l_api_version         CONSTANT NUMBER 	:= 2.0;
526     l_org_return_status VARCHAR2(1);
527     l_org_id                           NUMBER;
528 
529   BEGIN
530 
531     IF PG_DEBUG in ('Y', 'C') THEN
532        arp_debug.debug('AR_RevenueAdjust_PUB.Add_Non_Revenue_Sales_Credits()+');
533     END IF;
534     -- Standard Start of API savepoint
535     SAVEPOINT Add_Non_Rev_Sales_Credits_PUB;
536     -- Standard call to check for call compatibility.
537     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
538         	    	    	    	 	p_api_version        	,
539    	       	    	 			l_api_name 	    	,
540 		    	    	    	    	G_PKG_NAME )
541     THEN
542       IF PG_DEBUG in ('Y', 'C') THEN
543          arp_debug.debug('Add_Non_Revenue_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
544               ' at AR_RevenueAdjust_PUB.Add_Non_Revenue_Sales_Credits()+');
545       END IF;
546       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
547     END IF;
548     -- Initialize message list if p_init_msg_list is set to TRUE.
549     IF FND_API.to_Boolean( p_init_msg_list )
550     THEN
551       FND_MSG_PUB.initialize;
552     END IF;
553     --  Initialize API return status to success
554     x_return_status := FND_API.G_RET_STS_SUCCESS;
555 
556 /* SSA change */
557        l_org_id            := p_org_id;
558        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
559        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
560                                                 p_return_status =>l_org_return_status);
561  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
562        x_return_status := FND_API.G_RET_STS_ERROR;
563  ELSE
564     -- Introduced for the Sales Group Project.
565     -- ORASHID 11-AUG-2003
566     --
567     IF NOT group_compatible(p_rev_adj_rec) THEN
571     END IF;
568       fnd_message.set_name('AR','AR_INCOMPATIBLE_CREDIT_TYPE');
569       fnd_msg_pub.add;
570       RAISE fnd_api.g_exc_error;
572 
573     AR_Revenue_Adjustment_PVT.Add_Non_Revenue_Sales_Credits
574           (   p_api_version          => 2.0
575              ,p_init_msg_list        => p_init_msg_list
576              ,p_commit	             => p_commit
577              ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
578              ,x_return_status        => x_return_status
579              ,x_msg_count            => x_msg_count
580              ,x_msg_data             => x_msg_data
581              ,p_rev_adj_rec          => p_rev_adj_rec
582              ,x_adjustment_id        => x_adjustment_id
583              ,x_adjustment_number    => x_adjustment_number);
584 
585     -- Standard check of p_commit.
586     IF FND_API.To_Boolean( p_commit )
587     THEN
588       COMMIT WORK;
589     END IF;
590  END IF;
591     -- Standard call to get message count and if count is 1, get message info.
592     FND_MSG_PUB.Count_And_Get
593                 (p_encoded => FND_API.G_FALSE,
594                  p_count   => x_msg_count,
595         	 p_data    => x_msg_data);
596   EXCEPTION
597     WHEN FND_API.G_EXC_ERROR THEN
598 		ROLLBACK TO Add_Non_Rev_Sales_Credits_PUB;
599 		x_return_status := FND_API.G_RET_STS_ERROR ;
600 		FND_MSG_PUB.Count_And_Get
601                            (p_encoded => FND_API.G_FALSE,
602                             p_count   => x_msg_count,
603                             p_data    => x_msg_data);
604     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
605                 IF PG_DEBUG in ('Y', 'C') THEN
606                    arp_debug.debug('Add_Non_Revenue_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
607               ' at AR_RevenueAdjust_PUB.Add_Non_Revenue_Sales_Credits()+');
608                 END IF;
609 		ROLLBACK TO Add_Non_Rev_Sales_Credits_PUB;
610 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
611 		FND_MSG_PUB.Count_And_Get
612                            (p_encoded => FND_API.G_FALSE,
613                             p_count   => x_msg_count,
614                             p_data    => x_msg_data);
615     WHEN OTHERS THEN
616                 IF PG_DEBUG in ('Y', 'C') THEN
617                    arp_debug.debug('Add_Non_Revenue_Sales_Credits: ' || 'Unexpected EXCEPTION '||sqlerrm||
618               ' at AR_RevenueAdjust_PUB.Add_Non_Revenue_Sales_Credits()+');
619                 END IF;
620 		ROLLBACK TO Add_Non_Rev_Sales_Credits_PUB;
621 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
622   		IF 	FND_MSG_PUB.Check_Msg_Level
623 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
624 		THEN
625         		FND_MSG_PUB.Add_Exc_Msg
626     	    		(	G_PKG_NAME  	    ,
627     	    			l_api_name
628 	    		);
629 		END IF;
630 		FND_MSG_PUB.Count_And_Get
631                            (p_encoded => FND_API.G_FALSE,
632                             p_count   => x_msg_count,
633                             p_data    => x_msg_data);
634    END Add_Non_Revenue_Sales_Credits;
635 
636 -----------------------------------------------------------------------
637 --	API name 	: Record_Customer_Acceptance
638 --	Type		: Public
639 --	Function	: Identifies customer_acceptance contingencies
640 --                        for the specified transaction or line and
641 --                        clears them.  Also recognizes revenue if
642 --                        the customer_acceptance contingency was the
643 --                        last issue for the line.
644 --	Pre-reqs	: None
645 --
646 --	Parameters	:
647 --	IN		: p_api_version        	  NUMBER       Required
648 --		 	  p_init_msg_list         VARCHAR2     Optional
649 --				Default = FND_API.G_FALSE
650 --			  p_commit                VARCHAR2     Optional
651 --				Default = FND_API.G_FALSE
652 --                        p_rev_adj_rec           Rev_Adj_Rec_Type  Optional
653 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
654 --                        x_msg_count             NUMBER
655 --                        x_msg_data              VARCHAR2(2000)
656 --
657 --	Version	: Current version	2.0
658 --		Initial version created 26-JUN-2006
659 --	        Initial version 	2.0
660 --
661 --	Notes		:
662 --
663   PROCEDURE Record_Customer_Acceptance
664   (   p_api_version           IN   NUMBER
665      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
666      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
667      ,x_return_status         OUT NOCOPY  VARCHAR2
668      ,x_msg_count             OUT NOCOPY  NUMBER
669      ,x_msg_data              OUT NOCOPY  VARCHAR2
670      ,p_rev_adj_rec           IN   AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type
671      ,p_org_id                IN  NUMBER DEFAULT NULL)
672   IS
673     l_api_name            CONSTANT VARCHAR2(30) :=
674                                                 'Record_Customer_Acceptance';
675     l_api_version         CONSTANT NUMBER 	:= 2.0;
676     l_org_return_status   VARCHAR2(1);
677     l_org_id              NUMBER;
678     li_desc_flexfield     ar_revenue_management_pvt.desc_flexfield;
679     lo_scenario           NUMBER;
680     lo_first_rev_adj_id   NUMBER;
681     lo_last_rev_adj_id    NUMBER;
682     l_scenario            VARCHAR2(128);
683   BEGIN
684 
685     IF PG_DEBUG in ('Y', 'C') THEN
686        arp_debug.debug('AR_RevenueAdjust_PUB.Record_Customer_Acceptance()+');
687     END IF;
688     -- Standard Start of API savepoint
689     SAVEPOINT Record_Customer_Acceptance_PUB;
690     -- Standard call to check for call compatibility.
691     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
692         	    	    	    	 	p_api_version        	,
693    	       	    	 			l_api_name 	    	,
694 		    	    	    	    	G_PKG_NAME )
695     THEN
699       END IF;
696       IF PG_DEBUG in ('Y', 'C') THEN
697          arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
698               ' at AR_RevenueAdjust_PUB.Record_Customer_Acceptance()+');
700       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
701     END IF;
702     -- Initialize message list if p_init_msg_list is set to TRUE.
703     IF FND_API.to_Boolean( p_init_msg_list )
704     THEN
705       FND_MSG_PUB.initialize;
706     END IF;
707     --  Initialize API return status to success
708     x_return_status := FND_API.G_RET_STS_SUCCESS;
709 
710 /* SSA change */
711        l_org_id            := p_org_id;
712        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
713        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
714                                                 p_return_status =>l_org_return_status);
715  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
716        x_return_status := FND_API.G_RET_STS_ERROR;
717  ELSE
718     /* Copy desc flexfield data */
719     li_desc_flexfield.attribute_category := p_rev_adj_rec.attribute_category;
720     li_desc_flexfield.attribute1 := p_rev_adj_rec.attribute1;
721     li_desc_flexfield.attribute2 := p_rev_adj_rec.attribute2;
722     li_desc_flexfield.attribute3 := p_rev_adj_rec.attribute3;
723     li_desc_flexfield.attribute4 := p_rev_adj_rec.attribute4;
724     li_desc_flexfield.attribute5 := p_rev_adj_rec.attribute5;
725     li_desc_flexfield.attribute6 := p_rev_adj_rec.attribute6;
726     li_desc_flexfield.attribute7 := p_rev_adj_rec.attribute7;
727     li_desc_flexfield.attribute8 := p_rev_adj_rec.attribute8;
728     li_desc_flexfield.attribute9 := p_rev_adj_rec.attribute9;
729     li_desc_flexfield.attribute10 := p_rev_adj_rec.attribute10;
730     li_desc_flexfield.attribute11 := p_rev_adj_rec.attribute11;
731     li_desc_flexfield.attribute12 := p_rev_adj_rec.attribute12;
732     li_desc_flexfield.attribute13 := p_rev_adj_rec.attribute13;
733     li_desc_flexfield.attribute14 := p_rev_adj_rec.attribute14;
734     li_desc_flexfield.attribute15 := p_rev_adj_rec.attribute15;
735 
736     /* Call internal procedure to record acceptance */
737     AR_Revenue_Adjustment_PVT.Record_Acceptance
738           (   p_customer_trx_id      => p_rev_adj_rec.customer_trx_id
739              ,p_category_id          => p_rev_adj_rec.from_category_id
740              ,p_inventory_item_id    => p_rev_adj_rec.from_inventory_item_id
741              ,p_customer_trx_line_id => p_rev_adj_rec.from_cust_trx_line_id
742              ,p_gl_date              => p_rev_adj_rec.gl_date
743              ,p_comments             => p_rev_adj_rec.comments
744              ,p_ram_desc_flexfield   => li_desc_flexfield
745              ,x_scenario             => lo_scenario
746              ,x_first_rev_adj_id     => lo_first_rev_adj_id
747              ,x_last_rev_adj_id      => lo_last_rev_adj_id
748              ,x_return_status        => x_return_status
749              ,x_msg_count            => x_msg_count
750              ,x_msg_data             => x_msg_data);
751 
752     /* Document results in debug log */
753     IF PG_DEBUG in ('Y', 'C') THEN
754          IF lo_scenario = 0
755          THEN
756             l_scenario := 'Transaction revenue NOT recognized';
757          ELSIF lo_scenario = 1
758          THEN
759             l_scenario := 'Transaction revenue PARTIALLY recognized';
760          ELSIF lo_scenario = 2
761          THEN
762             l_scenario := 'Transaction revenue FULLY recognized';
763          ELSE
764             l_scenario := 'UNKNOWN RESULT';
765          END IF;
766 
767          arp_debug.debug('first rev_adj_id = ' || lo_first_rev_adj_id);
768          arp_debug.debug('last rev_adj_id  = ' || lo_last_rev_adj_id);
769          arp_debug.debug('result (scenario)= ' || l_scenario);
770     END IF;
771 
772     -- Standard check of p_commit.
773     IF FND_API.To_Boolean( p_commit )
774     THEN
775       COMMIT WORK;
776     END IF;
777  END IF;
778     -- Standard call to get message count and if count is 1, get message info.
779     FND_MSG_PUB.Count_And_Get
780                 (p_encoded => FND_API.G_FALSE,
781                  p_count   => x_msg_count,
782         	 p_data    => x_msg_data);
783   EXCEPTION
784     WHEN FND_API.G_EXC_ERROR THEN
785 		ROLLBACK TO Add_Non_Rev_Sales_Credits_PUB;
786 		x_return_status := FND_API.G_RET_STS_ERROR ;
787 		FND_MSG_PUB.Count_And_Get
788                            (p_encoded => FND_API.G_FALSE,
789                             p_count   => x_msg_count,
790                             p_data    => x_msg_data);
791     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
792                 IF PG_DEBUG in ('Y', 'C') THEN
793                    arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
794               ' at AR_RevenueAdjust_PUB.Record_Customer_Acceptance()+');
795                 END IF;
796 		ROLLBACK TO Record_Customer_Acceptance_PUB;
797 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
798 		FND_MSG_PUB.Count_And_Get
799                            (p_encoded => FND_API.G_FALSE,
800                             p_count   => x_msg_count,
801                             p_data    => x_msg_data);
802     WHEN OTHERS THEN
803                 IF PG_DEBUG in ('Y', 'C') THEN
804                    arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
805               ' at AR_RevenueAdjust_PUB.Record_Customer_Acceptance()+');
806                 END IF;
807 		ROLLBACK TO Record_Customer_Acceptance_PUB;
808 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
809   		IF 	FND_MSG_PUB.Check_Msg_Level
810 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
811 		THEN
812         		FND_MSG_PUB.Add_Exc_Msg
813     	    		(	G_PKG_NAME  	    ,
814     	    			l_api_name
815 	    		);
816 		END IF;
817 		FND_MSG_PUB.Count_And_Get
818                            (p_encoded => FND_API.G_FALSE,
822 
819                             p_count   => x_msg_count,
820                             p_data    => x_msg_data);
821    END Record_Customer_Acceptance;
823 -----------------------------------------------------------------------
824 --	API name 	: Update_Contingency_Expirations
825 --	Type		: Public
826 --	Function	: Update contingency expiration_date(s)
827 --                        for a transaction or line.
828 --                        Also recognizes revenue if
829 --                        the contingency has expired.
830 --	Pre-reqs	: None
831 --
832 --	Parameters	:
833 --	IN		: p_api_version        	  NUMBER       Required
834 --		 	  p_init_msg_list         VARCHAR2     Optional
835 --				Default = FND_API.G_FALSE
836 --			  p_commit                VARCHAR2     Optional
837 --				Default = FND_API.G_FALSE
838 --                        p_customer_trx_id       NUMBER       Required
839 --                        p_customer_trx_line_id  NUMBER       Optional
840 --                        p_contingency_id        NUMBER       Optional
841 --                        p_expiration_date       DATE         Optional
842 --                        p_expiration_days       NUMBER       Optional
843 -- NOTE:  Must pass either date or days
844 --	OUT NOCOPY		: x_return_status         VARCHAR2(1)
845 --                        x_msg_count             NUMBER
846 --                        x_msg_data              VARCHAR2(2000)
847 --
848 --	Version	: Current version	2.0
849 --		Initial version created 26-JUN-2006
850 --	        Initial version 	2.0
851 --
852 --	Notes		:
853 /*    27-AUG-2008      MRAYMOND  7311553   added line_id to
854                                      revenue_synchronizer call.
855 */
856   PROCEDURE Update_Contingency_Expirations
857   (   p_api_version           IN   NUMBER
858      ,p_init_msg_list         IN   VARCHAR2 DEFAULT FND_API.G_FALSE
859      ,p_commit	              IN   VARCHAR2 DEFAULT FND_API.G_FALSE
860      ,x_return_status         OUT NOCOPY  VARCHAR2
861      ,x_msg_count             OUT NOCOPY  NUMBER
862      ,x_msg_data              OUT NOCOPY  VARCHAR2
863      ,p_org_id                IN  NUMBER DEFAULT NULL
864      ,p_customer_trx_id       IN  ra_customer_trx.customer_trx_id%type
865      ,p_customer_trx_line_id  IN  ra_customer_trx_lines.customer_trx_line_id%type DEFAULT NULL
866      ,p_contingency_id        IN  ar_line_conts.contingency_id%type DEFAULT NULL
867      ,p_expiration_date       IN  ar_line_conts.expiration_date%type DEFAULT NULL
868      ,p_expiration_days       IN  ar_line_conts.expiration_days%type DEFAULT NULL)
869   IS
870     l_api_name            CONSTANT VARCHAR2(30) :=
871                                                 'Update_Contingency_Expirations';
872     l_api_version         CONSTANT NUMBER 	:= 2.0;
873     l_org_return_status   VARCHAR2(1);
874     l_org_id              NUMBER;
875     lo_scenario           NUMBER;
876     lo_first_adj_number   NUMBER;
877     lo_last_adj_number    NUMBER;
878     l_scenario            VARCHAR2(128);
879     l_expiration_date     DATE;
880     l_expiration_days     NUMBER;
881 
882     CURSOR c_conts IS
883        select lc.customer_trx_line_id  customer_trx_line_id,
884               lc.contingency_id        contingency_id,
885               NVL(lc.expiration_event_date,
886                 decode(dr.expiration_event_code,
887                   'TRANSACTION_DATE', trunc(t.trx_date),
888                   'SHIP_CONFIRM_DATE', trunc(t.ship_date_actual), NULL))
889               expiration_event_date
890        from   ra_customer_trx t,
891               ra_customer_trx_lines tl,
892               ar_line_conts lc,
893               ar_deferral_reasons dr
894        where  t.customer_trx_id = p_customer_trx_id
895        and    t.customer_trx_id = tl.customer_trx_id
896        and    tl.customer_trx_line_id = nvl(p_customer_trx_line_id,
897                                             tl.customer_trx_line_id)
898        and    tl.line_type = 'LINE'
899        and    tl.customer_trx_line_id = lc.customer_trx_line_id
900        and    lc.contingency_id = nvl(p_contingency_id, lc.contingency_id)
901        and    lc.contingency_id = dr.contingency_id
902        and    lc.completed_flag = 'N'
903        and    dr.revrec_event_code = 'CONTINGENCY_EXPIRATION';
904 
905   BEGIN
906 
907     IF PG_DEBUG in ('Y', 'C') THEN
908        arp_debug.debug('AR_RevenueAdjust_PUB.Update_Contingency_Expirations()+');
909     END IF;
910     -- Standard Start of API savepoint
911     SAVEPOINT Update_Contingency_Expires_PUB;
912     -- Standard call to check for call compatibility.
913     IF NOT FND_API.Compatible_API_Call ( 	l_api_version        	,
914         	    	    	    	 	p_api_version        	,
915    	       	    	 			l_api_name 	    	,
916 		    	    	    	    	G_PKG_NAME )
917     THEN
918       IF PG_DEBUG in ('Y', 'C') THEN
919          arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
920               ' at AR_RevenueAdjust_PUB.Update_Contingency_Expirations()+');
921       END IF;
922       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
923     END IF;
924     -- Initialize message list if p_init_msg_list is set to TRUE.
925     IF FND_API.to_Boolean( p_init_msg_list )
926     THEN
927       FND_MSG_PUB.initialize;
928     END IF;
929     --  Initialize API return status to success
930     x_return_status := FND_API.G_RET_STS_SUCCESS;
931 
932 /* SSA change */
933        l_org_id            := p_org_id;
934        l_org_return_status := FND_API.G_RET_STS_SUCCESS;
935        ar_mo_cache_utils.set_org_context_in_api(p_org_id =>l_org_id,
936                                                 p_return_status =>l_org_return_status);
937  IF l_org_return_status <> FND_API.G_RET_STS_SUCCESS THEN
938        x_return_status := FND_API.G_RET_STS_ERROR;
939  ELSE
940     /* Make sure we have either an expiration_date or
944     THEN
941         an expiration_days passed in */
942     IF  p_expiration_days IS NULL and
943         p_expiration_date IS NULL
945        x_return_status := FND_API.G_RET_STS_ERROR;
946       fnd_message.set_name('AR','AR_RVMG_EXPIR_DATE_CONFL');
947       fnd_msg_pub.add;
948       RAISE fnd_api.g_exc_error;
949     END IF;
950 
951     /* Loop thru eligible contingencies and update */
952     FOR cont IN c_conts LOOP
953 
954       /* Determine new expiration date */
955       IF p_expiration_date IS NOT NULL
956       THEN
957          l_expiration_date := TRUNC(p_expiration_date);
958          l_expiration_days := l_expiration_date - cont.expiration_event_date;
959       ELSE
960          /* days */
961          l_expiration_days := p_expiration_days;
962          l_expiration_date := TRUNC(cont.expiration_event_date +
963                                       l_expiration_days);
964       END IF;
965 
966       IF PG_DEBUG IN ('Y', 'C')
967       THEN
968          arp_debug.debug('updating line:' || cont.customer_trx_line_id ||
969                          '  cont_id:' || cont.contingency_id ||
970                          '  expiration_date:' || l_expiration_date);
971       END IF;
972 
973       ar_revenue_management_pvt.update_line_conts(
974 	 p_customer_trx_line_id  => cont.customer_trx_line_id
975 	,p_contingency_id	 => cont.contingency_id
976 	,p_expiration_date	 => l_expiration_date
977 	,p_expiration_event_date => cont.expiration_event_date
978 	,p_expiration_days	 => l_expiration_days
979 	,p_completed_flag	 => NULL
980 	,p_reason_removal_date	 => NULL);
981 
982     END LOOP;
983 
984     /* Now synch up the revenue for any expired contingencies */
985     ar_revenue_management_pvt.revenue_synchronizer(
986               p_mode                 => 3
987             , p_customer_trx_id      => p_customer_trx_id
988             , p_customer_trx_line_id => p_customer_trx_line_id
989             , p_gl_date              => NULL
990             , p_comments             => NULL
991             , p_ram_desc_flexfield   => NULL
992             , x_scenario 		=> lo_scenario
993             , x_first_adjustment_number => lo_first_adj_number
994             , x_last_adjustment_number  => lo_last_adj_number
995             , x_return_status           => x_return_status
996             , x_msg_count               => x_msg_count
997             , x_msg_data                => x_msg_data);
998 
999     /* Document results in debug log */
1000     IF PG_DEBUG in ('Y', 'C') THEN
1001          IF lo_scenario = 0
1002          THEN
1003             l_scenario := 'Transaction revenue NOT recognized';
1004          ELSIF lo_scenario = 1
1005          THEN
1006             l_scenario := 'Transaction revenue PARTIALLY recognized';
1007          ELSIF lo_scenario = 2
1008          THEN
1009             l_scenario := 'Transaction revenue FULLY recognized';
1010          ELSE
1011             l_scenario := 'UNKNOWN RESULT';
1012          END IF;
1013 
1014          arp_debug.debug('first rev_adj_id = ' || lo_first_adj_number);
1015          arp_debug.debug('last rev_adj_id  = ' || lo_last_adj_number);
1016          arp_debug.debug('result (scenario)= ' || l_scenario);
1017     END IF;
1018 
1019     -- Standard check of p_commit.
1020     IF FND_API.To_Boolean( p_commit )
1021     THEN
1022       COMMIT WORK;
1023     END IF;
1024  END IF;
1025     -- Standard call to get message count and if count is 1, get message info.
1026     FND_MSG_PUB.Count_And_Get
1027                 (p_encoded => FND_API.G_FALSE,
1028                  p_count   => x_msg_count,
1029         	 p_data    => x_msg_data);
1030   EXCEPTION
1031     WHEN FND_API.G_EXC_ERROR THEN
1032 		ROLLBACK TO Add_Non_Rev_Sales_Credits_PUB;
1033 		x_return_status := FND_API.G_RET_STS_ERROR ;
1034 		FND_MSG_PUB.Count_And_Get
1035                            (p_encoded => FND_API.G_FALSE,
1036                             p_count   => x_msg_count,
1037                             p_data    => x_msg_data);
1038     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1039                 IF PG_DEBUG in ('Y', 'C') THEN
1040                    arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
1041               ' at AR_RevenueAdjust_PUB.Update_Contingency_Expirations()');
1042                 END IF;
1043 		ROLLBACK TO Record_Customer_Acceptance_PUB;
1044 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1045 		FND_MSG_PUB.Count_And_Get
1046                            (p_encoded => FND_API.G_FALSE,
1047                             p_count   => x_msg_count,
1048                             p_data    => x_msg_data);
1049     WHEN OTHERS THEN
1050                 IF PG_DEBUG in ('Y', 'C') THEN
1051                    arp_debug.debug('Unexpected EXCEPTION '||sqlerrm||
1052               ' at AR_RevenueAdjust_PUB.Update_Contingency_Expirations()');
1053                 END IF;
1054 		ROLLBACK TO Record_Customer_Acceptance_PUB;
1055 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1056   		IF 	FND_MSG_PUB.Check_Msg_Level
1057 			(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1058 		THEN
1059         		FND_MSG_PUB.Add_Exc_Msg
1060     	    		(	G_PKG_NAME  	    ,
1061     	    			l_api_name
1062 	    		);
1063 		END IF;
1064 		FND_MSG_PUB.Count_And_Get
1065                            (p_encoded => FND_API.G_FALSE,
1066                             p_count   => x_msg_count,
1067                             p_data    => x_msg_data);
1068    END Update_Contingency_Expirations;
1069 
1070 END AR_RevenueAdjust_PUB;