[Home] [Help]
PACKAGE BODY: APPS.OKL_LOSS_PROV_PUB
Source
1 PACKAGE BODY OKL_LOSS_PROV_PUB as
2 /* $Header: OKLPLPVB.pls 120.2 2005/10/30 04:25:51 appldev noship $ */
3
4 -- this function is used to calculate capital balance for a contract and deal type
5 FUNCTION calculate_capital_balance (
6 p_cntrct_id IN NUMBER
7 ,p_deal_type IN VARCHAR2) RETURN NUMBER
8 IS
9 l_capital_balance NUMBER;
10
11 BEGIN
12
13 l_capital_balance := okl_loss_prov_pvt.calculate_capital_balance (p_cntrct_id, p_deal_type);
14
15 /* return the calculated net book value */
16 RETURN(l_capital_balance);
17
18 EXCEPTION
19 WHEN OTHERS THEN
20 /* return null because of error */
21 RETURN(NULL);
22
23 END calculate_capital_balance;
24
25 -- this function is used to calculate total reserve amt for a contract
26 FUNCTION calculate_cntrct_rsrv_amt (
27 p_cntrct_id IN NUMBER) RETURN NUMBER
28 IS
29 l_rsrv_amt NUMBER;
30
31 BEGIN
32
33 l_rsrv_amt := okl_loss_prov_pvt.calculate_cntrct_rsrv_amt(p_cntrct_id);
34
35 /* return the calculated net book value */
36 RETURN(l_rsrv_amt);
37
38 EXCEPTION
39 WHEN OTHERS THEN
40
41 /* return null because of error */
42 RETURN(NULL);
43
44 END calculate_cntrct_rsrv_amt;
45
46
47 -- this function is used to calculate general loss provision and create a transaction
48 FUNCTION SUBMIT_GENERAL_LOSS(
49 p_api_version IN NUMBER,
50 p_init_msg_list IN VARCHAR2,
51 x_return_status OUT NOCOPY VARCHAR2,
52 x_msg_count OUT NOCOPY NUMBER,
53 x_msg_data OUT NOCOPY VARCHAR2,
54 p_glpv_rec IN glpv_rec_type) RETURN NUMBER
55 IS
56
57 l_request_id NUMBER;
58 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
59 l_api_name CONSTANT VARCHAR2(30) := 'SUBMIT_GENERAL_LOSS';
60 l_glpv_rec glpv_rec_type := p_glpv_rec;
61 BEGIN
62 x_return_status := FND_API.G_RET_STS_SUCCESS;
63 -- customer pre-processing
64
65
66
67 -- CALL THE MAIN PROCEDURE
68 l_request_id := okl_loss_prov_pvt.SUBMIT_GENERAL_LOSS(
69 x_return_status => l_return_status,
70 x_msg_count => x_msg_count,
71 x_msg_data => x_msg_data,
72 p_api_version => p_api_version,
73 p_init_msg_list => p_init_msg_list,
74 p_glpv_rec => p_glpv_rec);
75
76 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
77 RAISE FND_API.G_EXC_ERROR;
78 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
79 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
80 END IF;
81
82 -- customer post-processing
83
84
85 RETURN l_request_id;
86
87 EXCEPTION
88 WHEN FND_API.G_EXC_ERROR THEN
89 x_return_status := FND_API.G_RET_STS_ERROR;
90
91 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
92 ,p_count => x_msg_count
93 ,p_data => x_msg_data);
94 RETURN l_request_id;
95
96 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
97 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
98 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
99 ,p_count => x_msg_count
100 ,p_data => x_msg_data);
101 RETURN l_request_id;
102
103 WHEN OTHERS THEN
104 FND_MSG_PUB.ADD_EXC_MSG('OKL_LOSS_PROV_PUB','SUBMIT_GENERAL_LOSS');
105 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
106 ,p_count => x_msg_count
107 ,p_data => x_msg_data);
108 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
109 RETURN l_request_id;
110
111 END SUBMIT_GENERAL_LOSS;
112
113
114 -- this procedure is used create a specific loss provision
115 PROCEDURE SPECIFIC_LOSS_PROVISION (
116 p_api_version IN NUMBER
117 ,p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE
118 ,x_msg_count OUT NOCOPY NUMBER
119 ,x_msg_data OUT NOCOPY VARCHAR2
120 ,x_return_status OUT NOCOPY VARCHAR2
121 ,p_slpv_rec IN slpv_rec_type)
122 IS
123
124 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
125 l_api_name CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
126 l_slpv_rec slpv_rec_type := p_slpv_rec;
127
128 BEGIN
129 x_return_status := OKL_API.G_RET_STS_SUCCESS;
130
131 -- customer pre-processing
132
133
134
135 -- CALL THE MAIN PROCEDURE
136
137 okl_loss_prov_pvt.SPECIFIC_LOSS_PROVISION(
138 p_api_version => p_api_version
139 ,p_init_msg_list => p_init_msg_list
140 ,x_msg_count => x_msg_count
141 ,x_msg_data => x_msg_data
142 ,x_return_status => x_return_status
143 ,p_slpv_rec => p_slpv_rec);
144
145 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
146 RAISE FND_API.G_EXC_ERROR;
147 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
148 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
149 END IF;
150
151 -- customer post-processing
152
153
154 EXCEPTION
155 WHEN FND_API.G_EXC_ERROR THEN
156 x_return_status := FND_API.G_RET_STS_ERROR;
157
158 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
159 ,p_count => x_msg_count
160 ,p_data => x_msg_data);
161
162 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
163 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
164 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
165 ,p_count => x_msg_count
166 ,p_data => x_msg_data);
167
168 WHEN OTHERS THEN
169 FND_MSG_PUB.ADD_EXC_MSG('OKL_LOSS_PROV_PUB','SPECIFIC_LOSS_PROVISION');
170 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
171 ,p_count => x_msg_count
172 ,p_data => x_msg_data);
173 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
174
175 END SPECIFIC_LOSS_PROVISION;
176
177 PROCEDURE SPECIFIC_LOSS_PROVISION (
178 p_api_version IN NUMBER
179 ,p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE
180 ,x_msg_count OUT NOCOPY NUMBER
181 ,x_msg_data OUT NOCOPY VARCHAR2
182 ,x_return_status OUT NOCOPY VARCHAR2
183 ,p_khr_id IN NUMBER
184 ,p_reverse_flag IN VARCHAR2
185 ,p_slpv_tbl IN slpv_tbl_type)
186 IS
187
188 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
189 l_api_name CONSTANT VARCHAR2(30) := 'SPECIFIC_LOSS_PROVISION';
190 l_slpv_rec slpv_rec_type;
191
192 BEGIN
193 x_return_status := OKL_API.G_RET_STS_SUCCESS;
194
195 FOR x IN p_slpv_tbl.FIRST..p_slpv_tbl.LAST
196 LOOP
197 l_slpv_rec := NULL;
198
199 l_slpv_rec.khr_id := p_khr_id;
200 l_slpv_rec.sty_id := p_slpv_tbl(x).sty_id;
201 l_slpv_rec.amount := p_slpv_tbl(x).amount;
202 l_slpv_rec.description := p_slpv_tbl(x).description;
203 l_slpv_rec.tax_deductible_local := p_slpv_tbl(x).tax_deductible_local;
204 l_slpv_rec.tax_deductible_corporate := p_slpv_tbl(x).tax_deductible_corporate;
205 l_slpv_rec.provision_date := p_slpv_tbl(x).provision_date;
206 IF x = 1 THEN
207 l_slpv_rec.reverse_flag := p_reverse_flag;
208 ELSE
209 l_slpv_rec.reverse_flag := NULL;
210 END IF;
211
212 okl_loss_prov_pvt.SPECIFIC_LOSS_PROVISION(
213 p_api_version => p_api_version
214 ,p_init_msg_list => p_init_msg_list
215 ,x_msg_count => x_msg_count
216 ,x_msg_data => x_msg_data
217 ,x_return_status => x_return_status
218 ,p_slpv_rec => l_slpv_rec);
219
220 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
221 RAISE FND_API.G_EXC_ERROR;
222 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
223 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
224 END IF;
225
226 END LOOP;
227
228
229 EXCEPTION
230 WHEN FND_API.G_EXC_ERROR THEN
231 x_return_status := FND_API.G_RET_STS_ERROR;
232
233 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
234 ,p_count => x_msg_count
235 ,p_data => x_msg_data);
236
237 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
238 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
239 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
240 ,p_count => x_msg_count
241 ,p_data => x_msg_data);
242
243 WHEN OTHERS THEN
244 FND_MSG_PUB.ADD_EXC_MSG('OKL_LOSS_PROV_PUB','SPECIFIC_LOSS_PROVISION');
245 FND_MSG_PUB.Count_and_get(p_encoded => OKL_API.G_FALSE
246 ,p_count => x_msg_count
247 ,p_data => x_msg_data);
248 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
249
250 END SPECIFIC_LOSS_PROVISION;
251
252 END OKL_LOSS_PROV_PUB;