1: package body ARP_APP_CALC_PKG as
2: /* $Header: ARAPPRUB.pls 120.6 2006/06/02 23:16:06 kmaheswa ship $ */
3:
4: -- PL/SQL tables will hold the values of the rules already in memory
5: TYPE rule_start_tab_typ IS TABLE of number INDEX BY BINARY_INTEGER;
42: l_rule_set_id number;
43:
44: begin
45:
46: arp_util.debug('ARP_APP_CALC_PKG: GET_RULE_SET_ID()+');
47: select nvl(rule_set_id,nvl(arp_standard.sysparm.rule_set_id,-1))
48: into l_rule_set_id
49: from ra_cust_trx_types
50: where cust_trx_type_id = p_trx_type_id ;
53: fnd_message.set_name('AR','AR_NO_RULE_DEFINED');
54: app_exception.raise_exception;
55: end if;
56:
57: arp_util.debug('ARP_APP_CALC_PKG: GET_RULE_SET_ID()- Rule Set Id = '||to_char(l_rule_set_id));
58:
59: return(l_rule_set_id);
60:
61: EXCEPTION
59: return(l_rule_set_id);
60:
61: EXCEPTION
62: WHEN OTHERS THEN
63: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.GET_RULE_SET_ID() - OTHERS'||SQLERRM);
64: RAISE;
65: end;
66:
67: /*===========================================================================+
102: for rules_in_cache in 1..j loop
103: if p_rule_set_id = rule_set_id_tab(rules_in_cache) then
104: g_rule_start := rule_start_tab(rules_in_cache);
105: g_rule_end := rule_end_tab(rules_in_cache);
106: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rules cached = '|| to_char(j));
107: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Current rule-set-id = '|| to_char(p_rule_set_id));
108: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Cached at index = '|| to_char(rules_in_cache));
109: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule Start = '|| to_char(g_rule_start));
110: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule End = '|| to_char(g_rule_end));
103: if p_rule_set_id = rule_set_id_tab(rules_in_cache) then
104: g_rule_start := rule_start_tab(rules_in_cache);
105: g_rule_end := rule_end_tab(rules_in_cache);
106: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rules cached = '|| to_char(j));
107: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Current rule-set-id = '|| to_char(p_rule_set_id));
108: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Cached at index = '|| to_char(rules_in_cache));
109: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule Start = '|| to_char(g_rule_start));
110: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule End = '|| to_char(g_rule_end));
111: end if;
104: g_rule_start := rule_start_tab(rules_in_cache);
105: g_rule_end := rule_end_tab(rules_in_cache);
106: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rules cached = '|| to_char(j));
107: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Current rule-set-id = '|| to_char(p_rule_set_id));
108: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Cached at index = '|| to_char(rules_in_cache));
109: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule Start = '|| to_char(g_rule_start));
110: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule End = '|| to_char(g_rule_end));
111: end if;
112: end loop;
105: g_rule_end := rule_end_tab(rules_in_cache);
106: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rules cached = '|| to_char(j));
107: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Current rule-set-id = '|| to_char(p_rule_set_id));
108: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Cached at index = '|| to_char(rules_in_cache));
109: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule Start = '|| to_char(g_rule_start));
110: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule End = '|| to_char(g_rule_end));
111: end if;
112: end loop;
113:
106: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rules cached = '|| to_char(j));
107: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Current rule-set-id = '|| to_char(p_rule_set_id));
108: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Cached at index = '|| to_char(rules_in_cache));
109: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule Start = '|| to_char(g_rule_start));
110: arp_util.debug('ARP_APP_CALC_PKG.set_rule_set - Rule End = '|| to_char(g_rule_end));
111: end if;
112: end loop;
113:
114: if ((g_rule_start = 0) and ( g_rule_end = 0 )) then
139: end if;
140: g_rule_end := nvl(g_rule_start - 1
141: + CEIL( ( length (l_rule_source_lng) / l_rule_chunk ) ),1);
142:
143: arp_util.debug('ARP_APP_CALC_PKG: Rule Start = ' || to_char(g_rule_start));
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
140: g_rule_end := nvl(g_rule_start - 1
141: + CEIL( ( length (l_rule_source_lng) / l_rule_chunk ) ),1);
142:
143: arp_util.debug('ARP_APP_CALC_PKG: Rule Start = ' || to_char(g_rule_start));
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
148: arp_util.debug('ARP_APP_CALC_PKG: rule_set_id = ' || to_char(p_rule_set_id));
141: + CEIL( ( length (l_rule_source_lng) / l_rule_chunk ) ),1);
142:
143: arp_util.debug('ARP_APP_CALC_PKG: Rule Start = ' || to_char(g_rule_start));
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
148: arp_util.debug('ARP_APP_CALC_PKG: rule_set_id = ' || to_char(p_rule_set_id));
149:
142:
143: arp_util.debug('ARP_APP_CALC_PKG: Rule Start = ' || to_char(g_rule_start));
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
148: arp_util.debug('ARP_APP_CALC_PKG: rule_set_id = ' || to_char(p_rule_set_id));
149:
150: for i in g_rule_start..g_rule_end loop
143: arp_util.debug('ARP_APP_CALC_PKG: Rule Start = ' || to_char(g_rule_start));
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
148: arp_util.debug('ARP_APP_CALC_PKG: rule_set_id = ' || to_char(p_rule_set_id));
149:
150: for i in g_rule_start..g_rule_end loop
151: g_rule_source(i) := substr(l_rule_source_lng,l_in_rule_start,l_rule_chunk);
144: arp_util.debug('ARP_APP_CALC_PKG: Rule End = ' || to_char(g_rule_end)) ;
145: arp_util.debug('ARP_APP_CALC_PKG: Rule length = ' || to_char(length(l_rule_source_lng))) ;
146: arp_util.debug('ARP_APP_CALC_PKG: l_in_rule_start = ' || to_char(l_in_rule_start));
147: arp_util.debug('ARP_APP_CALC_PKG: l_rule_chunk = ' || to_char(l_rule_chunk));
148: arp_util.debug('ARP_APP_CALC_PKG: rule_set_id = ' || to_char(p_rule_set_id));
149:
150: for i in g_rule_start..g_rule_end loop
151: g_rule_source(i) := substr(l_rule_source_lng,l_in_rule_start,l_rule_chunk);
152: l_in_rule_start := l_in_rule_start + l_rule_chunk ;
171:
172: end if;
173: EXCEPTION
174: WHEN OTHERS THEN
175: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.SET_RULE_SET()'||SQLERRM);
176: RAISE;
177: end;
178:
179:
225:
226: begin
227:
228: IF PG_DEBUG in ('Y', 'C') THEN
229: arp_standard.debug('ARP_APP_CALC_PKG.extract_taxes()+');
230: END IF;
231:
232: if amt < (line_remaining + tax_remaining) then
233:
286:
287: tax_applied := l_tax_applied;
288:
289: IF PG_DEBUG in ('Y', 'C') THEN
290: arp_standard.debug('ARP_APP_CALC_PKG.extract_taxes()-');
291: END IF;
292:
293: EXCEPTION
294: WHEN OTHERS THEN
292:
293: EXCEPTION
294: WHEN OTHERS THEN
295: IF PG_DEBUG in ('Y', 'C') THEN
296: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.extract_taxes'||SQLERRM);
297: END IF;
298: RAISE;
299:
300: end extract_taxes;
405:
406: begin
407:
408: IF PG_DEBUG in ('Y', 'C') THEN
409: arp_standard.debug('ARP_APP_CALC_PKG.calc_applied_and_remaining()+ ');
410: arp_standard.debug('calc_applied_and_remaining: ' || ' ..amount applied '||to_char(amt));
411: arp_standard.debug('calc_applied_and_remaining: ' || ' ..currency '||currency);
412: arp_standard.debug('calc_applied_and_remaining: ' || ' ..line_remaining '||to_char(line_remaining));
413: arp_standard.debug('calc_applied_and_remaining: ' || ' ..line_tax_remaining '||to_char(line_tax_remaining));
618: charges_tax_applied := sign(amt) * abs(l_charges_tax_applied);
619:
620:
621: IF PG_DEBUG in ('Y', 'C') THEN
622: arp_standard.debug('done with ARP_APP_CALC_PKG.calc_applied_and_remaining()-');
623: arp_standard.debug('calc_applied_and_remaining: ' || ' ..amount applied '||to_char(amt));
624: arp_standard.debug('calc_applied_and_remaining: ' || ' ..currency '||currency);
625: arp_standard.debug('calc_applied_and_remaining: ' || ' ..line_remaining '||to_char(line_remaining));
626: arp_standard.debug('calc_applied_and_remaining: ' || ' ..line_tax_remaining '||to_char(line_tax_remaining));
630:
631: EXCEPTION
632: WHEN OTHERS THEN
633: IF PG_DEBUG in ('Y', 'C') THEN
634: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.calc_applied_and_remaining()'||SQLERRM);
635: END IF;
636: RAISE;
637:
638:
772: l_freight_tax_applied number:=0;
773: l_charges_tax_applied number:=0;
774:
775: BEGIN
776: arp_standard.debug('ARP_APP_CALC_PKG.calc_applied_and_remaining() Wrapper +');
777:
778: /*
779: * gjayanth: Bug 772847: When CM is applied to CB, payment
780: * schedule's line_remaining was not getting updated correctly.
1065: arp_standard.debug('calc_applied_and_remaining() Wrapper -');
1066:
1067: EXCEPTION
1068: WHEN OTHERS THEN
1069: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.calc_applied_and_remaining: Wrapper: '||SQLERRM);
1070: RAISE;
1071:
1072: END;
1073:
1283:
1284: begin
1285:
1286: IF PG_DEBUG in ('Y', 'C') THEN
1287: arp_standard.debug('ARP_APP_CALC_PKG.COMPILE_RULE()+');
1288: END IF;
1289:
1290: for rulerec in rules loop
1291: l_doc_source := '/* Rule Set Name : ' || rulerec.rule_set_name ||'
1710:
1711: end if;
1712:
1713: IF PG_DEBUG in ('Y', 'C') THEN
1714: arp_standard.debug('ARP_APP_CALC_PKG.COMPILE_RULE()-');
1715: END IF;
1716:
1717: EXCEPTION
1718: WHEN OTHERS THEN
1716:
1717: EXCEPTION
1718: WHEN OTHERS THEN
1719: IF PG_DEBUG in ('Y', 'C') THEN
1720: arp_util.debug('EXCEPTION: ARP_APP_CALC_PKG.compile_rule'||SQLERRM);
1721: END IF;
1722: RAISE;
1723:
1724: end COMPILE_RULE;
1722: RAISE;
1723:
1724: end COMPILE_RULE;
1725:
1726: end ARP_APP_CALC_PKG;