DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_COLL_IND

Source


1 PACKAGE BODY IEX_COLL_IND AS
2 /* $Header: iexvmtib.pls 120.10.12000000.3 2007/05/31 09:48:02 gnramasa ship $ */
3 /*-------------------------------------------------------------------------+
4  | PUBLIC FUNCTION                                                         |
5  |                                                                         |
6  |    GET_AVG_DAYS_LATE                                                    |
7  |                                                                         |
8  | DESCRIPTION                                                             |
9  |    This function will compute for average days late                     |
10  | REQUIRES                                                                |
11  |                                                                         |
12  | OPTIONAL                                                                |
13  |                                                                         |
14  | RETURNS                                                                 |
15  |    Average Days Late                                                    |
16  |                                                                         |
17  | NOTES                                                                   |
18  |                                                                         |
19  | EXAMPLE                                                                 |
20  |                                                                         |
21  | MODIFICATION HISTORY                                                    |
22  |                                                                         |
23  +-------------------------------------------------------------------------*/
24 
25 FUNCTION GET_AVG_DAYS_LATE(p_party_id IN NUMBER,
26                      p_cust_account_id IN NUMBER,
27                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
28 
29   l_avg_days_late   NUMBER;
30   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
31   l_num_val NUMBER;
32   l_char_val VARCHAR2(1000);
33   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
34 
35 BEGIN
36 
37   IF p_party_id IS NOT NULL THEN
38     SELECT sum(TRUNC(sysdate) - ps.due_date)
39           / COUNT(1)
40       INTO   l_avg_days_late
41       FROM   ar_payment_schedules ps, hz_cust_accounts ca
42       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
43       AND    ps.class in ('INV','DEP','DM','CB')
44       AND    ps.gl_date_closed > TRUNC(sysdate)
45       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
46       AND    ps.status = 'OP'
47       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
48       AND    ps.due_date       < TRUNC(sysdate)
49       AND    ps.payment_schedule_id <> -1
50       AND    ca.cust_account_id = ps.customer_id
51       AND    ca.party_id = p_party_id;
52   ELSIF p_cust_account_id IS NOT NULL THEN
53     SELECT sum(TRUNC(sysdate) - ps.due_date)
54           / COUNT(1)
55       INTO   l_avg_days_late
56       FROM   ar_payment_schedules ps
57       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
58       AND    ps.class in ('INV','DEP','DM','CB')
59       AND    ps.gl_date_closed > TRUNC(sysdate)
60       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
61       AND    ps.status = 'OP'
62       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
63       AND    ps.due_date       < TRUNC(sysdate)
64       AND    ps.payment_schedule_id <> -1
65       AND    ps.customer_id = p_cust_account_id;
66   ELSIF p_customer_site_use_id IS NOT NULL THEN
67     SELECT sum(TRUNC(sysdate) - ps.due_date)
68           / COUNT(1)
69       INTO   l_avg_days_late
70       FROM   ar_payment_schedules ps
71       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
72       AND    ps.class in ('INV','DEP','DM','CB')
73       AND    ps.gl_date_closed > TRUNC(sysdate)
74       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
75       AND    ps.status = 'OP'
76       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
77       AND    ps.due_date       < TRUNC(sysdate)
78       AND    ps.payment_schedule_id <> -1
79       AND    ps.customer_site_use_id = p_customer_site_use_id;
80   END IF;
81 
82   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
83   -- RETURN  TO_CHAR(TRUNC(NVL(l_avg_days_late,0)));
84 
85   l_num_val :=  TRUNC(NVL(l_avg_days_late,0));
86   l_char_val := RTRIM(TO_CHAR(l_num_val));
87 
88   RETURN l_char_val;
89   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
90 
91 EXCEPTION
92         WHEN NO_DATA_FOUND THEN RETURN(TO_CHAR(0));
93 
94 END GET_AVG_DAYS_LATE;
95 
96 
97 /*-------------------------------------------------------------------------+
98  | PUBLIC FUNCTION                                                         |
99  |                                                                         |
100  |    GET_WTD_DAYS_LATE                                                    |
101  |                                                                         |
102  | DESCRIPTION                                                             |
103  |    This function will compute for weighted average                      |
104  |    days late                                                            |
105  |    Added calls to GET_ADJ_TOTAL and GET_APPS_TOTAL                      |
106  | REQUIRES                                                                |
107  |                                                                         |
108  | OPTIONAL                                                                |
109  |                                                                         |
110  | RETURNS                                                                 |
111  |    Weighted Average Days Late                                           |
112  |                                                                         |
113  | NOTES                                                                   |
114  |                                                                         |
115  | EXAMPLE                                                                 |
116  |                                                                         |
117  | MODIFICATION HISTORY                                                    |
118  |                                                                         |
119  +-------------------------------------------------------------------------*/
120 
121 FUNCTION GET_WTD_DAYS_LATE(p_party_id IN NUMBER,
122                      p_cust_account_id IN NUMBER,
123                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
124 
125   l_wtd_days_late   NUMBER;
126   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
127   l_num_val NUMBER;
128   l_char_val VARCHAR2(1000);
129   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
130 
131 BEGIN
132 
133   IF p_party_id IS NOT NULL THEN
134     SELECT sum
135              (
136                (
137                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
138                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
139                  nvl(ps.acctd_amount_due_remaining, 0)
140                ) *
141                (TRUNC(sysdate) - ps.due_date)
142              )  /
143              sum (
144                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
145                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
146                nvl(ps.acctd_amount_due_remaining, 0)
147              )
148       INTO   l_wtd_days_late
149       FROM   ar_payment_schedules ps, hz_cust_accounts ca
150       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
151       AND    ps.class in ('INV','DEP','DM','CB')
152       -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
153       --AND    ps.gl_date_closed > TRUNC(sysdate)
154       --AND    ps.due_date       < TRUNC(sysdate)
155       -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
156       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
157       AND    ps.status = 'OP'
158       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
159       AND    ps.payment_schedule_id <> -1
160       AND    ps.customer_id = ca.cust_account_id
161       AND    ca.party_id = p_party_id;
162   ELSIF p_cust_account_id IS NOT NULL THEN
163     SELECT sum
164              (
165                (
166                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
167                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
168                  nvl(ps.acctd_amount_due_remaining, 0)
169                ) *
170                (TRUNC(sysdate) - ps.due_date)
171              )  /
172              sum (
173                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
174                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
175                nvl(ps.acctd_amount_due_remaining, 0)
176              )
177       INTO   l_wtd_days_late
178       FROM   ar_payment_schedules 	ps
179       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
180       AND    ps.class in ('INV','DEP','DM','CB')
181       -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
182       -- AND    ps.gl_date_closed > TRUNC(sysdate)
183       -- AND    ps.due_date       < TRUNC(sysdate)
184       -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
185       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
186       AND    ps.status = 'OP'
187       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
188       AND    ps.payment_schedule_id <> -1
189       AND    ps.customer_id = p_cust_account_id;
190   ELSIF p_customer_site_use_id IS NOT NULL THEN
191     SELECT sum
192              (
193                (
194                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
195                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
196                  nvl(ps.acctd_amount_due_remaining, 0)
197                ) *
198                (TRUNC(sysdate) - ps.due_date)
199              )  /
200              sum (
201                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
202                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
203                nvl(ps.acctd_amount_due_remaining, 0)
204              )
205       INTO   l_wtd_days_late
206       FROM   ar_payment_schedules 	ps
207       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
208       AND    ps.class in ('INV','DEP','DM','CB')
209       -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
210       -- AND    ps.gl_date_closed > TRUNC(sysdate)
211       -- AND    ps.due_date       < TRUNC(sysdate)
212       -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
213       -- Begin fix bug #4949609-JYPARK-2/15/2006-add condition for performance
214       AND    ps.status = 'OP'
215       -- End fix bug #4949609-JYPARK-2/15/2006-add condition for performance
216       AND    ps.payment_schedule_id <> -1
217       AND    ps.customer_site_use_id = p_customer_site_use_id;
218   END IF;
219 
220   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
221   --RETURN  TO_CHAR(TRUNC(NVL(l_wtd_days_late,0)));
222   l_num_val :=  TRUNC(NVL(l_wtd_days_late,0));
223   l_char_val := RTRIM(TO_CHAR(l_num_val));
224   RETURN l_char_val;
225   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
226 
227 EXCEPTION
228   WHEN NO_DATA_FOUND THEN RETURN(TO_CHAR(0));
229 END GET_WTD_DAYS_LATE;
230 
231 /*-------------------------------------------------------------------------+
232  | PUBLIC FUNCTION                                                         |
233  |                                                                         |
234  |    GET_WTD_DAYS_PAID                                                    |
235  |                                                                         |
236  | DESCRIPTION                                                             |
237  |    This function will compute for weighted average                      |
238  |    days paid                                                            |
239  | REQUIRES                                                                |
240  |                                                                         |
241  | OPTIONAL                                                                |
242  |                                                                         |
243  | RETURNS                                                                 |
244  |    Weighted Average Days Paid                                           |
245  |                                                                         |
246  | NOTES                                                                   |
247  |                                                                         |
248  | EXAMPLE                                                                 |
249  |                                                                         |
250  | MODIFICATION HISTORY                                                    |
251  |                                                                         |
252  +-------------------------------------------------------------------------*/
253 
254 FUNCTION GET_WTD_DAYS_PAID(p_party_id IN NUMBER,
255                      p_cust_account_id IN NUMBER,
256                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
257 
258   l_wtd_days_paid   NUMBER;
259   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
260   l_num_val NUMBER;
261   l_char_val VARCHAR2(1000);
262   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
263 
264 BEGIN
265 
266   IF p_party_id IS NOT NULL THEN
267     SELECT ROUND(SUM((ra.apply_date - ps.trx_date) * ra.amount_applied)
268                 / SUM(ra.amount_applied)
272            ar_payment_schedules ps,
269               , 0) WEIGHTED_AVG_DAYS_PAID
270       INTO l_wtd_days_paid
271       FROM ar_receivable_applications ra,
273            hz_cust_accounts ca
274      WHERE ps.customer_id = ca.cust_account_id
275        AND ca.party_id = p_party_id
276        AND ra.status = 'APP'
277        AND ps.payment_schedule_id = ra.applied_payment_schedule_id
278        AND ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
279        AND ps.class in ('INV','DEP','DM','CB')
280        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
281        -- AND ps.gl_date_closed > TRUNC(sysdate)
282        -- AND ps.due_date       < TRUNC(sysdate)
283        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
284       -- Begin fix bug #4949604-JYPARK-2/15/2006-add condition for performance
285       AND    ps.status = 'CL'
286       -- End fix bug #4949604-JYPARK-2/15/2006-add condition for performance
287        AND ps.payment_schedule_id <> -1;
288   ELSIF p_cust_account_id IS NOT NULL THEN
289     SELECT ROUND(SUM((ra.apply_date - ps.trx_date) * ra.amount_applied)
290                 / SUM(ra.amount_applied)
291               , 0) WEIGHTED_AVG_DAYS_PAID
292       INTO l_wtd_days_paid
293       FROM ar_receivable_applications ra,
294            ar_payment_schedules ps
295      WHERE ps.customer_id = p_cust_account_id
296        AND ra.status = 'APP'
297        AND ps.payment_schedule_id = ra.applied_payment_schedule_id
298        AND ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
299        AND ps.class in ('INV','DEP','DM','CB')
300        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
301        -- AND ps.gl_date_closed > TRUNC(sysdate)
302        -- AND ps.due_date       < TRUNC(sysdate)
303        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
304       -- Begin fix bug #4949604-JYPARK-2/15/2006-add condition for performance
305       AND    ps.status = 'CL'
306       -- End fix bug #4949604-JYPARK-2/15/2006-add condition for performance
307        AND ps.payment_schedule_id <> -1;
308   ELSIF p_customer_site_use_id IS NOT NULL THEN
309     SELECT ROUND(SUM((ra.apply_date - ps.trx_date) * ra.amount_applied)
310                 / SUM(ra.amount_applied)
311               , 0) WEIGHTED_AVG_DAYS_PAID
312       INTO l_wtd_days_paid
313       FROM ar_receivable_applications ra,
314            ar_payment_schedules ps
315      WHERE ps.customer_site_use_id = p_customer_site_use_id
316        AND ra.status = 'APP'
317        AND ps.payment_schedule_id = ra.applied_payment_schedule_id
318        AND ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
319        AND ps.class in ('INV','DEP','DM','CB')
320        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
321        -- AND ps.gl_date_closed > TRUNC(sysdate)
322        -- AND ps.due_date       < TRUNC(sysdate)
323        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
324       -- Begin fix bug #4949604-JYPARK-2/15/2006-add condition for performance
325       AND    ps.status = 'CL'
326       -- End fix bug #4949604-JYPARK-2/15/2006-add condition for performance
327        AND ps.payment_schedule_id <> -1;
328   END IF;
329 
330   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
331   --RETURN  TO_CHAR(TRUNC(NVL(l_wtd_days_paid, 0)));
332   l_num_val :=  TRUNC(NVL(l_wtd_days_paid, 0));
333   l_char_val := RTRIM(TO_CHAR(l_num_val));
334   RETURN l_char_val;
335   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
336 
337 EXCEPTION
338   WHEN NO_DATA_FOUND THEN RETURN(TO_CHAR(0));
339 END GET_WTD_DAYS_PAID;
340 
341 
342 /*-------------------------------------------------------------------------+
343  | PUBLIC FUNCTION                                                         |
344  |                                                                         |
345  |    GET_WTD_DAYS_TERMS                                                   |
346  |                                                                         |
347  | DESCRIPTION                                                             |
348  |    This function will compute for weighted average                      |
349  |    days terms                                                           |
350  | REQUIRES                                                                |
351  |                                                                         |
352  | OPTIONAL                                                                |
353  |                                                                         |
354  | RETURNS                                                                 |
355  |    Weighted Average Days Terms                                          |
356  |                                                                         |
357  | NOTES                                                                   |
358  |                                                                         |
359  | EXAMPLE                                                                 |
360  |                                                                         |
361  | MODIFICATION HISTORY                                                    |
362  |                                                                         |
363  +-------------------------------------------------------------------------*/
364 
365 FUNCTION GET_WTD_DAYS_TERMS(p_party_id IN NUMBER,
366                      p_cust_account_id IN NUMBER,
370   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
367                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
368 
369   l_wtd_days_terms   NUMBER;
371   l_num_val NUMBER;
372   l_char_val VARCHAR2(1000);
373   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
374 
375 BEGIN
376 
377   IF p_party_id IS NOT NULL THEN
378     SELECT sum
379              (
380                (
381                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
382                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
383                  nvl(ps.acctd_amount_due_remaining, 0)
384                ) *
385                (ps.due_date - ps.trx_date)
386              )  /
387              sum (
388                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
389                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
390                nvl(ps.acctd_amount_due_remaining, 0)
391              )
392       INTO   l_wtd_days_terms
393       FROM   ar_payment_schedules ps, hz_cust_accounts ca
394       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
395       AND    ps.class in ('INV','DEP','DM','CB')
396        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
397        -- AND ps.gl_date_closed > TRUNC(sysdate)
398        -- AND ps.due_date       < TRUNC(sysdate)
399        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
400       AND    ps.payment_schedule_id <> -1
401       AND    ps.customer_id = ca.cust_account_id
402       AND    ca.party_id = p_party_id;
403   ELSIF p_cust_account_id IS NOT NULL THEN
404     SELECT sum
405              (
406                (
407                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
408                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
409                  nvl(ps.acctd_amount_due_remaining, 0)
410                ) *
411                (ps.due_date - ps.trx_date)
412              )  /
413              sum (
414                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
415                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
416                nvl(ps.acctd_amount_due_remaining, 0)
417              )
418       INTO   l_wtd_days_terms
419       FROM   ar_payment_schedules 	ps
420       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
421       AND    ps.class in ('INV','DEP','DM','CB')
422        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
423        -- AND ps.gl_date_closed > TRUNC(sysdate)
424        -- AND ps.due_date       < TRUNC(sysdate)
425        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
426       AND    ps.payment_schedule_id <> -1
427       AND    ps.customer_id = p_cust_account_id;
428   ELSIF p_customer_site_use_id IS NOT NULL THEN
429     SELECT sum
430              (
431                (
432                  GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
433                  GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
434                  nvl(ps.acctd_amount_due_remaining, 0)
435                ) *
436                (ps.due_date - ps.trx_date)
437              )  /
438              sum (
439                GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
440                GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
441                nvl(ps.acctd_amount_due_remaining, 0)
442              )
443       INTO   l_wtd_days_terms
444       FROM   ar_payment_schedules 	ps
445       WHERE  ps.gl_date between TRUNC(add_months(sysdate, -12)) and  TRUNC(sysdate)
446       AND    ps.class in ('INV','DEP','DM','CB')
447        -- Begin fix bug #4917851-jypark-11/47/2005-remove invalid condition
448        -- AND ps.gl_date_closed > TRUNC(sysdate)
449        -- AND ps.due_date       < TRUNC(sysdate)
450        -- End fix bug #4917851-jypark-11/47/2005-remove invalid condition
451       AND    ps.payment_schedule_id <> -1
452       AND    ps.customer_site_use_id = p_customer_site_use_id;
453   END IF;
454 
455   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
456   --RETURN  TO_CHAR(TRUNC(NVL(l_wtd_days_terms, 0)));
457   l_num_val :=  TRUNC(NVL(l_wtd_days_terms, 0));
458   l_char_val := RTRIM(TO_CHAR(l_num_val));
459   RETURN l_char_val;
460   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
461 
462 EXCEPTION
463   WHEN NO_DATA_FOUND THEN RETURN(TO_CHAR(0));
464 END GET_WTD_DAYS_TERMS;
465 
466 FUNCTION GET_CEI(p_party_id IN NUMBER,
467                  p_cust_account_id IN NUMBER,
468                  p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
469   l_cei     NUMBER;
470   l_sales   NUMBER;
471   l_beg_ar  NUMBER;
472   l_end_ar  NUMBER;
473   l_curr_ar NUMBER;
474   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
475   l_num_val NUMBER;
476   l_char_val VARCHAR2(1000);
477   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
478 
479 BEGIN
480   /*-----------------------------------------------------------------------
481   CEI = ( Beginning Receivables + ( Credit Sales/ N*) - Ending Total Receivables) * 100
482        / (Beginning Receivables + ( Credit Sales/N*) - Ending Current Receivables)
483 
484    *N= Number of Months 	Can do this monthly, quarterly , and annually
485   */
486 
490   l_beg_ar   := COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(add_months(sysdate, -12)) - 1,
487   l_sales    := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
488                             p_party_id, p_cust_account_id, p_customer_site_use_id);
489 
491                             p_party_id, p_cust_account_id, p_customer_site_use_id);
492 
493   l_end_ar   := COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(sysdate),
494                             p_party_id, p_cust_account_id, p_customer_site_use_id);
495 
496   l_curr_ar  := comp_curr_rec(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(sysdate),
497                             p_party_id, p_cust_account_id, p_customer_site_use_id);
498 
499   l_cei      := (l_beg_ar + (l_sales / 12) - l_end_ar) * 100 / (l_beg_ar + (l_sales / 12) - l_curr_ar);
500 
501   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
502   --RETURN TO_CHAR(TRUNC(NVL(l_cei, 0)));
503   l_num_val :=  TRUNC(NVL(l_cei, 0));
504   l_char_val := RTRIM(TO_CHAR(l_num_val));
505   RETURN l_char_val;
506   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
507 
508 EXCEPTION
509   WHEN NO_DATA_FOUND THEN
510     RETURN(TO_CHAR(0));
511 END GET_CEI;
512 
513 FUNCTION GET_TRUE_DSO(p_party_id IN NUMBER,
514                      p_cust_account_id IN NUMBER,
515                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
516   l_sales NUMBER;
517   l_beg_ar NUMBER;
518   l_end_ar NUMBER;
519   l_dso NUMBER;
520   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
521   l_num_val NUMBER;
522   l_char_val VARCHAR2(1000);
523   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
524 
525 BEGIN
526 
527   /*-----------------------------------------------------------------------
528   DSO = ( Period Average Receivables / Average Sales per day)
529 
530     where tot outs rec = sum of all receivables less all receipts (use COMP_REM_REC)
531     avg sales per day = sum of all receivables (use COMP_TOT_REC) / days in period
532   -----------------------------------------------------------------------*/
533 
534   l_sales    := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
535                             p_party_id, p_cust_account_id, p_customer_site_use_id);
536 
537   l_beg_ar   := COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(add_months(sysdate, -12)) - 1,
538                             p_party_id, p_cust_account_id, p_customer_site_use_id);
539 
540   l_end_ar   := COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(sysdate),
541                             p_party_id, p_cust_account_id, p_customer_site_use_id);
542 
543    if ( nvl(l_sales,0) = 0 ) then
544      l_dso := 0;
545    else
546      l_dso := (((l_beg_ar + l_end_ar)/2)/l_sales)*(TRUNC(sysdate) - TRUNC(add_months(sysdate, -12)));
547    end if;
548 
549   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
550   --RETURN TO_CHAR(ROUND(nvl(l_dso,0), 0));
551   l_num_val := ROUND(nvl(l_dso,0), 0);
552   l_char_val := RTRIM(TO_CHAR(l_num_val));
553   RETURN l_char_val;
554   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
555 
556 END GET_TRUE_DSO;
557 
558 FUNCTION GET_CONV_DSO(p_party_id IN NUMBER,
559                      p_cust_account_id IN NUMBER,
560                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
561   l_conv_dso NUMBER;
562   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
563   l_num_val NUMBER;
564   l_char_val VARCHAR2(1000);
565   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
566 
567 BEGIN
568   IF p_party_id IS NOT NULL THEN
569     SELECT
570          ROUND(
571            ( (SUM( DECODE(PS.CLASS,
572                          'INV', 1,
573                          'DM',  1,
574                          'CB',  1,
575                          'DEP', 1,
576                          'BR',  1,
577                           0)
578                     * PS.ACCTD_AMOUNT_DUE_REMAINING
579                   ) * MAX(SP.CER_DSO_DAYS)
580               )
581               / DECODE(
582                      SUM( DECODE(PS.CLASS,
583                                 'INV', 1,
584                                 'DM',  1,
585                                 'DEP', 1,
586                                  0)
587                            * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
588                                     -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
589                                      0)) ,
590                      0, 1,
591                      SUM( DECODE(PS.CLASS,
592                                 'INV', 1,
593                                 'DM',  1,
594                                 'DEP', 1,
595                                  0)
596                           * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
597                                    -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
598                                    0) )
599                       )
600             ), 0)                                     /* DSO */
601     INTO l_conv_dso
602     FROM ar_system_parameters         sp,
606     AND cust_acct.party_id = p_party_id
603          hz_cust_accounts             cust_acct,
604          ar_payment_schedules         ps
605     WHERE ps.customer_id = cust_acct.cust_account_id
607     -- Begin fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
608     AND ps.status = 'OP'
609     -- End fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
610     AND NVL(ps.receipt_confirmed_flag,'Y') = 'Y';
611   ELSIF p_cust_account_id IS NOT NULL THEN
612     SELECT
613           ROUND(
614            ( (SUM( DECODE(PS.CLASS,
615                          'INV', 1,
616                          'DM',  1,
617                          'CB',  1,
618                          'DEP', 1,
619                          'BR',  1,
620                           0)
621                     * PS.ACCTD_AMOUNT_DUE_REMAINING
622                   ) * MAX(SP.CER_DSO_DAYS)
623               )
624               / DECODE(
625                      SUM( DECODE(PS.CLASS,
626                                 'INV', 1,
627                                 'DM',  1,
628                                 'DEP', 1,
629                                  0)
630                            * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
631                                     -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
632                                      0)) ,
633                      0, 1,
634                      SUM( DECODE(PS.CLASS,
635                                 'INV', 1,
636                                 'DM',  1,
637                                 'DEP', 1,
638                                  0)
639                           * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
640                                    -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
641                                    0) )
642                       )
643             ), 0)                                     /* DSO */
644     INTO l_conv_dso
645     FROM ar_system_parameters         sp,
646          ar_payment_schedules         ps
647     WHERE ps.customer_id = p_cust_account_id
648     -- Begin fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
649     AND ps.status = 'OP'
650     -- End fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
651     AND NVL(ps.receipt_confirmed_flag,'Y') = 'Y';
652 
653   ELSIF p_customer_site_use_id IS NOT NULL THEN
654     SELECT
655           ROUND(
656            ( (SUM( DECODE(PS.CLASS,
657                          'INV', 1,
658                          'DM',  1,
659                          'CB',  1,
660                          'DEP', 1,
661                          'BR',  1,
662                           0)
663                     * PS.ACCTD_AMOUNT_DUE_REMAINING
664                   ) * MAX(SP.CER_DSO_DAYS)
665               )
666               / DECODE(
667                      SUM( DECODE(PS.CLASS,
668                                 'INV', 1,
669                                 'DM',  1,
670                                 'DEP', 1,
671                                  0)
672                            * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
673                                     -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
674                                      0)) ,
675                      0, 1,
676                      SUM( DECODE(PS.CLASS,
677                                 'INV', 1,
678                                 'DM',  1,
679                                 'DEP', 1,
680                                  0)
681                           * DECODE(SIGN (TRUNC(SYSDATE) - PS.TRX_DATE - SP.CER_DSO_DAYS),
682                                    -1, (PS.AMOUNT_DUE_ORIGINAL  + NVL(PS.AMOUNT_ADJUSTED,0)) * NVL(PS.EXCHANGE_RATE, 1 ),
683                                    0) )
684                       )
685             ), 0)                                     /* DSO */
686     INTO l_conv_dso
687     FROM ar_system_parameters         sp,
688          ar_payment_schedules         ps
689     WHERE ps.customer_site_use_id = p_customer_site_use_id
690     -- Begin fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
691     AND ps.status = 'OP'
692     -- End fix bug #5261855-jypark-06/16/2006-add addtional condition for performance
693     AND NVL(ps.receipt_confirmed_flag,'Y') = 'Y';
694 
695   END IF;
696 
697   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
698   --RETURN TO_CHAR(ROUND(NVL(l_conv_dso, 0)));
699   l_num_val := ROUND(NVL(l_conv_dso, 0));
700   l_char_val := RTRIM(TO_CHAR(l_num_val));
701   RETURN l_char_val;
702   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
703 
704 
705 EXCEPTION
706   WHEN NO_DATA_FOUND THEN RETURN(TO_CHAR(0));
707 END GET_CONV_DSO;
708 
709 FUNCTION GET_NSF_STOP_PMT_COUNT(p_party_id IN NUMBER,
710                      p_cust_account_id IN NUMBER,
711                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
712   l_nsf_stop_payment_count NUMBER;
713   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
714   l_num_val NUMBER;
715   l_char_val VARCHAR2(1000);
716   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
717 
721     SELECT COUNT(cr.cash_receipt_id) NSF_STOP_PAYMENT_COUNT
718 BEGIN
719 
720   IF p_party_id IS NOT NULL THEN
722     INTO l_nsf_stop_payment_count
723     FROM  ar_cash_receipts cr,
724           ar_cash_receipt_history crh,
725           hz_cust_accounts ca
726     WHERE cr.cash_receipt_id = crh.cash_receipt_id
727       AND crh.current_record_flag = 'Y'
728       AND crh.status = 'REVERSED'
729 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
730 --      AND cr.status = 'REV'
731 --      AND cr.status = 'NSF' -- bug 5613019
732         AND cr.status in ('NSF','REV') -- bug 5613019
733 -- END fix bug #4483830--20050714-jypark-change query for NSF info
734       --AND cr.reversal_category = 'NSF'  -- big 5613019
735       AND cr.reversal_category in ('NSF','REV') -- bug 5613019
736       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
737       AND cr.pay_from_customer = ca.cust_account_id
738       AND ca.party_id = p_party_id;
739   ELSIF p_cust_account_id IS NOT NULL THEN
740     SELECT COUNT(cr.cash_receipt_id) NSF_STOP_PAYMENT_COUNT
741     INTO l_nsf_stop_payment_count
742     FROM  ar_cash_receipts cr,
743           ar_cash_receipt_history crh
744     WHERE cr.cash_receipt_id = crh.cash_receipt_id
745       AND crh.current_record_flag = 'Y'
746       AND crh.status = 'REVERSED'
747 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
748 --      AND cr.status = 'REV'
749 --      AND cr.status = 'NSF'  --bug 5613019
750         AND cr.status in ('NSF','REV') -- bug 5613019
751 -- END fix bug #4483830--20050714-jypark-change query for NSF info
752       --AND cr.reversal_category = 'NSF'  -- bug 5613019
753       and cr.reversal_category in ('NSF','REV') -- bug 5613019
754       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
755       AND cr.pay_from_customer = p_cust_account_id;
756   ELSIF p_customer_site_use_id IS NOT NULL THEN
757     SELECT COUNT(cr.cash_receipt_id) NSF_STOP_PAYMENT_COUNT
758     INTO l_nsf_stop_payment_count
759     FROM  ar_cash_receipts cr,
760           ar_cash_receipt_history crh
761     WHERE cr.cash_receipt_id = crh.cash_receipt_id
762       AND crh.current_record_flag = 'Y'
763       AND crh.status = 'REVERSED'
764 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
765 --      AND cr.status = 'REV'
766 --      AND cr.status = 'NSF'  --bug 5613019
767         and cr.status in ('NSF','REV') -- bug 5613019
768 -- END fix bug #4483830--20050714-jypark-change query for NSF info
769       -- AND cr.reversal_category = 'NSF'  -- bug 5613019
770       and cr.reversal_category in ('NSF','REV') -- bug 5613019
771       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
772       AND cr.customer_site_use_id = p_customer_site_use_id;
773   END IF;
774 
775   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
776   --RETURN TO_CHAR(TRUNC(nvl(l_nsf_stop_payment_count, 0)));
777   l_num_val := TRUNC(nvl(l_nsf_stop_payment_count, 0));
778   l_char_val := RTRIM(TO_CHAR(l_num_val));
779   RETURN l_char_val;
780   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
781 
782 EXCEPTION
783   WHEN NO_DATA_FOUND THEN RETURN(0);
784 END GET_NSF_STOP_PMT_COUNT;
785 
786 FUNCTION GET_NSF_STOP_PMT_AMOUNT(p_party_id IN NUMBER,
787                      p_cust_account_id IN NUMBER,
788                      p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
789   l_nsf_stop_payment_amount NUMBER;
790   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
791   l_num_val NUMBER;
792   l_char_val VARCHAR2(1000);
793   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
794 
795 BEGIN
796 
797   IF p_party_id IS NOT NULL THEN
798     SELECT SUM(cr.amount) NSF_STOP_PAYMENT_AMOUNT
799     INTO l_nsf_stop_payment_amount
800     FROM  ar_cash_receipts_all cr,
801           ar_cash_receipt_history_all crh,
802           hz_cust_accounts ca
803     WHERE cr.cash_receipt_id = crh.cash_receipt_id
804       AND crh.current_record_flag = 'Y'
805       AND crh.status = 'REVERSED'
806 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
807 --      AND cr.status = 'REV'
808 --      AND cr.status = 'NSF'  -- bug 5613019
809         and cr.status in ('NSF','REV') -- bug 5613019
810 -- END fix bug #4483830--20050714-jypark-change query for NSF info
811       -- AND cr.reversal_category = 'NSF' --bug 5613019
812       and cr.reversal_category in ('NSF','REV') -- bug 5613019
813       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
814       AND cr.pay_from_customer = ca.cust_account_id
815       AND ca.party_id = p_party_id;
816   ELSIF p_cust_account_id IS NOT NULL THEN
817     SELECT SUM(cr.amount) NSF_STOP_PAYMENT_AMOUNT
818     INTO l_nsf_stop_payment_amount
819     FROM  ar_cash_receipts_all cr,
820           ar_cash_receipt_history_all crh
821     WHERE cr.cash_receipt_id = crh.cash_receipt_id
822       AND crh.current_record_flag = 'Y'
823       AND crh.status = 'REVERSED'
824 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
825 --      AND cr.status = 'REV'
826 --      AND cr.status = 'NSF'  -- bug 5613019
827         and cr.status in ('NSF','REV') -- bug 5613019
828 -- END fix bug #4483830--20050714-jypark-change query for NSF info
829       -- AND cr.reversal_category = 'NSF' --bug 5613019
830       and cr.reversal_category in ('NSF','REV') -- bug 5613019
834     SELECT SUM(cr.amount) NSF_STOP_PAYMENT_AMOUNT
831       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
832       AND cr.pay_from_customer = p_cust_account_id;
833   ELSIF p_customer_site_use_id IS NOT NULL THEN
835     INTO l_nsf_stop_payment_amount
836     FROM  ar_cash_receipts_all cr,
837           ar_cash_receipt_history_all crh
838     WHERE cr.cash_receipt_id = crh.cash_receipt_id
839       AND crh.current_record_flag = 'Y'
840       AND crh.status = 'REVERSED'
841 -- BEGIN fix bug #4483830--20050714-jypark-change query for NSF info
842 --      AND cr.status = 'REV'
843 --      AND cr.status = 'NSF' -- bug5613019
844         and cr.status in ('NSF','REV') -- bug 5613019
845 -- END fix bug #4483830--20050714-jypark-change query for NSF info
846       -- AND cr.reversal_category = 'NSF'  -- bug 5613019
847       and cr.reversal_category in ('NSF','REV') -- bug 5613019
848       AND cr.reversal_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
849       AND cr.customer_site_use_id = p_customer_site_use_id;
850   END IF;
851 
852   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
853   --RETURN TO_CHAR(nvl(l_nsf_stop_payment_amount, 0), fnd_currency.get_format_mask(g_curr_rec.base_currency, 30));
854   l_num_val :=  nvl(l_nsf_stop_payment_amount, 0);
855   l_char_val := RTRIM(TO_CHAR(l_num_val,fnd_currency.get_format_mask(g_curr_rec.base_currency, 30)));
856   RETURN l_char_val;
857   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
858 
859 EXCEPTION
860   WHEN NO_DATA_FOUND THEN RETURN(0);
861 END GET_NSF_STOP_PMT_AMOUNT;
862 
863 FUNCTION GET_SALES(p_party_id IN NUMBER,
864                    p_cust_account_id IN NUMBER,
865                    p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
866   l_sales NUMBER;
867   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
868   l_num_val NUMBER;
869   l_char_val VARCHAR2(1000);
870   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
871 
872 BEGIN
873 
874   l_sales    := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
875                             p_party_id, p_cust_account_id, p_customer_site_use_id);
876 
877   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
878   --RETURN(TO_CHAR(NVL(l_sales, 0), fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
879   l_num_val := NVL(l_sales, 0);
880   l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
881   RETURN l_char_val;
882   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
883 
884 END GET_SALES;
885 
886 
887 FUNCTION GET_DEDUCTION(p_party_id IN NUMBER,
888                    p_cust_account_id IN NUMBER,
889                    p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
890   l_adj NUMBER;
891   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
892   l_num_val NUMBER;
893   l_char_val VARCHAR2(1000);
894   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
895 
896 BEGIN
897   IF p_party_id IS NOT NULL THEN
898     SELECT
899        sum( nvl(adj.acctd_amount,0))
900     INTO    l_adj
901     FROM    ar_payment_schedules ps, ar_adjustments adj, hz_cust_accounts ca
902     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
903     AND     ps.payment_schedule_id <> -1
904     AND     ps.gl_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
905     AND     ps.customer_id = ca.cust_account_id
906     AND     ca.party_id = p_party_id
907     AND     adj.payment_schedule_id = ps.payment_schedule_id
908     AND     adj.status = 'A'
909     AND     adj.gl_date <= TRUNC(sysdate);
910   ELSIF p_cust_account_id IS NOT NULL THEN
911     SELECT
912        sum( nvl(adj.acctd_amount,0))
913     INTO    l_adj
914     FROM    ar_payment_schedules ps, ar_adjustments adj
915     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
916     AND     ps.payment_schedule_id <> -1
917     AND     ps.gl_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
918     AND     ps.customer_id = p_cust_account_id
919     AND     adj.payment_schedule_id = ps.payment_schedule_id
920     AND     adj.status = 'A'
921     AND     adj.gl_date <= TRUNC(sysdate);
922   ELSIF p_customer_site_use_id IS NOT NULL THEN
923     SELECT
924        sum( nvl(adj.acctd_amount,0))
925     INTO    l_adj
926     FROM    ar_payment_schedules ps, ar_adjustments adj
927     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
928     AND     ps.payment_schedule_id <> -1
929     AND     ps.gl_date BETWEEN TRUNC(add_months(sysdate, -12)) AND TRUNC(sysdate)
930     AND     ps.customer_site_use_id = p_customer_site_use_id
931     AND     adj.payment_schedule_id = ps.payment_schedule_id
932     AND     adj.status = 'A'
933     AND     adj.gl_date <= TRUNC(sysdate);
934   END IF;
935 
936   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
937   --RETURN(TO_CHAR(nvl(l_adj, 0),  fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
938   l_num_val := nvl(l_adj, 0);
939   l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
940   RETURN l_char_val;
941   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
942 
946 
943 EXCEPTION
944   WHEN NO_DATA_FOUND THEN RETURN(0);
945 END GET_DEDUCTION;
947 /*-------------------------------------------------------------------------+
948  | PUBLIC FUNCTION                                                         |
949  |                                                                         |
950  |    COMP_TOT_REC                                                         |
951  |                                                                         |
952  | DESCRIPTION                                                             |
953  |    Given a date range, this function will compute the total original    |
954  |    receivables within the date range                                    |
955  |    If function is called with a null start date, then the function      |
956  |    RETURNs total original receivables as of p_end_date                  |
957  |                                                                         |
958  | REQUIRES                                                                |
959  |    start_date                                                           |
960  |    end_date                                                             |
961  |                                                                         |
962  | OPTIONAL                                                                |
963  |                                                                         |
964  | RETURNS                                                                 |
965  |    total original receivables                                           |
966  |                                                                         |
967  | NOTES                                                                   |
968  |                                                                         |
969  | EXAMPLE                                                                 |
970  |                                                                         |
971  | MODIFICATION HISTORY                                                    |
972  |                                                                         |
973  |                                                                         |
974  +-------------------------------------------------------------------------*/
975 
976 FUNCTION COMP_TOT_REC(p_start_date IN DATE,
977                       p_end_date   IN DATE,
978                       p_party_id IN NUMBER,
979                       p_cust_account_id IN NUMBER,
980                       p_customer_site_use_id IN NUMBER) RETURN NUMBER AS
981   l_tot_rec           NUMBER;
982   l_temp_start        DATE;
983 
984   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
985   l_num_val NUMBER;
986   l_char_val VARCHAR2(1000);
987   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
988 
989 BEGIN
990 
991   if p_start_date is null then
992     -- default date to earliest date to pick up everything prior to
993     -- p_end_date
994     l_temp_start := to_date('01/01/1952','MM/DD/YYYY');
995   else
996     l_temp_start := p_start_date;
997   end if;
998 
999   IF p_party_id IS NOT NULL THEN
1000     SELECT  SUM(arpcurr.functional_amount(
1001       ps.amount_due_original,
1002       g_curr_rec.base_currency,
1003       nvl(ps.exchange_rate,1),
1004       g_curr_rec.base_precision,
1005       g_curr_rec.base_min_acc_unit) +
1006        GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
1007     INTO    l_tot_rec
1008     FROM    ar_payment_schedules   ps,
1009             hz_cust_accounts       ca
1010     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
1011     AND     ps.payment_schedule_id <> -1
1012     AND     ps.gl_date BETWEEN l_temp_start AND p_end_date
1013     AND     ps.customer_id = ca.cust_account_id
1014     AND     ca.party_id = p_party_id;
1015   ELSIF p_cust_account_id IS NOT NULL THEN
1016     SELECT  SUM(arpcurr.functional_amount(
1017       ps.amount_due_original,
1018       g_curr_rec.base_currency,
1019       nvl(ps.exchange_rate,1),
1020       g_curr_rec.base_precision,
1021       g_curr_rec.base_min_acc_unit) +
1022        GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
1023     INTO    l_tot_rec
1024     FROM    ar_payment_schedules   ps
1025     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
1026     AND     ps.payment_schedule_id <> -1
1027     AND     ps.gl_date BETWEEN l_temp_start AND p_end_date
1028     AND     ps.customer_id = p_cust_account_id;
1029   ELSIF p_customer_site_use_id IS NOT NULL THEN
1030     SELECT  SUM(arpcurr.functional_amount(
1031       ps.amount_due_original,
1032       g_curr_rec.base_currency,
1033       nvl(ps.exchange_rate,1),
1034       g_curr_rec.base_precision,
1035       g_curr_rec.base_min_acc_unit) +
1036        GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
1037     INTO    l_tot_rec
1038     FROM    ar_payment_schedules   ps
1039     WHERE   ps.class in ('INV', 'DM', 'CB', 'DEP' )
1040     AND     ps.payment_schedule_id <> -1
1041     AND     ps.gl_date BETWEEN l_temp_start AND p_end_date
1042     AND     ps.customer_site_use_id = p_customer_site_use_id;
1043   END IF;
1044 
1045   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1046   --RETURN(nvl(l_tot_rec,0));
1047   l_num_val := nvl(l_tot_rec, 0);
1048   RETURN l_num_val;
1049   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1050 
1051 EXCEPTION
1055 
1052   WHEN NO_DATA_FOUND THEN RETURN(0);
1053 END COMP_TOT_REC;
1054 
1056 /*-------------------------------------------------------------------------+
1057  | PUBLIC FUNCTION                                                         |
1058  |                                                                         |
1059  |    COMP_REM_REC                                                         |
1060  |                                                                         |
1061  | DESCRIPTION                                                             |
1062  |    Given a date range, this function will compute the total remaining   |
1063  |    receivables within the date range                                    |
1064  |                                                                         |
1065  | REQUIRES                                                                |
1066  |    start_date                                                           |
1067  |    end_date                                                             |
1068  |                                                                         |
1069  | OPTIONAL                                                                |
1070  |                                                                         |
1071  | RETURNS                                                                 |
1072  |    total remaining receivables                                          |
1073  |                                                                         |
1074  | NOTES                                                                   |
1075  |                                                                         |
1076  | EXAMPLE                                                                 |
1077  |                                                                         |
1078  | MODIFICATION HISTORY                                                    |
1079  |                                      there is no record found           |
1080  +-------------------------------------------------------------------------*/
1081 
1082 FUNCTION COMP_REM_REC(p_start_date IN DATE,
1083                       p_end_date   IN DATE,
1084                       p_party_id IN NUMBER,
1085                       p_cust_account_id IN NUMBER,
1086                       p_customer_site_use_id IN NUMBER) RETURN NUMBER IS
1087 
1088   l_rem_sales  NUMBER;
1089   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1090   l_num_val NUMBER;
1091   l_char_val VARCHAR2(1000);
1092   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1093 
1094 BEGIN
1095 
1096   l_rem_sales := 0;
1097 
1098   IF p_party_id IS NOT NULL THEN
1099     -- compute Remaining balance for given date range
1100 
1101     SELECT sum(GET_APPS_TOTAL(ps.payment_schedule_id,p_end_date) -
1102            GET_ADJ_TOTAL(ps.payment_schedule_id,p_end_date) +
1103            nvl(ps.acctd_amount_due_remaining,0))
1104     INTO   l_rem_sales
1105     FROM   ar_payment_schedules         ps,
1106            hz_cust_accounts ca
1107     WHERE  ps.gl_date between p_start_date and p_end_date
1108     AND    ps.class in ('INV','DEP','DM','CB')
1109     AND    ps.gl_date_closed > p_end_date
1110     AND    ps.customer_id = ca.cust_account_id
1111     -- Begin fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1112       AND    ps.status = 'OP'
1113     -- End fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1114     AND    ca.party_id = p_party_id;
1115   ELSIF p_cust_account_id IS NOT NULL THEN
1116     -- compute Remaining balance for given date range
1117 
1118     SELECT sum(GET_APPS_TOTAL(ps.payment_schedule_id,p_end_date) -
1119            GET_ADJ_TOTAL(ps.payment_schedule_id,p_end_date) +
1120            nvl(ps.acctd_amount_due_remaining,0))
1121     INTO   l_rem_sales
1122     FROM   ar_payment_schedules         ps
1123     WHERE  ps.gl_date between p_start_date and p_end_date
1124     AND    ps.class in ('INV','DEP','DM','CB')
1125     AND    ps.gl_date_closed > p_end_date
1126     -- Begin fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1127       AND    ps.status = 'OP'
1128     -- End fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1129     AND    ps.customer_id = p_cust_account_id;
1130   ELSIF p_customer_site_use_id IS NOT NULL THEN
1131     -- compute Remaining balance for given date range
1132 
1133     SELECT sum(GET_APPS_TOTAL(ps.payment_schedule_id,p_end_date) -
1134            GET_ADJ_TOTAL(ps.payment_schedule_id,p_end_date) +
1135            nvl(ps.acctd_amount_due_remaining,0))
1136     INTO   l_rem_sales
1137     FROM   ar_payment_schedules         ps
1138     WHERE  ps.gl_date between p_start_date and p_end_date
1139     AND    ps.class in ('INV','DEP','DM','CB')
1140     AND    ps.gl_date_closed > p_end_date
1141     -- Begin fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1142       AND    ps.status = 'OP'
1143     -- End fix bug #4949598-JYPARK-2/15/2006-add condition for performance
1144     AND    ps.customer_site_use_id = p_customer_site_use_id;
1145   END IF;
1146 
1147   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1148   l_num_val := (NVL(l_rem_sales,0));
1149   RETURN l_num_val;
1150   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1151 
1152 EXCEPTION
1153   WHEN NO_DATA_FOUND THEN RETURN(0);
1154 END COMP_REM_REC;
1155 
1156 /*-------------------------------------------------------------------------+
1157  | PUBLIC FUNCTION                                                         |
1158  |                                                                         |
1162  |    Given a date range, this function will compute the total current     |
1159  |    comp_curr_rec                                                        |
1160  |                                                                         |
1161  | DESCRIPTION                                                             |
1163  |    receivables within the date range                                    |
1164  |                                                                         |
1165  | REQUIRES                                                                |
1166  |    start_date                                                           |
1167  |    end_date                                                             |
1168  |                                                                         |
1169  | OPTIONAL                                                                |
1170  |                                                                         |
1171  | RETURNS                                                                 |
1172  |    total current receivables                                            |
1173  |                                                                         |
1174  | NOTES                                                                   |
1175  |                                                                         |
1176  | EXAMPLE                                                                 |
1177  |                                                                         |
1178  | MODIFICATION HISTORY                                                    |
1179  +-------------------------------------------------------------------------*/
1180 
1181 FUNCTION COMP_CURR_REC(p_start_date IN DATE,
1182                       p_end_date   IN DATE,
1183                       p_party_id IN NUMBER,
1184                       p_cust_account_id IN NUMBER,
1185                       p_customer_site_use_id IN NUMBER) RETURN NUMBER IS
1186 
1187   l_curr_rec  NUMBER;
1188   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1189   l_num_val NUMBER;
1190   l_char_val VARCHAR2(1000);
1191   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1192 
1193 BEGIN
1194 
1195   l_curr_rec := 0;
1196 
1197   IF p_party_id IS NOT NULL THEN
1198     -- compute Remaining balance for given date range
1199 
1200     SELECT sum(nvl(ps.acctd_amount_due_remaining,0))
1201     INTO   l_curr_rec
1202     FROM   ar_payment_schedules         ps,
1203            hz_cust_accounts             ca
1204     WHERE  ps.gl_date between p_start_date and p_end_date
1205     AND    ps.class in ('INV','DEP','DM','CB')
1206     AND    ps.gl_date_closed > p_end_date
1207     AND    ps.status = 'OP'
1208     AND    ps.customer_id = ca.cust_account_id
1209     AND    ca.party_id = p_party_id
1210     AND    ps.due_date > p_end_date;
1211   ELSIF p_cust_account_id IS NOT NULL THEN
1212     -- compute Remaining balance for given date range
1213 
1214     SELECT sum(nvl(ps.acctd_amount_due_remaining,0))
1215     INTO   l_curr_rec
1216     FROM   ar_payment_schedules         ps
1217     WHERE  ps.gl_date between p_start_date and p_end_date
1218     AND    ps.class in ('INV','DEP','DM','CB')
1219     AND    ps.gl_date_closed > p_end_date
1220     AND    ps.status = 'OP'
1221     AND    ps.customer_id = p_cust_account_id
1222     AND    ps.due_date > p_end_date;
1223   ELSIF p_customer_site_use_id IS NOT NULL THEN
1224     -- compute Remaining balance for given date range
1225 
1226     SELECT sum(nvl(ps.acctd_amount_due_remaining,0))
1227     INTO   l_curr_rec
1228     FROM   ar_payment_schedules         ps
1229     WHERE  ps.gl_date between p_start_date and p_end_date
1230     AND    ps.class in ('INV','DEP','DM','CB')
1231     AND    ps.gl_date_closed > p_end_date
1232     AND    ps.status = 'OP'
1233     AND    ps.customer_site_use_id = p_customer_site_use_id
1234     AND    ps.due_date > p_end_date;
1235   END IF;
1236 
1237   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1238   --RETURN (NVL(l_curr_rec,0));
1239   l_num_val := (NVL(l_curr_rec,0));
1240   RETURN l_num_val;
1241   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1242 
1243 EXCEPTION
1244   WHEN NO_DATA_FOUND THEN RETURN(0);
1245 END COMP_CURR_REC;
1246 
1247 
1248 /*========================================================================
1249  | PRIVATE FUNCTION GET_APPS_TOTAL
1250  |
1251  | DESCRIPTION
1252  |    Calculates the total applications against a payment_schedule
1253  |
1254  =======================================================================*/
1255 
1256 FUNCTION GET_APPS_TOTAL(p_payment_schedule_id IN NUMBER,
1257                         p_to_date IN DATE) RETURN NUMBER IS
1258   l_apps_tot  NUMBER;
1259 
1260   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1261   l_num_val NUMBER;
1262   l_char_val VARCHAR2(1000);
1263   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1264 
1265 BEGIN
1266   SELECT   sum( nvl(ra.acctd_amount_applied_to,0)  +
1267                 nvl(ra.acctd_earned_discount_taken,0) +
1268                 nvl(ra.acctd_unearned_discount_taken,0))
1269   INTO     l_apps_tot
1270   FROM     ar_receivable_applications   ra
1271   WHERE    ra.applied_payment_schedule_id = p_payment_schedule_id
1272   AND      ra.status = 'APP'
1273   AND      nvl(ra.confirmed_flag,'Y') = 'Y'
1274   AND      ra.gl_date   > p_to_date;
1275 
1279   RETURN l_num_val;
1276   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1277   --RETURN NVL(l_apps_tot,0);
1278   l_num_val := NVL(l_apps_tot,0);
1280   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1281 
1282 EXCEPTION
1283   WHEN NO_DATA_FOUND THEN RETURN(0);
1284 
1285 END GET_APPS_TOTAL;
1286 
1287 /*========================================================================
1288  | PRIVATE FUNCTION GET_ADJ_TOTAL
1289  |
1290  | DESCRIPTION
1291  |    Calculates the total adjustments against a payment_schedule
1292  |
1293  *=======================================================================*/
1294 
1295 FUNCTION GET_ADJ_TOTAL(p_payment_schedule_id IN NUMBER,
1296                        p_to_date IN DATE) RETURN NUMBER IS
1297   l_adj_tot  NUMBER;
1298 
1299   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1300   l_num_val NUMBER;
1301   l_char_val VARCHAR2(1000);
1302   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1303 
1304 BEGIN
1305   SELECT  sum( nvl(a.acctd_amount,0))
1306   INTO    l_adj_tot
1307   FROM    ar_adjustments   a
1308   WHERE   a.payment_schedule_id = p_payment_schedule_id
1309   AND     a.status       = 'A'
1310   AND     a.gl_date       > p_to_date;
1311 
1312   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1313   --RETURN nvl(l_adj_tot,0);
1314   l_num_val := nvl(l_adj_tot,0);
1315   RETURN l_num_val;
1316   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1317 
1318 EXCEPTION
1319   WHEN NO_DATA_FOUND THEN RETURN(0);
1320 
1321 END GET_ADJ_TOTAL;
1322 
1323 FUNCTION GET_ADJ_FOR_TOT_REC(p_payment_schedule_id IN NUMBER,
1324                              p_to_date IN DATE) RETURN NUMBER IS
1325   l_adj_for_tot_rec NUMBER;
1326 
1327   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1328   l_num_val NUMBER;
1329   l_char_val VARCHAR2(1000);
1330   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1331 
1332 BEGIN
1333   SELECT  sum( nvl(a.acctd_amount,0))
1334   INTO    l_adj_for_tot_rec
1335   FROM    ar_adjustments   a
1336   WHERE   a.payment_schedule_id = p_payment_schedule_id
1337   AND     a.status = 'A'
1338   AND     a.gl_date <= p_to_date;
1339 
1340   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1341   --RETURN nvl(l_adj_for_tot_rec,0);
1342   l_num_val := nvl(l_adj_for_tot_rec,0);
1343   RETURN l_num_val;
1344   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1345 
1346 EXCEPTION
1347   WHEN NO_DATA_FOUND THEN RETURN(0);
1348 
1349 END GET_ADJ_FOR_TOT_REC;
1350 
1351 FUNCTION GET_CREDIT_LIMIT(p_party_id IN NUMBER,
1352                    p_cust_account_id IN NUMBER,
1353                    p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
1354   l_credit_limit NUMBER;
1355   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1356   l_num_val NUMBER;
1357   l_char_val VARCHAR2(1000);
1358   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1359 
1360 BEGIN
1361   IF p_party_id IS NOT NULL THEN
1362     -- Begin fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1363     --SELECT SUM(gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1364     SELECT SUM(DECODE(prof_amt.overall_credit_limit, NULL, NULL, gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1365     -- End fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1366               sysdate, cm_opt.default_exchange_rate_type, prof_amt.overall_credit_limit)))
1367       INTO l_credit_limit
1368       FROM hz_customer_profiles prof, hz_cust_profile_amts prof_amt,
1369            ar_cmgt_setup_options cm_opt
1370      WHERE prof.party_id = p_party_id
1371        AND prof.site_use_id IS NULL
1372        AND prof.status = 'A'
1373        AND prof.cust_account_profile_id = prof_amt.cust_account_profile_id
1374        AND prof_amt.cust_account_id = prof.cust_account_id
1375        --Begin-fix bug#4610424-JYPARK-09/16/2005-exclude credir limit for account
1376        AND prof.cust_account_id = -1
1377        --End-fix bug#4610424-JYPARK-09/16/2005-exclude credir limit for account
1378        AND prof_amt.site_use_id IS NULL;
1379 
1380   ELSIF p_cust_account_id IS NOT NULL THEN
1381     -- Begin fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1382     --SELECT SUM(gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1383     SELECT SUM(DECODE(prof_amt.overall_credit_limit, NULL, NULL, gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1384     -- End fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1385               sysdate, cm_opt.default_exchange_rate_type, prof_amt.overall_credit_limit)))
1386       INTO l_credit_limit
1387       FROM hz_customer_profiles prof, hz_cust_profile_amts prof_amt,
1388            ar_cmgt_setup_options cm_opt
1389      WHERE prof.cust_account_id = p_cust_account_id
1390        AND prof.site_use_id IS NULL
1391        AND prof.status = 'A'
1395   ELSIF p_customer_site_use_id IS NOT NULL THEN
1392        AND prof.cust_account_profile_id = prof_amt.cust_account_profile_id
1393        AND prof_amt.cust_account_id = p_cust_account_id
1394        AND prof_amt.site_use_id IS NULL;
1396     -- Begin fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1397     --SELECT SUM(gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1398     SELECT SUM(DECODE(prof_amt.overall_credit_limit, NULL, NULL, gl_currency_api.convert_amount_sql(prof_amt.currency_code, g_curr_rec.base_currency,
1399     -- End fix bug #6014218-31-May-07 gnramasa -return null when credit limits value is null instead of -2
1400               sysdate, cm_opt.default_exchange_rate_type, prof_amt.overall_credit_limit)))
1401       INTO l_credit_limit
1402       FROM hz_customer_profiles prof, hz_cust_profile_amts prof_amt,
1403            ar_cmgt_setup_options cm_opt
1404      WHERE prof.site_use_id = p_customer_site_use_id
1405        AND prof.status = 'A'
1406        AND prof.cust_account_profile_id = prof_amt.cust_account_profile_id
1407        AND prof_amt.site_use_id = p_customer_site_use_id;
1408   END IF;
1409 
1410   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1411   -- RETURN (TO_CHAR(nvl(l_credit_limit,0), fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
1412   --l_num_val := nvl(l_credit_limit,0);
1413   l_num_val := l_credit_limit;
1414   l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
1415   RETURN l_char_val;
1416   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1417 
1418 EXCEPTION
1419   WHEN NO_DATA_FOUND THEN RETURN(0);
1420 
1421 END GET_CREDIT_LIMIT;
1422 
1423 FUNCTION GET_HIGH_CREDIT_YTD(p_party_id IN NUMBER,
1424                    p_cust_account_id IN NUMBER,
1425                    p_customer_site_use_id IN NUMBER) RETURN VARCHAR2 AS
1426   l_high_credit_ytd NUMBER;
1427   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1428   l_num_val NUMBER;
1429   l_char_val VARCHAR2(1000);
1430   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1431 
1432 BEGIN
1433   IF p_party_id IS NOT NULL THEN
1434     SELECT MAX(gl_currency_api.convert_amount_sql(trx_summ.currency, g_curr_rec.base_currency,
1435               sysdate, cm_opt.default_exchange_rate_type, trx_summ.op_bal_high_watermark))
1436      INTO l_high_credit_ytd
1437      FROM ar_trx_summary trx_summ,
1438           ar_cmgt_setup_options cm_opt,
1439           hz_cust_accounts ca
1440     WHERE NVL(trx_summ.org_id,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ', NULL,
1441                 SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99))
1442               = NVL(TO_NUMBER(DECODE( SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ',NULL, SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
1443       AND trx_summ.cust_account_id = ca.cust_account_id
1444       AND ca.party_id = p_party_id;
1445   ELSIF p_cust_account_id IS NOT NULL THEN
1446     SELECT MAX(gl_currency_api.convert_amount_sql(trx_summ.currency, g_curr_rec.base_currency,
1447               sysdate, cm_opt.default_exchange_rate_type, trx_summ.op_bal_high_watermark))
1448      INTO l_high_credit_ytd
1449      FROM ar_trx_summary trx_summ,
1450           ar_cmgt_setup_options cm_opt
1451     WHERE NVL(trx_summ.org_id,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ', NULL,
1452                 SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99))
1453               = NVL(TO_NUMBER(DECODE( SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ',NULL, SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
1454       AND trx_summ.cust_account_id = p_cust_account_id;
1455   ELSIF p_customer_site_use_id IS NOT NULL THEN
1456     SELECT MAX(gl_currency_api.convert_amount_sql(trx_summ.currency, g_curr_rec.base_currency,
1457               sysdate, cm_opt.default_exchange_rate_type, trx_summ.op_bal_high_watermark))
1458      INTO l_high_credit_ytd
1459      FROM ar_trx_summary trx_summ,
1460           ar_cmgt_setup_options cm_opt
1461     WHERE NVL(trx_summ.org_id,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ', NULL,
1462                 SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99))
1463               = NVL(TO_NUMBER(DECODE( SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ',NULL, SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
1464       AND trx_summ.site_use_id = p_customer_site_use_id;
1465   END IF;
1466 
1467   --BEGIN-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1468   --RETURN TO_CHAR(nvl(l_high_credit_ytd,0), fnd_currency.get_format_mask(g_curr_rec.base_currency, 50));
1469   l_num_val := nvl(l_high_credit_ytd,0);
1470   l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_curr_rec.base_currency, 50)));
1471   RETURN l_char_val;
1472   --END-FIX Bug#5247669-08/02/2006-jypark- simplified by using an intermediate varchar variable
1473 
1474 EXCEPTION
1475   WHEN NO_DATA_FOUND THEN RETURN(0);
1476 
1477 END GET_HIGH_CREDIT_YTD;
1478 
1479 BEGIN
1480 --Begin bug#5208170 schekuri 29-May-2006
1481 --Commented out these as the same values are getting populated in IEX_METRIC_PVT.GET_METRIC_INFO
1482   /*SELECT sob.currency_code,
1483          c.precision,
1484          c.minimum_accountable_unit
1485     INTO   g_curr_rec.base_currency,
1486            g_curr_rec.base_precision,
1487            g_curr_rec.base_min_acc_unit
1488     FROM   ar_system_parameters   sysp,
1489            gl_sets_of_books     sob,
1490            fnd_currencies     c
1491    WHERE  sob.set_of_books_id = sysp.set_of_books_id
1492      AND    sob.currency_code   = c.currency_code;
1493 
1494   -- Past Year From and To
1495   SELECT  TRUNC(add_months(sysdate, - 12)) pastYearFrom ,
1496           TRUNC(sysdate) pastYearTo
1497     INTO  g_curr_rec.past_year_from,
1498           g_curr_rec.past_year_to
1499     FROM  dual;*/
1500     NULL;
1501   --End bug#5208170 schekuri 29-May-2006
1502 EXCEPTION
1503 WHEN OTHERS THEN
1504   NULL;
1505 
1506 END;