DBA Data[Home] [Help]

PACKAGE BODY: APPS.AR_ARXINREV_XMLP_PKG

Source


1 PACKAGE BODY AR_ARXINREV_XMLP_PKG AS
2 /* $Header: ARXINREVB.pls 120.2 2011/03/08 13:30:55 dgaurab ship $ */
3 function BeforeReport return boolean is
4 begin
5 declare
6 due_date	date;
7 errorbuf	varchar2(1000); x char(1);
8 acc_start_date   date;
9 acc_org_id      number(15);
10 l_msg           varchar2(2000);
11 begin
12   /*SRW.USER_EXIt('FND SRWINIT');*/null;
13   IF (p_debug_switch = 'Y') THEN
14      /*SRW.MESSAGE('1','After SRWINIT');*/null;
15   END IF;
16        /*srw.message('1000','start');*/null;
17        	select max(due_date)
18 	into due_date
19 	from ar_payment_schedules;
20 	IF (p_debug_switch = 'Y') THEN
21      	/*SRW.MESSAGE('2','After Selecting Due Date');*/null;
22   	END IF;
23 	/*srw.reference(p_test_layout);*/null;
24 	if p_test_layout = 'Y'
25 	then
26    		raise no_data_found;
27 	end if;
28 	if P_CHART_OF_ACCOUNTS_ID  is null
29  	then
30    	select to_char(gl.chart_of_accounts_id)
31    	into P_CHART_OF_ACCOUNTS_ID
32    	from   gl_sets_of_books gl, ar_system_parameters p
33    	where  gl.set_of_books_id = p.set_of_books_id;
34  	end if;
35   	IF (p_debug_switch = 'Y') THEN
36      	   /*SRW.MESSAGE('3','After Selecting Chart of Accounts Id');*/null;
37   	END IF;
38 	select currency_code
39 		into P_CURRENCY
40 	from gl_sets_of_books gl, ar_system_parameters ar
41 	where ar.set_of_books_id = gl.set_of_books_id;
42   	IF (p_debug_switch = 'Y') THEN
43      	   /*SRW.MESSAGE('4','After Selecting Currency Code');*/null;
44   	END IF;
45 	select precision
46 		into P_PRECISION
47 	from fnd_currencies
48 	where currency_code = P_CURRENCY;
49   	IF (p_debug_switch = 'Y') THEN
50      	  /*SRW.MESSAGE('5','After Selecting Precision');*/null;
51   	END IF;
52 	select minimum_accountable_unit
53 		into P_MIN_ACCOUNTABLE_UNIT
54 	from fnd_currencies
55 	where currency_code = P_CURRENCY;
56   	IF (p_debug_switch = 'Y') THEN
57      	/*SRW.MESSAGE('6','After Selecting Minimum Accountable Unit');*/null;
58   	END IF;
59 	select gl.name, gl.set_of_books_id, ar.org_id
60 	into P_NAME, P_SET_OF_BOOKS_ID,acc_org_id
61 	from gl_sets_of_books gl, ar_system_parameters ar
62 	where gl.set_of_books_id = ar.set_of_books_id;
63   	IF (p_debug_switch = 'Y') THEN
64      	   /*SRW.MESSAGE('7','After Selecting Set Of Books Id, Company Name');*/null;
65   	END IF;
66 	select end_date
67 	into P_END_DATE
68 	from gl_period_statuses gl
69 	where gl.set_of_books_id = P_SET_OF_BOOKS_ID            and gl.application_id  = 222
70           and gl.period_name     = P_REVALUATION_PERIOD;
71        LP_END_DATE:=P_END_DATE;
72         select min(start_date)
73         into acc_start_date
74         from gl_period_statuses gl
75         where gl.set_of_books_id = P_SET_OF_BOOKS_ID
76         and gl.application_id=222;
77         IF arp_util.open_period_exists('3000',acc_org_id,acc_start_date,p_end_date) THEN
78            FND_MESSAGE.SET_NAME('AR','AR_REPORT_ACC_NOT_GEN');
79            l_msg := FND_MESSAGE.get;
80            CP_ACC_MESSAGE := l_msg;
81         ELSE
82            CP_ACC_MESSAGE := NULL;
83         END IF;
84   	IF (p_debug_switch = 'Y') THEN
85      	/*SRW.MESSAGE('8','P End Date ' || P_END_DATE || ' ' || P_UP_TO_DUE_DATE );*/null;
86   	END IF;
87         P_REVALUATION_DATE := P_END_DATE;
88 	if P_UP_TO_DUE_DATE is null
89 	then
90 	  P_DUE_DATE_DISP  := P_UP_TO_DUE_DATE;
91 	  LP_UP_TO_DUE_DATE := due_date;
92 	else
93 	  P_DUE_DATE_DISP  := P_UP_TO_DUE_DATE;
94 	end if;
95 	IF P_RATE_TYPE_LOOKUP = 'DAILY' THEN
96 		IF P_DAILY_RATE_TYPE IS NULL OR P_RATE_DATE IS NULL THEN
97 			C_DAILY_RATE_LOOKUP_ERROR := 'Y';
98 		ELSE
99 			C_DAILY_RATE_LOOKUP_ERROR := 'N';
100 		END IF;
101 	END IF;
102        IF (p_debug_switch = 'Y') THEN
103      	/*SRW.MESSAGE('9','Before USER EXIT FND FLEX Balancing Segment Low');*/null;
104   	END IF;
105 	if p_bal_segment_low is NOT NULL  then
106  null;
107 	IF (p_debug_switch = 'Y') THEN
108      	/*SRW.MESSAGE('100','After USER EXIT FND FLEX Balancing Segment Low');*/null;
109   	END IF;
110 	lp_bal_segment_low := ' and '|| lp_bal_segment_low || '||'''' >= ''' || p_bal_segment_low || ''' ';
111 	end if ;
112 	if p_bal_segment_high is NOT NULL then
113  null;
114 	lp_bal_segment_high := ' and '|| lp_bal_segment_high || '||'''' <= ''' || p_bal_segment_high || ''' ';
115 	end if ;
116 	IF (p_debug_switch = 'Y') THEN
117      	/*SRW.MESSAGE('10','After USER EXIT FND FLEX Balancing Segment High');*/null;
118   	END IF;
119  null;
120   	IF (p_debug_switch = 'Y') THEN
121      	/*SRW.MESSAGE('11','After USER EXIT FND FLEX ALL');*/null;
122   	END IF;
123         exception
124 	WHEN others THEN
125 	errorbuf := SQLERRM(SQLCODE);
126 	/*srw.message('12',errorbuf);*/null;
127 	raise_application_error(-20101,null);/*srw.PROGRAM_ABORT;*/null;
128 end;
129   return (TRUE);
130 end;
131 function AfterReport return boolean is
132 begin
133 BEGIN
134    /*SRW.USER_EXIT('FND SRWEXIT');*/null;
135    IF (P_DEBUG_SWITCH = 'Y') THEN
136       /*SRW.MESSAGE('12','After SRWEXIT');*/null;
137    END IF;
138 EXCEPTION
139 WHEN OTHERS THEN
140    RAISE_application_error(-20101,null);/*SRW.PROGRAM_ABORT;*/null;
141 END;  return (TRUE);
142 end;
143 function aol_round( n in number, precision in number, mac in number) return number is
144 begin
145    if precision is null
146    then
147       /*srw.message( '100', 'Precision is null in call to aol_round');*/null;
148    end if;
149    if mac is null
150    then
151       return(round(n, precision));
152    else
153       return( round( n / mac ) * mac );
154    end if;
155 RETURN NULL; end;
156 function c_eop_rateformula(C_CURR in varchar2, C_TYPE in varchar2, C_EXCHANGE_RATE in number) return number is
157 begin
158 declare
159 eop_rate	number;
160 begin
161 	/*srw.reference(C_CURR);*/null;
162 	/*srw.reference(C_TYPE);*/null;
163 	/*srw.reference(C_EXCHANGE_RATE);*/null;
164 	if C_CURR = P_CURRENCY then return(1.00);
165 	else
166 		IF P_RATE_TYPE_LOOKUP = 'PERIOD' THEN
167 	select decode(tr.EOP_RATE, 0,0, 1/tr.EOP_RATE) 	into eop_rate
168 	from gl_translation_rates tr
169 	where tr.set_of_books_id    = P_SET_OF_BOOKS_ID
170 	  and tr.to_currency_code   = C_CURR
171 	  and upper(tr.period_name) = upper(P_REVALUATION_PERIOD)
172 	  and tr.actual_flag        = 'A';
173 		ELSE
174 			eop_rate := gl_currency_api.get_rate_sql
175 			(c_curr,P_currency,
176 			 P_RATE_DATE,
177 			 P_DAILY_RATE_TYPE);
178                    if eop_rate < 0 then
179 			raise NO_DATA_FOUND ;
180 		   end if;
181 		END IF;
182 	end if;
183 	if C_TYPE = 'DEP'
184 	then
185 	eop_rate := C_EXCHANGE_RATE;
186 	end if;
187         return(eop_rate * 1.00);
188         EXCEPTION
189         WHEN NO_DATA_FOUND THEN
190         	/*srw.message(1000, 'No End of Period Rate found for ' || C_CURR );*/null;
191 end;
192 RETURN NULL; end;
193 function c_open_funcformula(C_OPEN_ORIG in number, C_EXCHANGE_RATE in number) return number is
194 begin
195  /*srw.reference(CF_EOP_EXCH_RATE);*/null;
196  /*srw.reference(C_EXCHANGE_RATE);*/null;
197  /*srw.reference(c_open_orig);*/null;
198  return (nvl(C_OPEN_ORIG,0) * nvl(C_EXCHANGE_RATE,1));
199  end;
200 function c_open_revformula(C_EOP_RATE in number, C_EXCHANGE_RATE in number, C_OPEN_ORIG in number, C_OPEN_FUNC in number) return number is
201 begin
202 declare
203 revaluated	number;
204   begin
205    /*srw.reference(C_EOP_RATE);*/null;
206    /*srw.reference(C_EXCHANGE_RATE);*/null;
207    /*srw.reference(C_OPEN_ORIG);*/null;
208    /*srw.reference(C_OPEN_FUNC);*/null;
209    if nvl(C_EOP_RATE,0) < C_EXCHANGE_RATE
210      then
211       revaluated := nvl(C_OPEN_ORIG,0) * nvl(C_EOP_RATE,0);
212      else
213       revaluated := nvl(C_OPEN_FUNC,0);
214    end if;
215    if  C_EOP_RATE is NULL then
216 	revaluated := NULL;
217    end if;
218 return(revaluated);
219 end;
220 RETURN NULL; end;
221 function c_diffformula(C_OPEN_REV in number, C_OPEN_FUNC in number) return number is
222 begin
223  return (nvl(C_OPEN_REV,0) - nvl(C_OPEN_FUNC,0));
224 end;
225 function c_receiptsformula(C_PAY_ID in number) return number is
226 begin
227 declare
228 	receipt	number;
229 begin
230 /*srw.reference(C_PAY_ID);*/null;
231 if p_cleared = 'N'
232 then
233    select sum(nvl(app.amount_applied,0) + nvl(app.earned_discount_taken,0) + nvl(app.unearned_discount_taken,0))
234      into receipt
235      from ar_receivable_applications app
236     where app.applied_payment_schedule_id = C_PAY_ID
237       and app.status = 'APP'
238       and app.gl_date <= P_END_DATE
239       and app.application_type='CASH'
240       and not exists (
241 		select 'reversed'
242 		   from ar_cash_receipt_history crh
243 		  where app.cash_receipt_id = crh.cash_receipt_id
244 		    and crh.status = 'REVERSED'
245 		    and crh.gl_date <= P_END_DATE);
246 else
247    select sum(nvl(app.amount_applied,0) + nvl(app.earned_discount_taken,0) + nvl(app.unearned_discount_taken,0))
248      into receipt
249      from ar_receivable_applications app
250     where app.applied_payment_schedule_id = C_PAY_ID
251       and app.status = 'APP'
252       and app.gl_date <= P_END_DATE
253       and app.application_type='CASH'
254       and exists
255        ( select 'Cleared Receipt'
256            from ar_cash_receipt_history_all crh
257           where crh.cash_receipt_id = app.cash_receipt_id
258             and crh.status = 'CLEARED'
259             and crh.gl_date <= P_END_DATE
260             and nvl(crh.reversal_gl_date,P_END_DATE+1) > P_END_DATE) ;
261 end if;
262 return(receipt);
263 EXCEPTION
264 when NO_DATA_FOUND then
265   return(0);
266 end;
267 RETURN NULL; end;
268 function c_open_origformula(C_PAY_AMOUNT in number, C_RECEIPTS in number, C_ADJUST in number, C_CM in number, C_CM1 in number) return number is
269 STATED_REPORTING_PERIOD_RCPTS number;
270 begin
271 /*srw.reference(C_REVALUATE_YES_NO);*/null;
272 /*srw.reference(C_PAY_AMOUNT);*/null;
273 /*srw.reference(C_RECEIPTS);*/null;
274 /*srw.reference(C_ADJUST);*/null;
275 /*srw.reference(C_CM);*/null;
276 /*srw.reference(C_CM1);*/null;
277    return(nvl(C_PAY_AMOUNT,0) - nvl(C_RECEIPTS,0)  + nvl(C_ADJUST,0) - nvl(C_CM,0) + nvl(C_CM1,0));
278 End;
279 function calc_open_funcformula(C_OPEN_FUNC in number) return number is
280 begin
281 declare
282 calc_amount number;
283 begin
284 /*SRW.REFERENCE(C_OPEN_FUNC);*/null;
285 calc_amount := aol_round(C_OPEN_FUNC,
286 				P_PRECISION, P_MIN_ACCOUNTABLE_UNIT);
287 /*srw.reference (c_trx_number);*/null;
288 /*srw.reference(C_PREVIOUS_CUST_TRX_ID);*/null;
289 /*srw.reference(C_TYPE);*/null;
290 return(nvl(calc_amount,0));
291 end;
292 RETURN NULL;
293 end;
294 function calc_open_revformula(C_OPEN_REV in number) return number is
295 begin
296 declare
297 calc_amount number;
298 begin
299 /*SRW.REFERENCE(C_OPEN_REV);*/null;
300 calc_amount := aol_round(C_OPEN_REV,
301 				P_PRECISION, P_MIN_ACCOUNTABLE_UNIT);
302 return(calc_amount);
303 end;
304 RETURN NULL; end;
305 function calc_eop_amountformula(C_EOP_AMOUNT in number) return number is
306 begin
307 declare
308 calc_amount number;
309 begin
310 /*SRW.REFERENCE(C_EOP_AMOUNT);*/null;
311 calc_amount := aol_round(C_EOP_AMOUNT,
312 				P_PRECISION, P_MIN_ACCOUNTABLE_UNIT);
313 return(calc_amount);
314 end;
315 RETURN NULL; end;
316 function c_adjustformula(C_PAY_ID in number) return number is
317 begin
318 declare
319 	adjust	number;
320 begin
321 /*srw.reference(C_PAY_ID);*/null;
322 select sum(amount)
323 	into adjust
324 from  ar_adjustments adj
325 where  adj.payment_schedule_id = C_PAY_ID
326   and  adj.gl_date <= P_END_DATE
327   and  adj.status = 'A';
328 return(adjust);
329 EXCEPTION
330 when NO_DATA_FOUND then
331   return(0);
332 end;
333 RETURN NULL; end;
334 function c_eop_amountformula(C_EOP_RATE in number, C_OPEN_ORIG in number) return number is
335 begin
336 /*srw.reference(C_EOP_RATE);*/null;
337 /*srw.reference(C_OPEN_FUNC);*/null;
338 /*srw.reference(C_OPEN_ORIG);*/null;
339 /*srw.reference(CF_EOP_EXCH_RATE);*/null;
340 /*srw.reference(C_EXCHANGE_RATE);*/null;
341 if C_EOP_RATE is not NULL then
342  return(nvl(C_OPEN_ORIG,0) * nvl(C_EOP_RATE,0));
343 else
344  return(NULL);
345 end if;
346 RETURN NULL; end;
347 function c_eop_diffformula(C_SUM_EOP_AMOUNT in number, C_SUM_OPEN_FUNC in number) return number is
348 begin
349  return (nvl(C_SUM_EOP_AMOUNT,0) - nvl(C_SUM_OPEN_FUNC,0));
350 end;
351 function c_rev_diffformula(C_SUM_OPEN_REV in number, C_SUM_OPEN_FUNC in number) return number is
352 begin
353  return (nvl(C_SUM_OPEN_REV,0) -  nvl(C_SUM_OPEN_FUNC,0));
354 end;
355 function c_sum_eop_diffformula(C_SUM_EOP_AMOUNT in number, C_SUM_OPEN_FUNC in number) return number is
356 begin
357  return (nvl(C_SUM_EOP_AMOUNT,0) - nvl(C_SUM_OPEN_FUNC,0));
358 end;
359 function c_sum_rev_diffformula(C_SUM_OPEN_REV in number, C_SUM_OPEN_FUNC in number) return number is
360 begin
361  return (nvl(C_SUM_OPEN_REV,0) - nvl(C_SUM_OPEN_FUNC,0));
362 end;
363 function c_flagformula(C_EOP_RATE in number, C_OPEN_ORIG in number) return number is
364 begin
365 /*srw.reference(C_EOP_RATE);*/null;
366 /*srw.reference(C_OPEN_ORIG);*/null;
367 if C_EOP_RATE is NULL and C_OPEN_ORIG <> 0
368 then return(1);
369 else return(0);
370 end if;
371 RETURN NULL; end;
372 function c_cmformula(C_PAY_ID in number) return number is
373 begin
374 declare
375 cm	number;
376 begin
377 /*srw.reference(C_PAY_ID);*/null;
378 select 	sum(nvl(app.amount_applied,0))
379 	into cm
380 from 	ar_receivable_applications app
381 where 	app.gl_date <= P_END_DATE
382    and	app.status ='APP'
383    and  app.application_type = 'CM'
384    and  app.applied_payment_schedule_id = C_PAY_ID ;
385 return(cm);
386 EXCEPTION
387 when NO_DATA_FOUND then
388 return(0);
389 end;
390 RETURN NULL; end;
391 function c_tot_eop_diffformula(C_TOT_EOP_AMOUNT in number, C_TOT_OPEN_FUNC in number) return number is
392 begin
393 /*srw.reference(C_TOT_OPEN_FUNC);*/null;
394 /*srw.reference(C_TOT_EOP_AMOUNT);*/null;
395 return(nvl(C_TOT_EOP_AMOUNT,0) - nvl(C_TOT_OPEN_FUNC,0));
396 end;
397 function c_tot_rev_diffformula(C_TOT_OPEN_REV in number, C_TOT_OPEN_FUNC in number) return number is
398 begin
399 /*srw.reference(C_TOT_OPEN_REV);*/null;
400 /*srw.reference(C_TOT_OPEN_FUNC);*/null;
401 return(nvl(C_TOT_OPEN_REV,0) - nvl(C_TOT_OPEN_FUNC,0));
402 end;
403 function cf_eop_reval_amountformula(Cf_EOP_EXCH_RATE in number, C_TYPE in varchar2, c_exchange_rate in number, C_REVALUATE_YES_NO in varchar2, C_OPEN_ORIG in number, c_previous_cust_trx_id in number) return number is
404 begin
405 if Cf_EOP_EXCH_RATE is not null and C_TYPE <> 'CM' then
406    if (Cf_EOP_EXCH_RATE < c_exchange_rate and C_REVALUATE_YES_NO = 'Y') then
407       return(nvl(C_OPEN_ORIG,0) * nvl(Cf_EOP_EXCH_RATE,0));
408    else
409       return(nvl(C_OPEN_ORIG,0) * nvl(C_EXCHANGE_RATE,0));
410    END IF;
411 elsif
412    Cf_EOP_EXCH_RATE is not null and C_TYPE = 'CM' then
413    if (Cf_EOP_EXCH_RATE > c_exchange_rate and C_REVALUATE_YES_NO = 'Y') then
414        if c_previous_cust_trx_id <> 0 then
415           return 0;
416        else
417           return(nvl(C_OPEN_ORIG,0) * nvl(Cf_EOP_EXCH_RATE,0));
418        end if;
419    else
420       if c_previous_cust_trx_id <> 0 then
421           return 0;
422       else
423           return(nvl(C_OPEN_ORIG,0) * nvl(C_EXCHANGE_RATE,0));
424       end if;
425    END IF;
426 return(NULL);
427 end if;
428 return(NULL);
429 end;
430 function cf_total_adjustmentsformula(C_PAY_ID in number, C_OPEN_ORIG in number) return number is
431 BEGIN
432 declare
433 	adjust	number;
434 	ratio   number;
435 begin
436 /*srw.reference(C_PAY_ID);*/null;
437 /*srw.reference(C_OPEN_ORIG);*/null;
438 select sum(amount)
439 	into adjust
440 from  ar_adjustments adj
441 where  adj.payment_schedule_id = C_PAY_ID
442   and  adj.gl_date > P_REVALUATION_DATE
443   and  adj.status = 'APP';
444 ratio := C_OPEN_ORIG/(C_OPEN_ORIG + ADJUST);
445 return(RATIO);
446 EXCEPTION
447 when NO_DATA_FOUND then
448   return(1);
449 end;
450 END;
451 function AfterPForm return boolean is
452 begin
453 LP_END_DATE:= P_END_DATE;
454 P_RATE_DATE1 := to_char(P_RATE_DATE,'dd-MON-yy');
455 LP_UP_TO_DUE_DATE:=P_UP_TO_DUE_DATE;
456 	  		     --(orig st)lp_dates := ' Pay.DUE_DATE <= :P_UP_TO_DUE_DATE and pay.gl_date <= :P_end_date and ';
457 	  		   lp_dates := ' Pay.DUE_DATE <= :LP_UP_TO_DUE_DATE and pay.gl_date <= :LP_END_DATE and ';
458 					IF P_POSTED = 'Y' THEN
459               lp_posted := ' dist.gl_posted_date is not null and ';
460         ELSE
461            lp_posted := ' ';
462         END IF;
463 		  			IF P_POSTED = 'Y' THEN
464 	   lp_posted_RECEIPTS := ' AND crh.gl_posted_date is not null ';
465         ELSE
466            lp_posted_receipts := ' ';
467 	END IF;
468  	IF P_CLEARED = 'Y'  THEN
469 	    lp_cleared := ' and crh.status =' || '''CLEARED''' ;
470      --(orig st)lp_cleared_new := 'and ((pay.gl_date_closed > :P_END_DATE) ' ||
471                 lp_cleared_new := 'and ((pay.gl_date_closed > :LP_END_DATE) ' ||
472 		' or exists ' ||
473        		' ( select ''receipt clear after p_end_date''  ' ||
474 		'	  from ar_receivable_applications_all app ' ||
475 		'               ,ar_cash_receipt_history_all crh ' ||
476 		'	where trx.customer_trx_id = app.applied_customer_Trx_id ' ||
477 		'  	and   app.cash_receipt_id = crh.cash_receipt_id' ||
478                 '       and   crh.status <> ''CLEARED'' ' ||
479 		--(orig st)'       and   crh.gl_date <= :P_END_DATE' ||
480 		'       and   crh.gl_date <= :LP_END_DATE' ||
481              --(orig st) '        and   nvl(crh.reversal_gl_date, :P_END_DATE +1 ) > :P_END_DATE ) ) ' ;
482             '        and   nvl(crh.reversal_gl_date, TO_DATE(:LP_END_DATE,''DD-MON-YYYY'') +1 ) > :LP_END_DATE ) ) ';
483 	ELSE
484          --(orig st)lp_cleared_new := ' and pay.gl_date_closed > :P_END_DATE ' ;
485            lp_cleared_new := ' and pay.gl_date_closed > :LP_END_DATE ' ;
486 	END IF;
487   return (TRUE);
488 end;
489 function cf_curr_to_func_exch_rateformu(C_EXCHANGE_RATE in number) return number is
490 RATE NUMBER;
491 begin
492   /*SRW.REFERENCE(C_EXCHANGE_RATE);*/null;
493 RATE := C_EXCHANGE_RATE;
494   return round(rate,p_precision);
495  end;
496 function cf_eop_exch_rateformula(c_revaluate_yes_no in varchar2, c_exchange_rate in number, c_curr in varchar2) return number is
497   rate number;
498  begin
499   /*srw.reference(c_exchange_rate);*/null;
500   /*srw.reference(c_revaluate_yes_no);*/null;
501   If nvl(c_revaluate_yes_no, 'N') <> 'Y' then
502      return round(c_exchange_rate,p_precision);
503   end if;
504   /*srw.reference(c_curr);*/null;
505   If P_currency = c_curr   then
506      return 1;
507   else
508      /*srw.reference(c_inv_date);*/null;
509      /*srw.reference(P_RATE_TYPE);*/null;
510      /*srw.reference(P_REVALUATION_DATE);*/null;
511      rate := gl_currency_api.get_rate_sql(P_CURRENCY,c_curr,P_REVALUATION_DATE,P_RATE_TYPE);
512      return round(rate,p_precision);
513   End if;
514 end;
515 FUNCTION total (a number, b number) RETURN number is
516 BEGIN
517   return nvl(a,0) + nvl(b,0);
518 END;
519 function CF_todayFormula return char is
520 begin
521 --Bug11799279
522   return(fnd_date.date_to_chardate(sysdate, calendar_aware=> FND_DATE.calendar_aware_alt));
523 end;
524 function CF_Revaluation_dateFormula return char is
525 begin
526 --Bug11799279
527    return(fnd_date.date_to_chardate(p_revaluation_date, calendar_aware=> FND_DATE.calendar_aware_alt));
528 end;
529 function CF_due_date_dispFormula return Char is
530 begin
531 --Bug11799279
532    return(fnd_date.date_to_chardate(p_due_date_disp, calendar_aware=> FND_DATE.calendar_aware_alt));
533 end;
534 function c_2(cs_2 in number) return boolean is
535 BEGIN
536    /*srw.reference(cp_1);*/null;
537  /*srw.reference(cs_2);*/null;
538    if cp_1 = cs_2 then  /*srw.message('1003', 'last');*/null;
539  return true; else return false; end if;
540 END;
541 procedure set_last_cust(c_balancing IN VARCHAR2 , cs_2 IN NUMBER)is
542 BEGIN
543   /*srw.reference(cs_2);*/null;
544   /*srw.reference(c_balancing);*/null;
545   /*srw.message ('1007', c_balancing || '   ' || cs_2);*/null;
546   If c_balancing = cs_2 then
547      /*srw.message ('1002', cs_2);*/null;
548      cp_1 := Cs_2;
549   end if;
550 END;
551 function c_cm1formula(C_PAY_ID in number) return number is
552 begin
553 declare
554 cm	number;
555 begin
556 /*srw.reference(C_PAY_ID);*/null;
557 select 	sum(nvl(app.amount_applied,0))
558 	into cm
559 from 	ar_receivable_applications app
560 where 	app.gl_date <= P_END_DATE
561    and	app.status ='APP'
562    and  app.application_type = 'CM'
563    and  app.payment_schedule_id = C_PAY_ID ;
564 return(cm);
565 EXCEPTION
566 when NO_DATA_FOUND then
567 return(0);
568 end;
569 RETURN NULL; end;
570 function CF_RATE_TYPE_LOOKUPFormula return Char is
571 	l_return_var VARCHAR2(80);
572 begin
573 	SELECT displayed_field
574 	INTO   l_return_var
575 	FROM   ap_lookup_codes
576 	WHERE  lookup_type = 'APXINREV_RATE_TYPE'
577 	AND    lookup_code = P_RATE_TYPE_LOOKUP;
578 	return l_return_var;
579 exception
580 	WHEN OTHERS THEN
581 		return P_RATE_TYPE_LOOKUP;
582 end;
583 function CF_USER_DAILY_RATE_TYPEFormula return Char is
584 l_return_var VARCHAR2(80);
585 begin
586 	SELECT user_conversion_type
587 	INTO   l_return_var
588 	FROM   gl_daily_conversion_types
589 	WHERE  conversion_type = p_daily_rate_type;
590 	return l_return_var;
591 exception
592 	WHEN OTHERS THEN
593 		return P_daily_rate_type;
594 end;
595 function CF_TRANS_TO_GLFormula return Char is
596 return_value  varchar2(240);
597 begin
598 	select meaning
599 	into return_value
600 	from fnd_lookups
601 	where lookup_type = 'YES_NO'
602 	and lookup_code = P_POSTED;
603 return(return_value);
604 end;
605 function CF_CLEARED_ONLYFormula return Char is
606  return_value  varchar2(240);
607 begin
608 	select meaning
609 	into return_value
610 	from fnd_lookups
611 	where lookup_type = 'YES_NO'
612 	and lookup_code = P_CLEARED;
613 	return(return_value);
614 end;
615 function P_NAMEValidTrigger return boolean is
616 begin
617   return (TRUE);
618 end;
619 --Functions to refer Oracle report placeholders--
620  Function CP_TOT_TMP_p return number is
621 	Begin
622 	 return CP_TOT_TMP;
623 	 END;
624  Function CP_TMP_p return number is
625 	Begin
626 	 return CP_TMP;
627 	 END;
628  Function RP_DATA_FOUND_p return varchar2 is
629 	Begin
630 	 return RP_DATA_FOUND;
631 	 END;
632  Function RP_SUB_TITLE_p return varchar2 is
633 	Begin
634 	 return RP_SUB_TITLE;
635 	 END;
636  Function REVALUATION_DATE_p return number is
637 	Begin
638 	 return REVALUATION_DATE;
639 	 END;
640  Function CP_TEMP_p return number is
641 	Begin
642 	 return CP_TEMP;
643 	 END;
644  Function CP_1_p return varchar2 is
645 	Begin
646 	 return CP_1;
647 	 END;
648  Function C_DAILY_RATE_LOOKUP_ERROR_p return varchar2 is
649 	Begin
650 	 return C_DAILY_RATE_LOOKUP_ERROR;
651 	 END;
652  Function CP_ACC_MESSAGE_p return varchar2 is
653 	Begin
654 	 return CP_ACC_MESSAGE;
655 	 END;
656 END AR_ARXINREV_XMLP_PKG ;
657 
658