DBA Data[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;