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