[Home] [Help]
PACKAGE BODY: APPS.OKC_AR_INT_PUB
Source
1 PACKAGE BODY okc_ar_int_pub AS
2 /* $Header: OKCPARXB.pls 120.0 2005/05/25 22:34:26 appldev noship $ */
3
4 l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5
6 -- ----------------------------------------------------------------------------
7 -- | Private Global Definitions |
8 -- ----------------------------------------------------------------------------
9 --
10 --
11 g_package varchar2(30) := ' okc_ar_int_pub.'; -- Global package name
12 --
13
14 ---------------------------------------------------------------------------
15 -- PROCEDURE get_contract_contingencies
16 ---------------------------------------------------------------------------
17 PROCEDURE get_contract_contingencies
18 ( p_api_version IN NUMBER,
19 p_init_msg_list IN VARCHAR2 ,
20 p_contract_id IN NUMBER,
21 p_contract_line_id IN NUMBER,
22 x_contract_contingencies_tbl OUT NOCOPY contract_contingency_tbl_type,
23 x_return_status OUT NOCOPY VARCHAR2,
24 x_msg_count OUT NOCOPY NUMBER,
25 x_msg_data OUT NOCOPY VARCHAR2
26 ) IS
27 /*
28 */
29 -- local variables and cursors
30
31 l_proc varchar2(72) := g_package||'get_contract_contingencies';
32
33 -- list of Rules in seeded Rule Group
34 CURSOR csr_seeded_rules IS
35 SELECT lookup_code
36 FROM fnd_lookups
37 WHERE lookup_type = 'OKC_CONTINGENCY_RULES';
38
39 -- rule at line level
40 CURSOR csr_line_rules(p_rule_code IN VARCHAR2, p_cle_id IN NUMBER, p_chr_id IN NUMBER) IS
41 SELECT rule_information1, rule_information2,
42 rule_information3, rule_information4
43 FROM okc_rule_groups_b rgb,
44 okc_rules_b rul
45 WHERE rgb.id = rul.rgp_id
46 AND rgb.rgd_code = 'REVENUE_CONTINGENCY_RULES'
47 AND rgb.dnz_chr_id = p_chr_id
48 AND rgb.cle_id = p_cle_id
49 AND rul.rule_information_category = p_rule_code;
50
51 -- rule at header level
52 CURSOR csr_header_rules(p_rule_code IN VARCHAR2, p_chr_id IN NUMBER) IS
53 SELECT rule_information1, rule_information2,
54 rule_information3, rule_information4
55 FROM okc_rule_groups_b rgb,
56 okc_rules_b rul
57 WHERE rgb.id = rul.rgp_id
58 AND rgb.rgd_code = 'REVENUE_CONTINGENCY_RULES'
59 AND rgb.chr_id = p_chr_id
60 AND rul.rule_information_category = p_rule_code;
61
62
63 l_rule_code fnd_lookups.lookup_code%TYPE;
64 l_rule_information1 okc_rules_b.rule_information1%TYPE;
65 l_rule_information2 okc_rules_b.rule_information2%TYPE;
66 l_rule_information3 okc_rules_b.rule_information3%TYPE;
67 l_rule_information4 okc_rules_b.rule_information4%TYPE;
68 i BINARY_INTEGER :=1;
69
70 BEGIN
71 IF (l_debug = 'Y') THEN
72 okc_debug.Set_Indentation(l_proc);
73 okc_debug.Log('10: Entering ',2);
74 okc_debug.Log('50: Contract Id : '||p_contract_id,2);
75 okc_debug.Log('100: Line Id : '||p_contract_line_id,2);
76 END IF;
77
78 x_return_status := OKC_API.G_RET_STS_SUCCESS;
79
80 OPEN csr_seeded_rules;
81 LOOP
82
83 FETCH csr_seeded_rules INTO l_rule_code;
84 EXIT WHEN csr_seeded_rules%NOTFOUND;
85
86 -- check if this rule exists at line level
87 OPEN csr_line_rules(p_rule_code => l_rule_code,
88 p_cle_id => p_contract_line_id,
89 p_chr_id => p_contract_id );
90 FETCH csr_line_rules INTO l_rule_information1, l_rule_information2,
91 l_rule_information3, l_rule_information4;
92 -- check if record found
93 IF csr_line_rules%FOUND THEN
94 -- populate OUT RECORD
95 x_contract_contingencies_tbl(i).CONTINGENCY_TYPE := l_rule_code;
96 x_contract_contingencies_tbl(i).CONTINGENCY_PRESENT_YN := 'Y';
97 x_contract_contingencies_tbl(i).EXPIRATION_DATE := to_date(l_rule_information1,'YYYY/MM/DD');
98 x_contract_contingencies_tbl(i).EXPIRATION_START_EVENT := l_rule_information2;
99 x_contract_contingencies_tbl(i).EXPIRATION_DURATION := l_rule_information3;
100 x_contract_contingencies_tbl(i).DURATION_UOM := l_rule_information4;
101 i := i + 1;
102 ELSE
103 -- check at header level
104 OPEN csr_header_rules(p_rule_code => l_rule_code,
105 p_chr_id => p_contract_id );
106 FETCH csr_header_rules INTO l_rule_information1, l_rule_information2,
107 l_rule_information3, l_rule_information4;
108
109 -- check if record found
110 IF csr_header_rules%FOUND THEN
111 -- populate OUT RECORD
112 x_contract_contingencies_tbl(i).CONTINGENCY_TYPE := l_rule_code;
113 x_contract_contingencies_tbl(i).CONTINGENCY_PRESENT_YN := 'Y';
114 x_contract_contingencies_tbl(i).EXPIRATION_DATE := to_date(l_rule_information1,'YYYY/MM/DD');
115 x_contract_contingencies_tbl(i).EXPIRATION_START_EVENT := l_rule_information2;
116 x_contract_contingencies_tbl(i).EXPIRATION_DURATION := l_rule_information3;
117 x_contract_contingencies_tbl(i).DURATION_UOM := l_rule_information4;
118 i := i + 1;
119 END IF; -- csr_header_rules%FOUND
120
121 CLOSE csr_header_rules;
122
123 END IF; -- csr_line_rules%FOUND
124
125 CLOSE csr_line_rules;
126
127
128
129 END LOOP; -- csr_seeded_rules
130 CLOSE csr_seeded_rules;
131
132
133 IF (l_debug = 'Y') THEN
134 okc_debug.Log('x_return_status : '||x_return_status,2);
135 okc_debug.Log('1000: Leaving ',2);
136 okc_debug.Reset_Indentation;
137 END IF;
138
139 EXCEPTION
140 WHEN OTHERS THEN
141 OKC_API.set_message(p_app_name => g_app_name,
142 p_msg_name => g_unexpected_error,
143 p_token1 => g_sqlcode_token,
144 p_token1_value => sqlcode,
145 p_token2 => g_sqlerrm_token,
146 p_token2_value => sqlerrm);
147 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
148 IF (l_debug = 'Y') THEN
149 okc_debug.Log('x_return_status : '||x_return_status,2);
150 END IF;
151 END get_contract_contingencies;
152
153
154
155 END okc_ar_int_pub;