[Home] [Help]
PACKAGE BODY: APPS.OKL_K_RATE_PARAMS_PVT
Source
1 PACKAGE BODY OKL_K_RATE_PARAMS_PVT AS
2 /* $Header: OKLRKRPB.pls 120.33.12020000.3 2012/08/28 14:13:27 racheruv ship $ */
3
4 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
5 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7
8 -- GLOBAL VARIABLES
9 G_MISS_NUM CONSTANT NUMBER := FND_API.G_MISS_NUM;
10 G_MISS_CHAR CONSTANT VARCHAR2(1) := FND_API.G_MISS_CHAR;
11 G_MISS_DATE CONSTANT DATE := FND_API.G_MISS_DATE;
12 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
13 G_BULK_SIZE CONSTANT NUMBER := 10000;
14 G_OKL_LLA_VAR_RATE_ERROR CONSTANT VARCHAR2(30) := 'OKL_LLA_VAR_RATE_ERROR';
15 G_LEASE_TYPE CONSTANT VARCHAR2(30) := 'LEASE_TYPE';
16 G_INT_BASIS CONSTANT VARCHAR2(30) := 'INT_BASIS';
17 G_OKL_LLA_VAR_RATE_MISSING CONSTANT VARCHAR2(30) := 'OKL_LLA_VAR_RATE_MISSING';
18 G_CONT_ID CONSTANT VARCHAR2(30) := 'CONT_ID';
19 G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKL_API.G_REQUIRED_VALUE;
20 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
21
22 -- smadhava Bug#4542290 - 22-Aug-2005 - Added - Start
23 G_OKL_LLA_REBOOK_INVALID CONSTANT VARCHAR2(30) := 'OKL_LLA_REBOOK_INVALID';
24 G_OKL_LLA_RBK_INT_PROC_INVAL CONSTANT VARCHAR2(30) := 'OKL_LLA_RBK_INT_PROCESS_INVAL';
25 G_OKL_LLA_RBK_DATE_BILL_INVAL CONSTANT VARCHAR2(30) := 'OKL_LLA_RBK_DATE_BILL_INVAL';
26 G_OKL_LLA_RBK_DATE_ACCR_INVAL CONSTANT VARCHAR2(30) := 'OKL_LLA_RBK_DATE_ACCRUE_INVAL';
27
28 -- Bug# 13831818
29 G_OKL_LLA_RBK_INT_CAL_DT_INV CONSTANT VARCHAR2(30) := 'OKL_LLA_RBK_DATE_INVALID';
30
31 G_BOOK_CLASS CONSTANT VARCHAR2(30) := 'BOOK_CLASS';
32 G_INT_CALC_BASIS CONSTANT VARCHAR2(30) := 'INT_CAL';
33 G_STREAM CONSTANT VARCHAR2(30) := 'STREAM';
34
35 G_BOOK_CLASS_OP CONSTANT OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE := 'LEASEOP';
36 G_BOOK_CLASS_DF CONSTANT OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE := 'LEASEDF';
37 G_BOOK_CLASS_ST CONSTANT OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE := 'LEASEST';
38 G_BOOK_CLASS_LOAN CONSTANT OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE := 'LOAN';
39 G_BOOK_CLASS_REVLOAN CONSTANT OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE := 'LOAN-REVOLVING';
40
41 G_ICB_FIXED CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE := 'FIXED';
42 G_ICB_FLOAT_FACTOR CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE := 'FLOAT_FACTORS';
43 G_ICB_FLOAT CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE := 'FLOAT';
44 G_ICB_REAMORT CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE := 'REAMORT';
45 G_ICB_CATCHUP_CLEANUP CONSTANT OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE := 'CATCHUP/CLEANUP';
46
47 G_RRM_EST_ACTUAL CONSTANT OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE := 'ESTIMATED_AND_ACTUAL';
48 G_RRM_ACTUAL CONSTANT OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE := 'ACTUAL';
49
50 G_STRM_RENT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'RENT';
51 G_STRM_RENT_ACCRUAL CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'RENT_ACCRUAL';
52 G_STRM_PRE_TAX CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'LEASE_INCOME';
53 G_STRM_INT_INCOME CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'INTEREST_INCOME';
54 G_STRM_LOAN_PAYMENT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'LOAN_PAYMENT';
55 G_STRM_VAR_INT_INCOME CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'VARIABLE_INTEREST_INCOME';
56 /* 13394074 */
57 G_STRM_VAR_LOAN_PAYMENT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'VARIABLE_LOAN_PAYMENT';
58 G_STRM_VAR_INT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'VARIABLE_INTEREST';
59 G_STRM_PRINCIPAL_PAYMENT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'PRINCIPAL_PAYMENT';
60 G_STRM_INTEREST_PAYMENT CONSTANT OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE := 'INTEREST_PAYMENT';
61 G_RRM_EST_BILLED CONSTANT OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE := 'ESTIMATED_AND_BILLED';
62 /* 13394074 */
63
64 G_COL_NAME CONSTANT VARCHAR2(30) := OKC_API.G_COL_NAME_TOKEN;
65 G_DUE_DATE CONSTANT VARCHAR2(30) := 'DUE_DATE';
66 -- smadhava Bug#4542290 - 22-Aug-2005 - Added - End
67
68
69 procedure print_krpv_rec(p_krpv_rec IN krpv_rec_type) IS
70 begin
71
72 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
73 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KHR_ID=' || p_krpv_rec.KHR_ID);
74 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'parameter_type_code=' || p_krpv_rec.PARAMETER_TYPE_CODE);
75 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'effective_from_date=' || p_krpv_rec.EFFECTIVE_FROM_DATE);
76 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'effective_to_date=' || p_krpv_rec.EFFECTIVE_TO_DATE);
77 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'interest_index_id= '|| p_krpv_rec.INTEREST_INDEX_ID);
78 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'base_rate=' || p_krpv_rec.BASE_RATE);
79 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'interest_start_date=' || p_krpv_rec.INTEREST_START_DATE);
80 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'adder_rate='|| p_krpv_rec.ADDER_RATE);
81 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'maximum_rate=' || p_krpv_rec.MAXIMUM_RATE);
82 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'minimum_rate=' || p_krpv_rec.MINIMUM_RATE);
83 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'principal_basis_code='|| p_krpv_rec.PRINCIPAL_BASIS_CODE);
84 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'days_in_a_month_code='|| p_krpv_rec.DAYS_IN_A_MONTH_CODE);
85 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'days_in_a_year_code='|| p_krpv_rec.DAYS_IN_A_YEAR_CODE);
86 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'interest_basis_code='|| p_krpv_rec.INTEREST_BASIS_CODE);
87 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rate_delay_code='|| p_krpv_rec.RATE_DELAY_CODE);
88 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rate_delay_frequency=' || p_krpv_rec.RATE_DELAY_FREQUENCY);
89 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'compounding_frequency_code=' || p_krpv_rec.COMPOUNDING_FREQUENCY_CODE);
90 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'calculation_formula_id=' || p_krpv_rec.CALCULATION_FORMULA_ID);
91 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'catchup_frequency_code='|| p_krpv_rec.CATCHUP_frequency_code);
92 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'catchup_basis_code='|| p_krpv_rec.CATCHUP_BASIS_CODE);
93 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'catchup_start_date='|| p_krpv_rec.CATCHUP_START_DATE);
94 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'catchup_settlement_code='|| p_krpv_rec.CATCHUP_SETTLEMENT_CODE);
95 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rate_change_start_date='|| p_krpv_rec.RATE_CHANGE_START_DATE);
96 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rate_change_frequency_code=' || p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE);
97 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'rate_change_value=' || p_krpv_rec.RATE_CHANGE_VALUE);
98 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'conversion_option_code=' || p_krpv_rec.CONVERSION_OPTION_CODE);
99 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'next_conversion_date=' || p_krpv_rec.NEXT_CONVERSION_DATE);
100 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'conversion_type_code=' || p_krpv_rec.CONVERSION_TYPE_CODE);
101 END IF;
102 /*print(' p_krpv_rec.ATTRIBUTE_CATEGORY,
103 print(' p_krpv_rec.ATTRIBUTE1,
104 print(' p_krpv_rec.ATTRIBUTE2,
105 print(' p_krpv_rec.ATTRIBUTE3,
106 print(' p_krpv_rec.ATTRIBUTE4,
107 print(' p_krpv_rec.ATTRIBUTE5,
108 print(' p_krpv_rec.ATTRIBUTE6,
109 print(' p_krpv_rec.ATTRIBUTE7,
110 print(' p_krpv_rec.ATTRIBUTE8,
111 print(' p_krpv_rec.ATTRIBUTE9,
112 print(' p_krpv_rec.ATTRIBUTE10,
113 print(' p_krpv_rec.ATTRIBUTE11,
114 print(' p_krpv_rec.ATTRIBUTE12,
115 print(' p_krpv_rec.ATTRIBUTE13,
116 print(' p_krpv_rec.ATTRIBUTE14,
117 print(' p_krpv_rec.ATTRIBUTE15,
118 print(' p_krpv_rec.CREATED_BY,
119 print(' p_krpv_rec.CREATION_DATE,
120 print(' p_krpv_rec.LAST_UPDATED_BY,
121 print(' p_krpv_rec.LAST_UPDATE_DATE,
122 print(' p_krpv_rec.LAST_UPDATE_LOGIN */
123 end;
124
125 FUNCTION interest_processing(p_chr_id IN NUMBER,
126 x_contract_number OUT NOCOPY VARCHAR2,
127 x_contract_start_date OUT NOCOPY DATE )
128 RETURN BOOLEAN IS
129 l_interest_date DATE;
130 l_billable_stream_exists VARCHAR2(1) := 'N';
131 l_orig_system_id1 okc_k_headers_b.orig_system_id1%type;
132 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%type;
133 BEGIN
134 SELECT A.DATE_LAST_INTERIM_INTEREST_CAL,
135 B.CONTRACT_NUMBER,
136 B.START_DATE,
137 B.ORIG_SYSTEM_ID1,
138 B.ORIG_SYSTEM_SOURCE_CODE
139 INTO l_interest_date,
140 x_contract_number,
141 x_contract_start_date,
142 l_orig_system_id1,
143 l_orig_system_source_code
144 FROM OKL_K_HEADERS A,
145 OKC_K_HEADERS_B B
146 WHERE A.ID = p_chr_id
147 AND A.ID = B.ID;
148 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
149 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_interest_date=' ||l_interest_date);
150 END IF;
151
152 IF (l_interest_date IS NULL) THEN
153
154 -- Bug 4905142
155 -- Check if billable streams exists in which case billing has been run
156 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
157 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Yes, l_interest_date is NULL...');
158 END IF;
159 Begin
160 SELECT 'Y'
161 INTO l_billable_stream_exists
162 FROM OKL_STREAMS A, OKL_STRM_TYPE_B C WHERE A.KHR_ID=p_chr_id
163 AND EXISTS (
164 SELECT 'X' FROM OKL_STRM_ELEMENTS B
165 WHERE B.STM_ID = A.ID
166 AND B.DATE_BILLED IS NOT NULL)
167 AND A.STY_ID = C.ID
168 AND C.BILLABLE_YN='Y'
169 AND A.SAY_CODE <> 'HIST'
170 AND ROWNUM < 2;
171
172 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
173 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_billable_stream_exists=' || l_billable_stream_exists);
174 END IF;
175
176 Exception when no_data_found then
177
178 If (l_orig_system_source_code = 'OKL_REBOOK') Then -- 4905142
179 Begin
180 SELECT 'Y'
181 INTO l_billable_stream_exists
182 FROM OKL_STREAMS A, OKL_STRM_TYPE_B C WHERE A.KHR_ID=l_orig_system_id1
183 AND EXISTS (
184 SELECT 'X' FROM OKL_STRM_ELEMENTS B
185 WHERE B.STM_ID = A.ID
186 AND B.DATE_BILLED IS NOT NULL)
187 AND A.STY_ID = C.ID
188 AND C.BILLABLE_YN='Y'
189 AND A.SAY_CODE <> 'HIST'
190 AND ROWNUM < 2;
191
192 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
193 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'2.l_billable_stream_exists=' || l_billable_stream_exists);
194 END IF;
195 exception when others then
196 l_billable_stream_exists := 'N';
197 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
198 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Exception...sqlcode=' || sqlcode);
199 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Exception...sqlerrm=' || sqlerrm);
200 END IF;
201 End;
202 End If;
203
204 WHEN OTHERS THEN
205 l_billable_stream_exists := 'N';
206 End;
207
208 IF (NVL(l_billable_stream_exists,'N') = 'Y') THEN -- 4905142
209 RETURN(TRUE);
210 ELSE
211 RETURN(FALSE);
212 END IF;
213 ELSE
214 RETURN(TRUE);
215 END IF;
216 END;
217
218 FUNCTION Is_Rebook_Copy (p_chr_id IN NUMBER) return BOOLEAN IS
219 Cursor Rbk_Cpy_Csr(p_chr_id IN Number) is
220 Select orig_system_source_code
221 From okc_k_headers_b chr
222 --where chr.orig_system_source_code = 'OKL_REBOOK'
223 where chr.id = p_chr_id;
224
225 l_rbk_cpy BOOLEAN := FALSE;
226 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%type;
227 Begin
228 Open Rbk_Cpy_Csr(p_chr_id => p_chr_id);
229 Fetch Rbk_Cpy_Csr into l_orig_system_source_code;
230 Close Rbk_Cpy_Csr;
231 IF (nvl(l_orig_system_source_code,'?') = 'OKL_REBOOK') THEN
232 l_rbk_cpy := TRUE;
233 ELSE
234 l_rbk_cpy := FALSE;
235 END IF;
236 Return (l_rbk_cpy);
237 End Is_Rebook_Copy;
238
239 PROCEDURE get_effective_from_date(
240 p_api_version IN NUMBER,
241 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
242 x_return_status OUT NOCOPY VARCHAR2,
243 x_msg_count OUT NOCOPY NUMBER,
244 x_msg_data OUT NOCOPY VARCHAR2,
245 p_chr_id IN OKC_K_HEADERS_B.ID%TYPE,
246 x_effective_from_date OUT NOCOPY DATE,
247 x_no_data_found OUT NOCOPY BOOLEAN) IS
248 CURSOR effective_from_date_csr(p_id NUMBER) IS
249 SELECT MAX(EFFECTIVE_FROM_DATE)
250 FROM OKL_K_RATE_PARAMS
251 WHERE KHR_ID = p_id
252 AND EFFECTIVE_TO_DATE IS NULL;
253 BEGIN
254 x_return_status := OKL_API.G_RET_STS_SUCCESS;
255
256 OPEN effective_from_date_csr(p_chr_id);
257 FETCH effective_from_date_csr
258 INTO x_effective_from_date;
259 IF effective_from_date_csr%NOTFOUND THEN
260 x_no_data_found := TRUE;
261 ELSE
262 x_no_data_found := FALSE;
263 END IF;
264 CLOSE effective_from_date_csr;
265 EXCEPTION WHEN OTHERS THEN
266 x_return_status := OKL_API.G_RET_STS_ERROR;
267 END;
268
269 procedure get_product(
270 p_api_version IN NUMBER,
271 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
272 x_return_status OUT NOCOPY VARCHAR2,
273 x_msg_count OUT NOCOPY NUMBER,
274 x_msg_data OUT NOCOPY VARCHAR2,
275 p_khr_id IN okc_k_headers_b.id%type,
276 x_pdt_parameter_rec OUT NOCOPY OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type)
277 IS
278
279 l_api_name CONSTANT VARCHAR2(30) := 'get_product';
280 l_api_version CONSTANT NUMBER := 1.0;
281
282 p_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
283 --x_pdt_parameter_rec2 OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
284 x_no_data_found BOOLEAN;
285
286 CURSOR l_hdr_csr( chrId NUMBER ) IS
287 SELECT
288 CHR.authoring_org_id,
289 CHR.inv_organization_id,
290 khr.deal_type,
291 pdt.id pid,
292 NVL(pdt.reporting_pdt_id, -1) report_pdt_id
293 FROM okc_k_headers_b CHR,
294 okl_k_headers khr,
295 okl_products_v pdt
296 WHERE khr.id = CHR.id
297 AND CHR.id = chrId
298 AND khr.pdt_id = pdt.id;
299
300 l_hdr_rec l_hdr_csr%ROWTYPE;
301
302 begin
303 x_return_status := OKL_API.G_RET_STS_SUCCESS;
304 OPEN l_hdr_csr(p_khr_id);
305 FETCH l_hdr_csr INTO l_hdr_rec;
306 IF l_hdr_csr%NOTFOUND THEN
307 CLOSE l_hdr_csr;
308 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
309 END IF;
310 CLOSE l_hdr_csr;
311
312 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
313 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In get_product: deal_type=' || l_hdr_rec.deal_type);
314 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pid=' || l_hdr_rec.pid);
315 END IF;
316
317 p_pdtv_rec.id := l_hdr_rec.pid;
318
319 OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
320 p_api_version => p_api_version,
321 p_init_msg_list => p_init_msg_list,
322 x_return_status => x_return_status,
323 x_msg_count => x_msg_count,
324 x_msg_data => x_msg_data,
325 p_pdtv_rec => p_pdtv_rec,
326 x_no_data_found => x_no_data_found,
327 p_pdt_parameter_rec => x_pdt_parameter_rec);
328
329 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
330 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
331 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
332 RAISE OKL_API.G_EXCEPTION_ERROR;
333 ELSIF NVL(x_pdt_parameter_rec.Name,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
334 x_return_status := OKL_API.G_RET_STS_ERROR;
335 RAISE OKL_API.G_EXCEPTION_ERROR;
336 END IF;
337 --x_pdt_parameter_rec := x_pdt_parameter_rec2;
338 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
339 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_pdt_parameter_rec.name=' || x_pdt_parameter_rec.name);
340 END IF;
341 EXCEPTION WHEN OTHERS
342 THEN
343 NULL;
344
345 END;
346
347 procedure get_product2(
348 p_api_version IN NUMBER,
349 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
350 x_return_status OUT NOCOPY VARCHAR2,
351 x_msg_count OUT NOCOPY NUMBER,
352 x_msg_data OUT NOCOPY VARCHAR2,
353 p_khr_id IN okc_k_headers_b.id%type,
354 x_product_id OUT NOCOPY NUMBER,
355 x_pdt_parameter_rec OUT NOCOPY OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type)
356 IS
357
358 l_api_name CONSTANT VARCHAR2(30) := 'get_product2';
359 l_api_version CONSTANT NUMBER := 1.0;
360
361 p_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
362 --x_pdt_parameter_rec2 OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
363 x_no_data_found BOOLEAN;
364
365 CURSOR l_hdr_csr( chrId NUMBER ) IS
366 SELECT
367 CHR.authoring_org_id,
368 CHR.inv_organization_id,
369 khr.deal_type,
370 pdt.id pid,
371 NVL(pdt.reporting_pdt_id, -1) report_pdt_id
372 FROM okc_k_headers_b CHR,
373 okl_k_headers khr,
374 okl_products_v pdt
375 WHERE khr.id = CHR.id
376 AND CHR.id = chrId
377 AND khr.pdt_id = pdt.id;
378
379 l_hdr_rec l_hdr_csr%ROWTYPE;
380
381 begin
382 x_return_status := OKL_API.G_RET_STS_SUCCESS;
383 OPEN l_hdr_csr(p_khr_id);
384 FETCH l_hdr_csr INTO l_hdr_rec;
385 IF l_hdr_csr%NOTFOUND THEN
386 CLOSE l_hdr_csr;
387 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
388 END IF;
389 CLOSE l_hdr_csr;
390
391 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
392 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In get_product2: deal_type=' || l_hdr_rec.deal_type);
393 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pid=' || l_hdr_rec.pid);
394 END IF;
395
396 p_pdtv_rec.id := l_hdr_rec.pid;
397 x_product_id := l_hdr_rec.pid;
398
399 OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
400 p_api_version => p_api_version,
401 p_init_msg_list => p_init_msg_list,
402 x_return_status => x_return_status,
403 x_msg_count => x_msg_count,
404 x_msg_data => x_msg_data,
405 p_pdtv_rec => p_pdtv_rec,
406 x_no_data_found => x_no_data_found,
407 p_pdt_parameter_rec => x_pdt_parameter_rec);
408
409 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
410 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
411 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
412 RAISE OKL_API.G_EXCEPTION_ERROR;
413 ELSIF NVL(x_pdt_parameter_rec.Name,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
414 x_return_status := OKL_API.G_RET_STS_ERROR;
415 RAISE OKL_API.G_EXCEPTION_ERROR;
416 END IF;
417 --x_pdt_parameter_rec := x_pdt_parameter_rec2;
418 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
419 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_pdt_parameter_rec.name=' || x_pdt_parameter_rec.name);
420 END IF;
421 EXCEPTION WHEN OTHERS
422 THEN
423 NULL;
424
425 END;
426
427 PROCEDURE get_rate_rec(p_chr_id IN NUMBER,
428 p_parameter_type_code IN VARCHAR2,
429 p_effective_from_date IN DATE,
430 x_krpv_rec OUT NOCOPY krpv_rec_type,
431 x_no_data_found OUT NOCOPY BOOLEAN
432 ) IS
433 CURSOR okl_k_rate_params_v_u1_csr (p_effective_from_date IN DATE,
434 p_khr_id IN NUMBER,
435 p_parameter_type_code IN VARCHAR2) IS
436 SELECT
437 KHR_ID,
438 PARAMETER_TYPE_CODE,
439 EFFECTIVE_FROM_DATE,
440 EFFECTIVE_TO_DATE,
441 INTEREST_INDEX_ID,
442 BASE_RATE,
443 INTEREST_START_DATE,
444 ADDER_RATE,
445 MAXIMUM_RATE,
446 MINIMUM_RATE,
447 PRINCIPAL_BASIS_CODE,
448 DAYS_IN_A_MONTH_CODE,
449 DAYS_IN_A_YEAR_CODE,
450 INTEREST_BASIS_CODE,
451 RATE_DELAY_CODE,
452 RATE_DELAY_FREQUENCY,
453 COMPOUNDING_FREQUENCY_CODE,
454 CALCULATION_FORMULA_ID,
455 CATCHUP_BASIS_CODE,
456 CATCHUP_START_DATE,
457 CATCHUP_SETTLEMENT_CODE,
458 RATE_CHANGE_START_DATE,
459 RATE_CHANGE_FREQUENCY_CODE,
460 RATE_CHANGE_VALUE,
461 CONVERSION_OPTION_CODE,
462 NEXT_CONVERSION_DATE,
463 CONVERSION_TYPE_CODE,
464 ATTRIBUTE_CATEGORY,
465 ATTRIBUTE1,
466 ATTRIBUTE2,
467 ATTRIBUTE3,
468 ATTRIBUTE4,
469 ATTRIBUTE5,
470 ATTRIBUTE6,
471 ATTRIBUTE7,
472 ATTRIBUTE8,
473 ATTRIBUTE9,
474 ATTRIBUTE10,
475 ATTRIBUTE11,
476 ATTRIBUTE12,
477 ATTRIBUTE13,
478 ATTRIBUTE14,
479 ATTRIBUTE15,
480 CREATED_BY,
481 CREATION_DATE,
482 LAST_UPDATED_BY,
483 LAST_UPDATE_DATE,
484 LAST_UPDATE_LOGIN
485 FROM Okl_K_Rate_Params_V
486 WHERE effective_from_date = NVL(p_effective_from_date,effective_from_date)
487 AND khr_id = p_khr_id
488 AND parameter_type_code = NVL(p_parameter_type_code,parameter_type_code);
489 l_okl_k_rate_params_v_u1 okl_k_rate_params_v_u1_csr%ROWTYPE;
490 BEGIN
491 x_no_data_found := TRUE;
492 -- Get current database values
493 OPEN okl_k_rate_params_v_u1_csr (p_effective_from_date,
494 p_chr_id,
495 p_parameter_type_code);
496 FETCH okl_k_rate_params_v_u1_csr INTO
497 x_krpv_rec.khr_id,
498 x_krpv_rec.parameter_type_code,
499 x_krpv_rec.effective_from_date,
500 x_krpv_rec.effective_to_date,
501 x_krpv_rec.interest_index_id,
502 x_krpv_rec.base_rate,
503 x_krpv_rec.interest_start_date,
504 x_krpv_rec.adder_rate,
505 x_krpv_rec.maximum_rate,
506 x_krpv_rec.minimum_rate,
507 x_krpv_rec.principal_basis_code,
508 x_krpv_rec.days_in_a_month_code,
509 x_krpv_rec.days_in_a_year_code,
510 x_krpv_rec.interest_basis_code,
511 x_krpv_rec.rate_delay_code,
512 x_krpv_rec.rate_delay_frequency,
513 x_krpv_rec.compounding_frequency_code,
514 x_krpv_rec.calculation_formula_id,
515 x_krpv_rec.catchup_basis_code,
516 x_krpv_rec.catchup_start_date,
517 x_krpv_rec.catchup_settlement_code,
518 x_krpv_rec.rate_change_start_date,
519 x_krpv_rec.rate_change_frequency_code,
520 x_krpv_rec.rate_change_value,
521 x_krpv_rec.conversion_option_code,
522 x_krpv_rec.next_conversion_date,
523 x_krpv_rec.conversion_type_code,
524 x_krpv_rec.attribute_category,
525 x_krpv_rec.attribute1,
526 x_krpv_rec.attribute2,
527 x_krpv_rec.attribute3,
528 x_krpv_rec.attribute4,
529 x_krpv_rec.attribute5,
530 x_krpv_rec.attribute6,
531 x_krpv_rec.attribute7,
532 x_krpv_rec.attribute8,
533 x_krpv_rec.attribute9,
534 x_krpv_rec.attribute10,
535 x_krpv_rec.attribute11,
536 x_krpv_rec.attribute12,
537 x_krpv_rec.attribute13,
538 x_krpv_rec.attribute14,
539 x_krpv_rec.attribute15,
540 x_krpv_rec.created_by,
541 x_krpv_rec.creation_date,
542 x_krpv_rec.last_updated_by,
543 x_krpv_rec.last_update_date,
544 x_krpv_rec.last_update_login;
545 x_no_data_found := okl_k_rate_params_v_u1_csr%NOTFOUND;
546 CLOSE okl_k_rate_params_v_u1_csr;
547 --RETURN(x_krpv_rec);
548
549 END;
550
551 --Bug# 7566308
552 PROCEDURE validate_rate_params_rbk(
553 p_api_version IN NUMBER,
554 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
555 x_return_status OUT NOCOPY VARCHAR2,
556 x_msg_count OUT NOCOPY NUMBER,
557 x_msg_data OUT NOCOPY VARCHAR2,
558 p_krpv_rec IN krpv_rec_type,
559 p_orig_eff_from_date IN DATE DEFAULT NULL) IS
560
561 CURSOR txn_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
562 SELECT a.date_transaction_occurred,
563 b.date_last_interim_interest_cal
564 FROM okl_trx_contracts a,
565 okl_k_headers b
566 WHERE a.khr_id_new = p_chr_id
567 AND a.tcn_type = 'TRBK'
568 AND a.tsu_code = 'ENTERED'
569 --rkuttiya added for 12.1.1 Multi GAAP
570 AND a.representation_type = 'PRIMARY'
571 --
572 AND a.khr_id_new = b.id;
573
574 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_RATE_PARAMS_RBK';
575 l_api_version CONSTANT NUMBER := 1.0;
576 l_count NUMBER;
577 l_interest_processing_started BOOLEAN := FALSE;
578 l_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
579 l_orig_rate_rec krpv_rec_type;
580 l_no_data BOOLEAN;
581 l_rebook_date DATE;
582 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
583 l_deal_type VARCHAR2(30);
584 l_interest_calculation_basis VARCHAR2(30);
585 l_revenue_recognition_method VARCHAR2(30);
586 l_last_interest_calc_date DATE;
587 l_curr_effective_date DATE;
588 l_product_id NUMBER;
589 l_contract_start_date DATE;
590
591 begin
592 x_return_status := OKL_API.G_RET_STS_SUCCESS;
593
594 x_return_status := OKL_API.START_ACTIVITY(
595 p_api_name => l_api_name,
596 p_pkg_name => g_pkg_name,
597 p_init_msg_list => p_init_msg_list,
598 l_api_version => l_api_version,
599 p_api_version => p_api_version,
600 p_api_type => G_API_TYPE,
601 x_return_status => x_return_status);
602
603
604 get_product2(
605 p_api_version => p_api_version,
606 p_init_msg_list => p_init_msg_list,
607 x_return_status => x_return_status,
608 x_msg_count => x_msg_count,
609 x_msg_data => x_msg_data,
610 p_khr_id => p_krpv_rec.khr_id,
611 x_product_id => l_product_id,
612 x_pdt_parameter_rec => l_pdt_parameter_rec);
613
614 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
615 RAISE OKL_API.G_EXCEPTION_ERROR;
616 END IF;
617
618 l_deal_type := l_pdt_parameter_rec.deal_type;
619 l_interest_calculation_basis := l_pdt_parameter_rec.interest_calculation_basis;
620 l_revenue_recognition_method := l_pdt_parameter_rec.revenue_recognition_method;
621
622 l_interest_processing_started := interest_processing(
623 p_krpv_rec.khr_id,
624 l_contract_number,
625 l_contract_start_date);
626
627 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
628 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After l_interest_processing_started...');
629 END IF;
630 IF (l_interest_processing_started) THEN
631 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
632 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_interest_processing_started=TRUE');
633 END IF;
634 ELSE
635 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
636 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_interest_processing_started=FALSE');
637 END IF;
638 END IF;
639 get_rate_rec(
640 p_chr_id => p_krpv_rec.khr_id,
641 p_parameter_type_code => p_krpv_rec.parameter_type_code,
642 p_effective_from_date => p_krpv_rec.effective_from_date,
643 x_krpv_rec => l_orig_rate_rec,
644 x_no_data_found => l_no_data);
645 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
646 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After get_rate_rec...');
647 END IF;
648
649 -- If validate_rate_params_rbk is called during create flow, then we need to
650 -- check if rate parameters have been changed from the ones on the previous
651 -- open-ended rate
652 IF (l_no_data) AND (p_orig_eff_from_date IS NOT NULL )THEN
653 get_rate_rec(
654 p_chr_id => p_krpv_rec.khr_id,
655 p_parameter_type_code => p_krpv_rec.parameter_type_code,
656 p_effective_from_date => p_orig_eff_from_date,
657 x_krpv_rec => l_orig_rate_rec,
658 x_no_data_found => l_no_data);
659 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
660 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After get_rate_rec 1...');
661 END IF;
662 END IF;
663
664 IF (l_interest_processing_started) THEN
665 NULL;
666 --get_rate_rec and compare if some values changed which are not allowed
667 IF NOT(l_no_data) THEN
668 IF ((l_orig_rate_rec.BASE_RATE IS NOT NULL AND
669 l_orig_rate_rec.BASE_RATE <> G_MISS_NUM) OR
670 (p_krpv_rec.BASE_RATE IS NOT NULL AND
671 p_krpv_rec.BASE_RATE <> G_MISS_NUM)) AND
672 (l_orig_rate_rec.BASE_RATE <> p_krpv_rec.BASE_RATE) THEN
673 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
674 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
675 ,p_token1 => 'PARAMETER_NAME'
676 ,p_token1_value => 'BASE_RATE'
677 ,p_token2 => 'CONTRACT_NUMBER'
678 ,p_token2_value => l_contract_number);
679 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
680 END IF;
681
682 IF ((l_orig_rate_rec.INTEREST_START_DATE IS NOT NULL AND
683 l_orig_rate_rec.INTEREST_START_DATE <> G_MISS_DATE) OR
684 (p_krpv_rec.INTEREST_START_DATE IS NOT NULL AND
685 p_krpv_rec.INTEREST_START_DATE <> G_MISS_DATE)) AND
686 (l_orig_rate_rec.INTEREST_START_DATE <> p_krpv_rec.INTEREST_START_DATE) THEN
687 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
688 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
689 ,p_token1 => 'PARAMETER_NAME'
690 ,p_token1_value => 'INTEREST_START_DATE'
691 ,p_token2 => 'CONTRACT_NUMBER'
692 ,p_token2_value => l_contract_number);
693 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
694 END IF;
695
696 IF ((l_orig_rate_rec.PRINCIPAL_BASIS_CODE IS NOT NULL AND
697 l_orig_rate_rec.PRINCIPAL_BASIS_CODE <> G_MISS_CHAR) OR
698 (p_krpv_rec.PRINCIPAL_BASIS_CODE IS NOT NULL AND
699 p_krpv_rec.PRINCIPAL_BASIS_CODE <> G_MISS_CHAR)) AND
700 (l_orig_rate_rec.PRINCIPAL_BASIS_CODE <> p_krpv_rec.PRINCIPAL_BASIS_CODE) THEN
701 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
702 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
703 ,p_token1 => 'PARAMETER_NAME'
704 ,p_token1_value => 'PRINCIPAL_BASIS_CODE'
705 ,p_token2 => 'CONTRACT_NUMBER'
706 ,p_token2_value => l_contract_number);
707 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
708 END IF;
709
710 IF ((l_orig_rate_rec.DAYS_IN_A_MONTH_CODE IS NOT NULL AND
711 l_orig_rate_rec.DAYS_IN_A_MONTH_CODE <> G_MISS_CHAR) OR
712 (p_krpv_rec.DAYS_IN_A_MONTH_CODE IS NOT NULL AND
713 p_krpv_rec.DAYS_IN_A_MONTH_CODE <> G_MISS_CHAR)) AND
714 (l_orig_rate_rec.DAYS_IN_A_MONTH_CODE <> p_krpv_rec.DAYS_IN_A_MONTH_CODE) THEN
715 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
716 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
717 ,p_token1 => 'PARAMETER_NAME'
718 ,p_token1_value => 'DAYS_IN_A_MONTH_CODE'
719 ,p_token2 => 'CONTRACT_NUMBER'
720 ,p_token2_value => l_contract_number);
721 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
722 END IF;
723
724 IF ((l_orig_rate_rec.DAYS_IN_A_YEAR_CODE IS NOT NULL AND
725 l_orig_rate_rec.DAYS_IN_A_YEAR_CODE <> G_MISS_CHAR) OR
726 (p_krpv_rec.DAYS_IN_A_YEAR_CODE IS NOT NULL AND
727 p_krpv_rec.DAYS_IN_A_YEAR_CODE <> G_MISS_CHAR)) AND
728 (l_orig_rate_rec.DAYS_IN_A_YEAR_CODE <> p_krpv_rec.DAYS_IN_A_YEAR_CODE) THEN
729 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
730 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
731 ,p_token1 => 'PARAMETER_NAME'
732 ,p_token1_value => 'DAYS_IN_A_YEAR_CODE'
733 ,p_token2 => 'CONTRACT_NUMBER'
734 ,p_token2_value => l_contract_number);
735 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
736 END IF;
737
738 IF ((l_orig_rate_rec.CATCHUP_START_DATE IS NOT NULL AND
739 l_orig_rate_rec.CATCHUP_START_DATE <> G_MISS_DATE) OR
740 (p_krpv_rec.CATCHUP_START_DATE IS NOT NULL AND
741 p_krpv_rec.CATCHUP_START_DATE <> G_MISS_DATE)) AND
742 (l_orig_rate_rec.CATCHUP_START_DATE <> p_krpv_rec.CATCHUP_START_DATE) THEN
743 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
744 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
745 ,p_token1 => 'PARAMETER_NAME'
746 ,p_token1_value => 'CATCHUP_START_DATE'
747 ,p_token2 => 'CONTRACT_NUMBER'
748 ,p_token2_value => l_contract_number);
749 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
750 END IF;
751
752 IF ((l_orig_rate_rec.CATCHUP_SETTLEMENT_CODE IS NOT NULL AND
753 l_orig_rate_rec.CATCHUP_SETTLEMENT_CODE <> G_MISS_CHAR) OR
754 (p_krpv_rec.CATCHUP_SETTLEMENT_CODE IS NOT NULL AND
755 p_krpv_rec.CATCHUP_SETTLEMENT_CODE <> G_MISS_CHAR)) AND
756 (l_orig_rate_rec.CATCHUP_SETTLEMENT_CODE <> p_krpv_rec.CATCHUP_SETTLEMENT_CODE) THEN
757 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
758 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
759 ,p_token1 => 'PARAMETER_NAME'
760 ,p_token1_value => 'CATCHUP_SETTLEMENT_CODE'
761 ,p_token2 => 'CONTRACT_NUMBER'
762 ,p_token2_value => l_contract_number);
763 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
764 END IF;
765
766 IF ((l_orig_rate_rec.RATE_CHANGE_START_DATE IS NOT NULL AND
767 l_orig_rate_rec.RATE_CHANGE_START_DATE <> G_MISS_DATE) OR
768 (p_krpv_rec.RATE_CHANGE_START_DATE IS NOT NULL AND
769 p_krpv_rec.RATE_CHANGE_START_DATE <> G_MISS_DATE)) AND
770 (l_orig_rate_rec.RATE_CHANGE_START_DATE <> p_krpv_rec.RATE_CHANGE_START_DATE) THEN
771 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
772 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
773 ,p_token1 => 'PARAMETER_NAME'
774 ,p_token1_value => 'RATE_CHANGE_START_DATE'
775 ,p_token2 => 'CONTRACT_NUMBER'
776 ,p_token2_value => l_contract_number);
777 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
778 END IF;
779 END IF; -- no_data
780 END IF; -- rebook_copy
781
782 IF NOT(l_no_data) THEN
783 -- If any of the rates change, then check effective date
784 FOR txn_rec IN txn_csr (p_krpv_rec.khr_id)
785 LOOP
786 l_rebook_date := txn_rec.date_transaction_occurred;
787 l_last_interest_calc_date := txn_rec.date_last_interim_interest_cal;
788 END LOOP;
789 l_curr_effective_date := l_orig_rate_rec.effective_from_date;
790
791
792 IF (((l_orig_rate_rec.INTEREST_INDEX_ID IS NOT NULL AND
793 l_orig_rate_rec.INTEREST_INDEX_ID <> G_MISS_NUM) OR
794 (p_krpv_rec.INTEREST_INDEX_ID IS NOT NULL AND
795 p_krpv_rec.INTEREST_INDEX_ID <> G_MISS_NUM)) AND
796 (l_orig_rate_rec.INTEREST_INDEX_ID <> p_krpv_rec.INTEREST_INDEX_ID))
797 OR
798 (((l_orig_rate_rec.ADDER_RATE IS NOT NULL AND
799 l_orig_rate_rec.ADDER_RATE <> G_MISS_NUM) OR
800 (p_krpv_rec.ADDER_RATE IS NOT NULL AND
801 p_krpv_rec.ADDER_RATE <> G_MISS_NUM)) AND
802 (l_orig_rate_rec.ADDER_RATE <> p_krpv_rec.ADDER_RATE))
803 OR
804 (((l_orig_rate_rec.MAXIMUM_RATE IS NOT NULL AND
805 l_orig_rate_rec.MAXIMUM_RATE <> G_MISS_NUM) OR
806 (p_krpv_rec.MAXIMUM_RATE IS NOT NULL AND
807 p_krpv_rec.MAXIMUM_RATE <> G_MISS_NUM)) AND
808 (l_orig_rate_rec.MAXIMUM_RATE <> p_krpv_rec.MAXIMUM_RATE))
809 OR
810 (((l_orig_rate_rec.MINIMUM_RATE IS NOT NULL AND
811 l_orig_rate_rec.MINIMUM_RATE <> G_MISS_NUM) OR
812 (p_krpv_rec.MINIMUM_RATE IS NOT NULL AND
813 p_krpv_rec.MINIMUM_RATE <> G_MISS_NUM)) AND
814 (l_orig_rate_rec.MINIMUM_RATE <> p_krpv_rec.MINIMUM_RATE))
815 OR
816 (((l_orig_rate_rec.INTEREST_BASIS_CODE IS NOT NULL AND
817 l_orig_rate_rec.INTEREST_BASIS_CODE <> G_MISS_CHAR) OR
818 (p_krpv_rec.INTEREST_BASIS_CODE IS NOT NULL AND
819 p_krpv_rec.INTEREST_BASIS_CODE <> G_MISS_CHAR)) AND
820 (l_orig_rate_rec.INTEREST_BASIS_CODE <> p_krpv_rec.INTEREST_BASIS_CODE))
821 OR
822 (((l_orig_rate_rec.RATE_DELAY_CODE IS NOT NULL AND
823 l_orig_rate_rec.RATE_DELAY_CODE <> G_MISS_CHAR) OR
824 (p_krpv_rec.RATE_DELAY_CODE IS NOT NULL AND
825 p_krpv_rec.RATE_DELAY_CODE <> G_MISS_CHAR)) AND
826 (l_orig_rate_rec.RATE_DELAY_CODE <> p_krpv_rec.RATE_DELAY_CODE))
827 OR
828 (((l_orig_rate_rec.RATE_DELAY_FREQUENCY IS NOT NULL AND
829 l_orig_rate_rec.RATE_DELAY_FREQUENCY <> G_MISS_NUM) OR
830 (p_krpv_rec.RATE_DELAY_FREQUENCY IS NOT NULL AND
831 p_krpv_rec.RATE_DELAY_FREQUENCY <> G_MISS_NUM)) AND
832 (l_orig_rate_rec.RATE_DELAY_FREQUENCY <> p_krpv_rec.RATE_DELAY_FREQUENCY))
833 OR
834 (((l_orig_rate_rec.RATE_CHANGE_FREQUENCY_CODE IS NOT NULL AND
835 l_orig_rate_rec.RATE_CHANGE_FREQUENCY_CODE <> G_MISS_CHAR) OR
836 (p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE IS NOT NULL AND
837 p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE <> G_MISS_CHAR)) AND
838 (l_orig_rate_rec.RATE_CHANGE_FREQUENCY_CODE <> p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE))
839 OR
840 (((l_orig_rate_rec.RATE_CHANGE_VALUE IS NOT NULL AND
841 l_orig_rate_rec.RATE_CHANGE_VALUE <> G_MISS_NUM) OR
842 (p_krpv_rec.RATE_CHANGE_VALUE IS NOT NULL AND
843 p_krpv_rec.RATE_CHANGE_VALUE <> G_MISS_NUM)) AND
844 (l_orig_rate_rec.RATE_CHANGE_VALUE <> p_krpv_rec.RATE_CHANGE_VALUE))
845 THEN
846 -- IF any of the above values changed
847 IF (l_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
848 l_interest_calculation_basis IN ('FIXED', 'FLOAT_FACTORS')) THEN
849 IF (p_krpv_rec.EFFECTIVE_FROM_DATE < l_orig_rate_rec.EFFECTIVE_FROM_DATE) THEN
850 OKC_API.SET_MESSAGE(
851 p_app_name => G_APP_NAME
852 ,p_msg_name => 'OKL_LLA_VAR_RATE_EFF_DATE');
853 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
854 END IF;
855 ELSIF (l_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
856 l_interest_calculation_basis = 'REAMORT' ) THEN
857 IF (p_krpv_rec.EFFECTIVE_FROM_DATE <= l_rebook_date) OR
858 (p_krpv_rec.EFFECTIVE_FROM_DATE <= l_last_interest_calc_date)
859 THEN
860 OKC_API.SET_MESSAGE(
861 p_app_name => G_APP_NAME
862 ,p_msg_name => 'OKL_LLA_VAR_RATE_RBK_DATE');
863 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
864 END IF;
865 ELSIF ((l_deal_type = 'LOAN') AND
866 l_interest_calculation_basis IN
867 ('FIXED', 'FLOAT', 'CATCHUP/CLEANUP' )) THEN
868 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
869 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_krpv_rec.effective_from_date=' || p_krpv_rec.effective_from_date);
870 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_rate_rec.effective_from_date=' || l_orig_rate_rec.effective_from_date);
871 END IF;
872 IF (p_krpv_rec.EFFECTIVE_FROM_DATE < l_orig_rate_rec.EFFECTIVE_FROM_DATE) THEN
873 OKC_API.SET_MESSAGE(
874 p_app_name => G_APP_NAME
875 ,p_msg_name => 'OKL_LLA_VAR_RATE_EFF_DATE');
876 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
877 END IF;
878 ELSIF (l_deal_type = 'LOAN' AND
879 l_interest_calculation_basis = 'REAMORT') THEN
880 IF (p_krpv_rec.EFFECTIVE_FROM_DATE <= l_rebook_date) OR
881 (p_krpv_rec.EFFECTIVE_FROM_DATE <= l_last_interest_calc_date)
882 THEN
883 OKC_API.SET_MESSAGE(
884 p_app_name => G_APP_NAME
885 ,p_msg_name => 'OKL_LLA_VAR_RATE_RBK_DATE');
886 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
887 END IF;
888 ELSIF (l_deal_type = 'LOAN-REVOLVING' AND
889 l_interest_calculation_basis = 'FLOAT') THEN
890 IF (p_krpv_rec.EFFECTIVE_FROM_DATE < l_orig_rate_rec.EFFECTIVE_FROM_DATE) THEN
891 OKC_API.SET_MESSAGE(
892 p_app_name => G_APP_NAME
893 ,p_msg_name => 'OKL_LLA_VAR_RATE_EFF_DATE');
894 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
895 END IF;
896 END IF; -- if deal_type
897 END IF; -- if any rate params changed
898
899 END IF; -- if no_data
900
901 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
902
903 EXCEPTION
904 WHEN OKL_API.G_EXCEPTION_ERROR THEN
905 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
906 p_api_name => l_api_name,
907 p_pkg_name => g_pkg_name,
908 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
909 x_msg_count => x_msg_count,
910 x_msg_data => x_msg_data,
911 p_api_type => g_api_type);
912
913 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
914 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
915 p_api_name => l_api_name,
916 p_pkg_name => g_pkg_name,
917 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
918 x_msg_count => x_msg_count,
919 x_msg_data => x_msg_data,
920 p_api_type => g_api_type);
921
922 WHEN OTHERS THEN
923 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
924 p_api_name => l_api_name,
925 p_pkg_name => g_pkg_name,
926 p_exc_name => 'OTHERS',
927 x_msg_count => x_msg_count,
928 x_msg_data => x_msg_data,
929 p_api_type => g_api_type);
930 end;
931 --Bug# 7566308
932
933 /* This is to be called from contract import and UI*/
934 --Zero
935 PROCEDURE create_k_rate_params(
936 p_api_version IN NUMBER,
937 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
938 x_return_status OUT NOCOPY VARCHAR2,
939 x_msg_count OUT NOCOPY NUMBER,
940 x_msg_data OUT NOCOPY VARCHAR2,
941 p_krpv_rec IN krpv_rec_type,
942 x_krpv_rec OUT NOCOPY krpv_rec_type,
943 p_validate_flag IN VARCHAR2 DEFAULT 'Y') IS
944
945 CURSOR C1(p_id NUMBER) IS
946 SELECT start_date
947 FROM OKC_K_HEADERS_B
948 WHERE ID = p_id;
949
950 CURSOR C2(p_id NUMBER, p_parameter_type_code VARCHAR2) IS
951 SELECT COUNT(1) COUNT1
952 FROM OKL_K_RATE_PARAMS
953 WHERE KHR_ID = p_id
954 AND PARAMETER_TYPE_CODE = p_parameter_type_code
955 AND EFFECTIVE_TO_DATE IS NULL;
956
957 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_K_RATE_PARAMS';
958 l_api_version CONSTANT NUMBER := 1.0;
959
960 l_krpv_rec krpv_rec_type;
961 --x_krpv_rec krpv_rec_type;
962 l_count NUMBER;
963 l_rate_count NUMBER;
964 l_k_rate_tbl krpv_tbl_type;
965 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
966 l_product_id NUMBER;
967 l_contract_start_date DATE;
968
969 --Bug# 7566308
970 l_rebook_copy BOOLEAN := FALSE;
971
972 l_effective_from_date DATE;
973 l_orig_system_source_code VARCHAR2(30);
974 l_orig_system_id1 NUMBER;
975 l_orig_effective_from_date DATE;
976 l_last_interest_cal_date DATE;
977
978 CURSOR get_effective_from_date_csr(
979 p_khr_id NUMBER,
980 p_parameter_type_code VARCHAR2) IS
981 select rate.effective_from_date,
982 contract.orig_system_source_code,
983 lease.date_last_interim_interest_cal,
984 contract.orig_system_id1
985 FROM OKL_K_RATE_PARAMS rate,
986 OKC_K_HEADERS_B contract,
987 OKL_K_HEADERS lease
988 WHERE rate.khr_id = p_khr_id
989 AND rate.parameter_type_code = p_parameter_type_code
990 AND rate.effective_to_date is null
991 AND rate.khr_id = contract.id
992 AND contract.id = lease.id;
993
994 --Cursor to query the last billed due date of the stream.
995 CURSOR get_last_billed_due_date(
996 p_chr_id OKC_K_HEADERS_B.ID%TYPE
997 , p_stream_purpose OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE) IS
998 SELECT MAX(STE.STREAM_ELEMENT_DATE) LAST_STREAM_DUE_DATE
999 FROM OKL_STRM_ELEMENTS STE
1000 , OKL_STREAMS STM
1001 , OKL_STRM_TYPE_V STY
1002 , OKL_K_HEADERS KHR
1003 , OKC_K_HEADERS_B CHR
1004 WHERE STM.ID = STE.STM_ID
1005 AND STY.ID = STM.STY_ID
1006 AND KHR.ID = STM.KHR_ID
1007 AND CHR.ID = KHR.ID
1008 AND STE.DATE_BILLED IS NOT NULL
1009 AND CHR.ID = p_chr_id
1010 AND STY.STREAM_TYPE_PURPOSE = p_stream_purpose;
1011
1012 l_last_billed_due_date DATE;
1013 --Bug# 7566308
1014 begin
1015
1016 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1017
1018 x_return_status := OKL_API.START_ACTIVITY(
1019 p_api_name => l_api_name,
1020 p_pkg_name => g_pkg_name,
1021 p_init_msg_list => p_init_msg_list,
1022 l_api_version => l_api_version,
1023 p_api_version => p_api_version,
1024 p_api_type => G_API_TYPE,
1025 x_return_status => x_return_status);
1026
1027 --Bug# 7566308
1028 l_rebook_copy := is_rebook_copy(p_krpv_rec.khr_id);
1029 IF (l_rebook_copy) THEN
1030
1031 l_effective_from_date := null;
1032 FOR r IN get_effective_from_date_csr(p_krpv_rec.khr_id, p_krpv_rec.parameter_type_code)
1033 LOOP
1034 l_effective_from_date := r.effective_from_date;
1035 l_orig_system_source_code := r.orig_system_source_code;
1036 l_last_interest_cal_date := r.date_last_interim_interest_cal;
1037 l_orig_system_id1 := r.orig_system_id1;
1038 END LOOP;
1039
1040 validate_rate_params_rbk(
1041 p_api_version => p_api_version,
1042 p_init_msg_list => p_init_msg_list,
1043 x_return_status => x_return_status,
1044 x_msg_count => x_msg_count,
1045 x_msg_data => x_msg_data,
1046 p_krpv_rec => p_krpv_rec,
1047 p_orig_eff_from_date => l_effective_from_date);
1048
1049 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1050 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1051 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1052 RAISE OKL_API.G_EXCEPTION_ERROR;
1053 END IF;
1054
1055 END IF;
1056 --Bug# 7566308
1057
1058 FOR r IN C1(p_krpv_rec.khr_id)
1059 LOOP
1060 l_contract_start_date := r.start_date;
1061 END LOOP;
1062 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1063 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_contract_start_date=' || l_contract_start_date);
1064 END IF;
1065
1066 --Bug# 7566308
1067 IF NOT l_rebook_copy THEN
1068 FOR r IN C2(p_krpv_rec.khr_id, p_krpv_rec.parameter_type_code)
1069 LOOP
1070 l_rate_count := r.count1;
1071 END LOOP;
1072
1073 IF (l_rate_count > 0) THEN
1074 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
1075 ,p_msg_name => 'OKL_LLA_VAR_RATE_EXISTS');
1076 RAISE OKL_API.G_EXCEPTION_ERROR;
1077 END IF;
1078 END IF;
1079 --Bug# 7566308
1080
1081 l_krpv_rec.khr_id := p_krpv_rec.khr_id;
1082 l_krpv_rec.parameter_type_code := p_krpv_rec.parameter_type_code;
1083 l_krpv_rec.effective_from_date := p_krpv_rec.effective_from_Date;
1084 l_krpv_rec.interest_index_id := p_krpv_rec.interest_index_id;
1085 l_krpv_rec.base_rate := p_krpv_rec.base_rate;
1086 l_krpv_rec.interest_start_date := p_krpv_rec.interest_start_date;
1087 l_krpv_rec.adder_rate := p_krpv_rec.adder_rate;
1088 l_krpv_rec.maximum_rate := p_krpv_rec.maximum_rate;
1089 l_krpv_rec.minimum_rate := p_krpv_rec.minimum_rate;
1090 l_krpv_rec.principal_basis_code := p_krpv_rec.principal_basis_code;
1091 l_krpv_rec.days_in_a_month_code := p_krpv_rec.days_in_a_month_code;
1092 l_krpv_rec.days_in_a_year_code := p_krpv_rec.days_in_a_year_code;
1093 l_krpv_rec.interest_basis_code := p_krpv_rec.interest_basis_code;
1094
1095 l_krpv_rec.rate_delay_code := p_krpv_rec.rate_delay_code;
1096 l_krpv_rec.rate_delay_frequency := p_krpv_rec.rate_delay_frequency;
1097 l_krpv_rec.compounding_frequency_code := p_krpv_rec.compounding_frequency_code;
1098 l_krpv_rec.calculation_formula_id := p_krpv_rec.calculation_formula_id;
1099 l_krpv_rec.catchup_basis_code := p_krpv_rec.catchup_basis_code;
1100 l_krpv_rec.catchup_start_date := p_krpv_rec.catchup_start_date;
1101 l_krpv_rec.catchup_settlement_code := p_krpv_rec.catchup_settlement_code;
1102 l_krpv_rec.catchup_frequency_code := p_krpv_rec.catchup_frequency_code;
1103 l_krpv_rec.rate_change_start_date := p_krpv_rec.rate_change_start_date;
1104 l_krpv_rec.rate_change_frequency_code := p_krpv_rec.rate_change_frequency_code;
1105 l_krpv_rec.rate_change_value := p_krpv_rec.rate_change_value;
1106
1107 l_krpv_rec.conversion_option_code := p_krpv_rec.conversion_option_code;
1108 l_krpv_rec.next_conversion_date := p_krpv_rec.next_conversion_date;
1109 l_krpv_rec.conversion_type_code := p_krpv_rec.conversion_type_code;
1110 print_krpv_rec(l_krpv_rec);
1111
1112 select count(1) into l_count
1113 FROM OKL_K_RATE_PARAMS
1114 WHERE KHR_ID = p_krpv_rec.khr_id
1115 AND EFFECTIVE_FROM_DATE = p_krpv_rec.effective_from_date
1116 AND PARAMETER_TYPE_CODE = p_krpv_rec.parameter_type_code;
1117
1118 l_k_rate_tbl(1) := l_krpv_rec;
1119 --Bug# 7440232
1120 IF (p_validate_flag IN ('Y','F')) THEN
1121 get_product2(
1122 p_api_version => p_api_version,
1123 p_init_msg_list => p_init_msg_list,
1124 x_return_status => x_return_status,
1125 x_msg_count => x_msg_count,
1126 x_msg_data => x_msg_data,
1127 p_khr_id => l_krpv_rec.khr_id,
1128 x_product_id => l_product_id,
1129 x_pdt_parameter_rec => l_pdt_parameter_rec);
1130
1131 --Bug# 7440232
1132 validate_k_rate_params(
1133 p_api_version => p_api_version,
1134 p_init_msg_list => p_init_msg_list,
1135 x_return_status => x_return_status,
1136 x_msg_count => x_msg_count,
1137 x_msg_data => x_msg_data,
1138 p_product_id => l_product_id,
1139 p_k_rate_tbl => l_k_rate_tbl,
1140 p_validate_flag => p_validate_flag);
1141
1142 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1143 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1144 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1145 RAISE OKL_API.G_EXCEPTION_ERROR;
1146 END IF;
1147
1148 -- Bug 4722746
1149 IF (l_pdt_parameter_rec.interest_calculation_basis = 'CATCHUP/CLEANUP'
1150 AND l_pdt_parameter_rec.revenue_recognition_method = 'STREAMS') THEN
1151
1152 --print('Catchup :1');
1153 IF (l_krpv_rec.catchup_frequency_code is NULL OR
1154 l_krpv_rec.catchup_frequency_code = G_MISS_CHAR) AND
1155 (l_krpv_rec.catchup_start_date is NULL OR
1156 l_krpv_rec.catchup_start_date = G_MISS_DATE) AND
1157 (l_krpv_rec.catchup_settlement_code is NULL OR
1158 l_krpv_rec.catchup_settlement_code = G_MISS_CHAR) AND
1159 (l_krpv_rec.catchup_basis_code is NULL OR
1160 l_krpv_rec.catchup_basis_code = G_MISS_CHAR) THEN
1161 -- All four are null
1162 IF (l_krpv_rec.rate_change_start_date is NULL OR
1163 l_krpv_rec.rate_change_start_date = G_MISS_DATE) AND
1164 (l_krpv_rec.rate_change_value is NULL OR
1165 l_krpv_rec.rate_change_value = G_MISS_NUM) AND
1166 (l_krpv_rec.rate_change_frequency_code is NULL OR
1167 l_krpv_rec.rate_change_frequency_code = G_MISS_CHAR) AND
1168 (l_krpv_rec.compounding_frequency_code is NULL OR
1169 l_krpv_rec.compounding_frequency_code = G_MISS_CHAR) AND
1170 (l_krpv_rec.calculation_formula_id is NULL OR
1171 l_krpv_rec.calculation_formula_id = G_MISS_NUM) AND
1172 (l_krpv_rec.rate_delay_code is NULL OR
1173 l_krpv_rec.rate_delay_code = G_MISS_CHAR) AND
1174 (l_krpv_rec.rate_delay_frequency is NULL OR
1175 l_krpv_rec.rate_delay_frequency = G_MISS_NUM) THEN
1176 NULL;
1177 ELSE
1178 OKC_API.set_message(p_app_name => G_APP_NAME,
1179 p_msg_name => G_REQUIRED_VALUE,
1180 p_token1 => G_COL_NAME_TOKEN,
1181 p_token1_value => 'CATCHUP FREQUENCY');
1182 RAISE OKL_API.G_EXCEPTION_ERROR;
1183 END IF;
1184
1185 ELSE
1186 -- One of the four is not null
1187 IF (l_krpv_rec.catchup_frequency_code is NOT NULL AND
1188 l_krpv_rec.catchup_frequency_code <> G_MISS_CHAR) THEN
1189 NULL;
1190 ELSE
1191 OKC_API.set_message(p_app_name => G_APP_NAME,
1192 p_msg_name => G_REQUIRED_VALUE,
1193 p_token1 => G_COL_NAME_TOKEN,
1194 p_token1_value => 'Catchup Frequency');
1195 RAISE OKL_API.G_EXCEPTION_ERROR;
1196 END IF;
1197
1198 --print('Catchup :2');
1199 IF (l_krpv_rec.catchup_start_date is NOT NULL AND
1200 l_krpv_rec.catchup_start_date <> G_MISS_DATE) THEN
1201 NULL;
1202 ELSE
1203 -- Default from contract start date
1204 l_krpv_rec.catchup_start_date := l_contract_start_date;
1205 END IF;
1206
1207 --print('Catchup :3');
1208 IF (l_krpv_rec.catchup_settlement_code is NOT NULL AND
1209 l_krpv_rec.catchup_settlement_code <> G_MISS_CHAR) THEN
1210 NULL;
1211 ELSE
1212 OKC_API.set_message(p_app_name => G_APP_NAME,
1213 p_msg_name => G_REQUIRED_VALUE,
1214 p_token1 => G_COL_NAME_TOKEN,
1215 p_token1_value => 'Catchup Settlement');
1216 RAISE OKL_API.G_EXCEPTION_ERROR;
1217 END IF;
1218
1219 --print('Catchup :4');
1220 IF (l_krpv_rec.catchup_basis_code is NOT NULL AND
1221 l_krpv_rec.catchup_basis_code <> G_MISS_CHAR) THEN
1222 NULL;
1223 ELSE
1224 OKC_API.set_message(p_app_name => G_APP_NAME,
1225 p_msg_name => G_REQUIRED_VALUE,
1226 p_token1 => G_COL_NAME_TOKEN,
1227 p_token1_value => 'Catchup Basis');
1228 RAISE OKL_API.G_EXCEPTION_ERROR;
1229 END IF;
1230
1231
1232 END IF;
1233
1234 END IF; -- if STREAMS and CATCHUP/CLEANUP
1235
1236 --Bug# 7566308
1237 -- Moved validations on adding a new effective dated rate during rebook
1238 -- from copy_k_rate_params to here
1239 -- Start Rebook checks
1240 IF (l_rebook_copy) THEN
1241
1242 -- Bug 4999888
1243 IF (l_pdt_parameter_rec.interest_calculation_basis = 'FIXED' and l_pdt_parameter_rec.revenue_recognition_method='ACTUAL') THEN
1244 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1245 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:Inside FIXED and ACTUAL...');
1246 END IF;
1247
1248 OPEN get_last_billed_due_date(l_orig_system_id1, 'LOAN_PAYMENT');
1249 FETCH get_last_billed_due_date
1250 INTO l_last_billed_due_date;
1251 CLOSE get_last_billed_due_date;
1252
1253 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1254 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_last_billed_due_date=' || l_last_billed_due_date);
1255 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_krpv_rec.effective_from_Date=' || p_krpv_rec.effective_from_Date);
1256 END IF;
1257 IF (l_last_billed_due_date IS NOT NULL AND
1258 p_krpv_rec.effective_from_Date <= l_last_billed_due_date) THEN
1259 OKC_API.set_message(p_app_name => G_APP_NAME,
1260 p_msg_name => 'OKL_LLA_VAR_RATE_INT_DATE',
1261 p_token1 => 'EFF_DATE',
1262 p_token1_value => p_krpv_rec.effective_from_Date,
1263 p_token2 => 'INTEREST_DATE',
1264 p_token2_value => l_last_billed_due_date);
1265 RAISE OKL_API.G_EXCEPTION_ERROR;
1266 END IF;
1267 END IF;
1268
1269 -- Bug 4999888
1270 IF (l_pdt_parameter_rec.interest_calculation_basis IN ('FLOAT', 'REAMORT', 'FLOAT_FACTORS', 'CATCHUP/CLEANUP')) THEN
1271 IF (l_last_interest_cal_date IS NOT NULL) THEN
1272 IF (p_krpv_rec.effective_from_Date <= l_last_interest_cal_date) THEN
1273 OKC_API.set_message(p_app_name => G_APP_NAME,
1274 p_msg_name => 'OKL_LLA_VAR_RATE_INT_DATE',
1275 p_token1 => 'EFF_DATE',
1276 p_token1_value => p_krpv_rec.effective_from_Date,
1277 p_token2 => 'INTEREST_DATE',
1278 p_token2_value => l_last_interest_cal_date);
1279 RAISE OKL_API.G_EXCEPTION_ERROR;
1280 END IF;
1281 END IF;
1282 END IF;
1283 END IF;
1284 -- End Rebook checks
1285 --Bug# 7566308
1286
1287 END IF; -- if validate_flag
1288
1289 IF (l_count > 0) THEN
1290 OKL_KRP_PVT.update_row(
1291 p_api_version,
1292 p_init_msg_list,
1293 x_return_status,
1294 x_msg_count,
1295 x_msg_data,
1296 l_krpv_rec,
1297 x_krpv_rec);
1298 ELSE
1299 OKL_KRP_PVT.insert_row(
1300 p_api_version,
1301 p_init_msg_list,
1302 x_return_status,
1303 x_msg_count,
1304 x_msg_data,
1305 l_krpv_rec,
1306 x_krpv_rec);
1307
1308 --Bug# 7566308
1309 -- End date the previous open-ended rate record
1310 -- when a new effective dated rate is added
1311 IF (l_rebook_copy) THEN
1312 FOR r IN get_effective_from_date_csr(l_orig_system_id1,
1313 p_krpv_rec.parameter_type_code)
1314 LOOP
1315 l_orig_effective_from_date := r.effective_from_date;
1316 END LOOP;
1317
1318 UPDATE OKL_K_RATE_PARAMS
1319 SET EFFECTIVE_TO_DATE = p_krpv_rec.effective_from_Date - 1
1320 WHERE KHR_ID = p_krpv_rec.khr_id
1321 AND PARAMETER_TYPE_CODE = p_krpv_rec.parameter_type_code
1322 AND EFFECTIVE_FROM_DATE = l_effective_from_date
1323 AND EFFECTIVE_TO_DATE IS NULL;
1324 END IF;
1325 --Bug# 7566308
1326 END IF;
1327
1328 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1329 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1330 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1331 RAISE OKL_API.G_EXCEPTION_ERROR;
1332 END IF;
1333
1334 okl_contract_status_pub.cascade_lease_status_edit
1335 (p_api_version => p_api_version,
1336 p_init_msg_list => p_init_msg_list,
1337 x_return_status => x_return_status,
1338 x_msg_count => x_msg_count,
1339 x_msg_data => x_msg_data,
1340 p_chr_id => l_krpv_rec.khr_id);
1341
1342 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1343 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1344 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1345 raise OKL_API.G_EXCEPTION_ERROR;
1346 End If;
1347
1348 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1349
1350 EXCEPTION
1351 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1352 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1353 p_api_name => l_api_name,
1354 p_pkg_name => g_pkg_name,
1355 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1356 x_msg_count => x_msg_count,
1357 x_msg_data => x_msg_data,
1358 p_api_type => g_api_type);
1359
1360 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1361 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1362 p_api_name => l_api_name,
1363 p_pkg_name => g_pkg_name,
1364 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1365 x_msg_count => x_msg_count,
1366 x_msg_data => x_msg_data,
1367 p_api_type => g_api_type);
1368
1369 WHEN OTHERS THEN
1370 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1371 p_api_name => l_api_name,
1372 p_pkg_name => g_pkg_name,
1373 p_exc_name => 'OTHERS',
1374 x_msg_count => x_msg_count,
1375 x_msg_data => x_msg_data,
1376 p_api_type => g_api_type);
1377
1378 end;
1379
1380 -- First
1381 PROCEDURE create_k_rate_params(
1382 p_api_version IN NUMBER,
1383 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1384 x_return_status OUT NOCOPY VARCHAR2,
1385 x_msg_count OUT NOCOPY NUMBER,
1386 x_msg_data OUT NOCOPY VARCHAR2,
1387 p_krpr_rec IN krpr_rec_type,
1388 x_krpr_rec OUT NOCOPY krpr_rec_type) is
1389
1390 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_K_RATE_PARAMS';
1391 l_api_version CONSTANT NUMBER := 1.0;
1392
1393 l_krpv_rec krpv_rec_type;
1394 x_krpv_rec krpv_rec_type;
1395 l_count NUMBER;
1396
1397 begin
1398
1399 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1400
1401 x_return_status := OKL_API.START_ACTIVITY(
1402 p_api_name => l_api_name,
1403 p_pkg_name => g_pkg_name,
1404 p_init_msg_list => p_init_msg_list,
1405 l_api_version => l_api_version,
1406 p_api_version => p_api_version,
1407 p_api_type => G_API_TYPE,
1408 x_return_status => x_return_status);
1409
1410
1411 l_krpv_rec.khr_id := p_krpr_rec.khr_id;
1412 l_krpv_rec.parameter_type_code := p_krpr_rec.parameter_type_code;
1413 l_krpv_rec.effective_from_date := p_krpr_rec.effective_from_Date;
1414 l_krpv_rec.interest_index_id := p_krpr_rec.interest_index_id;
1415 l_krpv_rec.base_rate := p_krpr_rec.base_rate;
1416 l_krpv_rec.interest_start_date := p_krpr_rec.interest_start_date;
1417 l_krpv_rec.adder_rate := p_krpr_rec.adder_rate;
1418 l_krpv_rec.maximum_rate := p_krpr_rec.maximum_rate;
1419 l_krpv_rec.minimum_rate := p_krpr_rec.minimum_rate;
1420 l_krpv_rec.principal_basis_code := p_krpr_rec.principal_basis_code;
1421 l_krpv_rec.days_in_a_month_code := p_krpr_rec.days_in_a_month_code;
1422 l_krpv_rec.days_in_a_year_code := p_krpr_rec.days_in_a_year_code;
1423 l_krpv_rec.interest_basis_code := p_krpr_rec.interest_basis_code;
1424
1425 select count(1) into l_count
1426 FROM OKL_K_RATE_PARAMS
1427 WHERE KHR_ID = p_krpr_rec.khr_id
1428 AND EFFECTIVE_FROM_DATE = p_krpr_rec.effective_from_date
1429 AND PARAMETER_TYPE_CODE = p_krpr_rec.parameter_type_code;
1430
1431 IF (l_count > 0) THEN
1432 OKL_KRP_PVT.update_row(
1433 p_api_version,
1434 p_init_msg_list,
1435 x_return_status,
1436 x_msg_count,
1437 x_msg_data,
1438 l_krpv_rec,
1439 x_krpv_rec);
1440 ELSE
1441 OKL_KRP_PVT.insert_row(
1442 p_api_version,
1443 p_init_msg_list,
1444 x_return_status,
1445 x_msg_count,
1446 x_msg_data,
1447 l_krpv_rec,
1448 x_krpv_rec);
1449 END IF;
1450
1451 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1452 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1453 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1454 RAISE OKL_API.G_EXCEPTION_ERROR;
1455 END IF;
1456
1457 x_krpr_rec.khr_id := x_krpv_rec.khr_id;
1458 x_krpr_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
1459 x_krpr_rec.effective_from_date := x_krpv_rec.effective_from_date;
1460 x_krpr_rec.effective_to_date := x_krpv_rec.effective_to_date;
1461 x_krpr_rec.interest_index_id := x_krpv_rec.interest_index_id;
1462 x_krpr_rec.base_rate := x_krpv_rec.base_rate;
1463 x_krpr_rec.interest_start_date := x_krpv_rec.interest_start_date;
1464 x_krpr_rec.adder_rate := x_krpv_rec.adder_rate;
1465 x_krpr_rec.maximum_rate := x_krpv_rec.maximum_rate;
1466 x_krpr_rec.minimum_rate := x_krpv_rec.minimum_rate;
1467 x_krpr_rec.principal_basis_code := x_krpv_rec.principal_basis_code;
1468 x_krpr_rec.days_in_a_month_code := x_krpv_rec.days_in_a_month_code;
1469 x_krpr_rec.days_in_a_year_code := x_krpv_rec.days_in_a_year_code;
1470 x_krpr_rec.interest_basis_code := x_krpv_rec.interest_basis_code;
1471
1472 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1473
1474 EXCEPTION
1475 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1476 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1477 p_api_name => l_api_name,
1478 p_pkg_name => g_pkg_name,
1479 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1480 x_msg_count => x_msg_count,
1481 x_msg_data => x_msg_data,
1482 p_api_type => g_api_type);
1483
1484 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1485 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1486 p_api_name => l_api_name,
1487 p_pkg_name => g_pkg_name,
1488 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1489 x_msg_count => x_msg_count,
1490 x_msg_data => x_msg_data,
1491 p_api_type => g_api_type);
1492
1493 WHEN OTHERS THEN
1494 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1495 p_api_name => l_api_name,
1496 p_pkg_name => g_pkg_name,
1497 p_exc_name => 'OTHERS',
1498 x_msg_count => x_msg_count,
1499 x_msg_data => x_msg_data,
1500 p_api_type => g_api_type);
1501
1502 end;
1503
1504 -- Second
1505 PROCEDURE create_k_rate_params(
1506 p_api_version IN NUMBER,
1507 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1508 x_return_status OUT NOCOPY VARCHAR2,
1509 x_msg_count OUT NOCOPY NUMBER,
1510 x_msg_data OUT NOCOPY VARCHAR2,
1511 p_krpar_rec IN krpar_rec_type,
1512 x_krpar_rec OUT NOCOPY krpar_rec_type) IS
1513
1514 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_K_RATE_PARAMS';
1515 l_api_version CONSTANT NUMBER := 1.0;
1516 l_krpv_rec krpv_rec_type;
1517 x_krpv_rec krpv_rec_type;
1518 l_count NUMBER;
1519
1520 begin
1521 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1522
1523 x_return_status := OKL_API.START_ACTIVITY(
1524 p_api_name => l_api_name,
1525 p_pkg_name => g_pkg_name,
1526 p_init_msg_list => p_init_msg_list,
1527 l_api_version => l_api_version,
1528 p_api_version => p_api_version,
1529 p_api_type => G_API_TYPE,
1530 x_return_status => x_return_status);
1531
1532 select count(1) into l_count
1533 FROM OKL_K_RATE_PARAMS
1534 WHERE KHR_ID = p_krpar_rec.khr_id
1535 AND EFFECTIVE_FROM_DATE = p_krpar_rec.effective_from_date
1536 AND PARAMETER_TYPE_CODE = p_krpar_rec.parameter_type_code;
1537
1538
1539 l_krpv_rec.khr_id := p_krpar_rec.khr_id;
1540 l_krpv_rec.parameter_type_code := p_krpar_rec.parameter_type_code;
1541 l_krpv_rec.effective_from_date := p_krpar_rec.effective_from_date;
1542 l_krpv_rec.effective_to_date := p_krpar_rec.effective_to_date;
1543 l_krpv_rec.rate_delay_code := p_krpar_rec.rate_delay_code;
1544 l_krpv_rec.rate_delay_frequency := p_krpar_rec.rate_delay_frequency;
1545 l_krpv_rec.compounding_frequency_code := p_krpar_rec.compounding_frequency_code;
1546 l_krpv_rec.calculation_formula_id := p_krpar_rec.calculation_formula_id;
1547 l_krpv_rec.catchup_basis_code := p_krpar_rec.catchup_basis_code;
1548 l_krpv_rec.catchup_start_date := p_krpar_rec.catchup_start_date;
1549 l_krpv_rec.catchup_settlement_code := p_krpar_rec.catchup_settlement_code;
1550 l_krpv_rec.rate_change_start_date := p_krpar_rec.rate_change_start_date;
1551 l_krpv_rec.rate_change_frequency_code := p_krpar_rec.rate_change_frequency_code;
1552 l_krpv_rec.rate_change_value := p_krpar_rec.rate_change_value;
1553 IF (l_count > 0) then
1554 OKL_KRP_PVT.update_row(
1555 p_api_version,
1556 p_init_msg_list,
1557 x_return_status,
1558 x_msg_count,
1559 x_msg_data,
1560 l_krpv_rec,
1561 x_krpv_rec);
1562 ELSE
1563 OKL_KRP_PVT.insert_row(
1564 p_api_version,
1565 p_init_msg_list,
1566 x_return_status,
1567 x_msg_count,
1568 x_msg_data,
1569 l_krpv_rec,
1570 x_krpv_rec);
1571 END IF;
1572
1573 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1574 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1575 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1576 RAISE OKL_API.G_EXCEPTION_ERROR;
1577 END IF;
1578
1579 x_krpar_rec.khr_id := x_krpv_rec.khr_id;
1580 x_krpar_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
1581 x_krpar_rec.effective_from_date := x_krpv_rec.effective_from_date;
1582 x_krpar_rec.effective_to_date := x_krpv_rec.effective_to_date;
1583 x_krpar_rec.rate_delay_code := x_krpv_rec.rate_delay_code;
1584 x_krpar_rec.rate_delay_frequency := x_krpv_rec.rate_delay_frequency;
1585 x_krpar_rec.compounding_frequency_code := x_krpv_rec.compounding_frequency_code;
1586 x_krpar_rec.calculation_formula_id := x_krpv_rec.calculation_formula_id;
1587 x_krpar_rec.catchup_basis_code := x_krpv_rec.catchup_basis_code;
1588 x_krpar_rec.catchup_start_date := x_krpv_rec.catchup_start_date;
1589 x_krpar_rec.catchup_settlement_code := x_krpv_rec.catchup_settlement_code;
1590 x_krpar_rec.rate_change_start_date := x_krpv_rec.rate_change_start_date;
1591 x_krpar_rec.rate_change_frequency_code := x_krpv_rec.rate_change_frequency_code;
1592 x_krpar_rec.rate_change_value := x_krpv_rec.rate_change_value;
1593
1594 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1595
1596 EXCEPTION
1597 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1598 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1599 p_api_name => l_api_name,
1600 p_pkg_name => g_pkg_name,
1601 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1602 x_msg_count => x_msg_count,
1603 x_msg_data => x_msg_data,
1604 p_api_type => g_api_type);
1605
1606 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1607 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1608 p_api_name => l_api_name,
1609 p_pkg_name => g_pkg_name,
1610 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1611 x_msg_count => x_msg_count,
1612 x_msg_data => x_msg_data,
1613 p_api_type => g_api_type);
1614
1615 WHEN OTHERS THEN
1616 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1617 p_api_name => l_api_name,
1618 p_pkg_name => g_pkg_name,
1619 p_exc_name => 'OTHERS',
1620 x_msg_count => x_msg_count,
1621 x_msg_data => x_msg_data,
1622 p_api_type => g_api_type);
1623 end;
1624
1625 -- Third
1626 PROCEDURE create_k_rate_params(
1627 p_api_version IN NUMBER,
1628 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1629 x_return_status OUT NOCOPY VARCHAR2,
1630 x_msg_count OUT NOCOPY NUMBER,
1631 x_msg_data OUT NOCOPY VARCHAR2,
1632 p_krpc_rec IN krpc_rec_type,
1633 x_krpc_rec OUT NOCOPY krpc_rec_type) IS
1634
1635 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_K_RATE_PARAMS';
1636 l_api_version CONSTANT NUMBER := 1.0;
1637 l_krpv_rec krpv_rec_type;
1638 x_krpv_rec krpv_rec_type;
1639 l_count NUMBER;
1640
1641 begin
1642 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1643
1644 x_return_status := OKL_API.START_ACTIVITY(
1645 p_api_name => l_api_name,
1646 p_pkg_name => g_pkg_name,
1647 p_init_msg_list => p_init_msg_list,
1648 l_api_version => l_api_version,
1649 p_api_version => p_api_version,
1650 p_api_type => G_API_TYPE,
1651 x_return_status => x_return_status);
1652
1653 select count(1) into l_count
1654 FROM OKL_K_RATE_PARAMS
1655 WHERE KHR_ID = p_krpc_rec.khr_id
1656 AND EFFECTIVE_FROM_DATE = p_krpc_rec.effective_from_date
1657 AND PARAMETER_TYPE_CODE = p_krpc_rec.parameter_type_code;
1658
1659 l_krpv_rec.khr_id := p_krpc_rec.khr_id;
1660 l_krpv_rec.parameter_type_code := p_krpc_rec.parameter_type_code;
1661 l_krpv_rec.effective_from_date := p_krpc_rec.effective_from_date;
1662 l_krpv_rec.effective_to_date := p_krpc_rec.effective_to_date;
1663 l_krpv_rec.conversion_option_code := p_krpc_rec.conversion_option_code;
1664 l_krpv_rec.next_conversion_date := p_krpc_rec.next_conversion_date;
1665 l_krpv_rec.conversion_type_code := p_krpc_rec.conversion_type_code;
1666
1667 IF (l_count > 0) then
1668 OKL_KRP_PVT.update_row(
1669 p_api_version,
1670 p_init_msg_list,
1671 x_return_status,
1672 x_msg_count,
1673 x_msg_data,
1674 l_krpv_rec,
1675 x_krpv_rec);
1676 ELSE
1677 OKL_KRP_PVT.insert_row(
1678 p_api_version,
1679 p_init_msg_list,
1680 x_return_status,
1681 x_msg_count,
1682 x_msg_data,
1683 l_krpv_rec,
1684 x_krpv_rec);
1685 END IF;
1686
1687 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1688 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1689 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1690 RAISE OKL_API.G_EXCEPTION_ERROR;
1691 END IF;
1692
1693 x_krpc_rec.khr_id := x_krpv_rec.khr_id;
1694 x_krpc_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
1695 x_krpc_rec.effective_from_date := x_krpv_rec.effective_from_date;
1696 x_krpc_rec.effective_to_date := x_krpv_rec.effective_to_date;
1697 x_krpc_rec.conversion_option_code := x_krpv_rec.conversion_option_code;
1698 x_krpc_rec.next_conversion_date := x_krpv_rec.next_conversion_date;
1699 x_krpc_rec.conversion_type_code := x_krpv_rec.conversion_type_code;
1700
1701 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1702
1703 EXCEPTION
1704 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1705 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1706 p_api_name => l_api_name,
1707 p_pkg_name => g_pkg_name,
1708 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1709 x_msg_count => x_msg_count,
1710 x_msg_data => x_msg_data,
1711 p_api_type => g_api_type);
1712
1713 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1714 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1715 p_api_name => l_api_name,
1716 p_pkg_name => g_pkg_name,
1717 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1718 x_msg_count => x_msg_count,
1719 x_msg_data => x_msg_data,
1720 p_api_type => g_api_type);
1721
1722 WHEN OTHERS THEN
1723 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1724 p_api_name => l_api_name,
1725 p_pkg_name => g_pkg_name,
1726 p_exc_name => 'OTHERS',
1727 x_msg_count => x_msg_count,
1728 x_msg_data => x_msg_data,
1729 p_api_type => g_api_type);
1730 end;
1731
1732 /* For both UI and contract import */
1733 --Zero
1734 PROCEDURE update_k_rate_params(
1735 p_api_version IN NUMBER,
1736 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1737 x_return_status OUT NOCOPY VARCHAR2,
1738 x_msg_count OUT NOCOPY NUMBER,
1739 x_msg_data OUT NOCOPY VARCHAR2,
1740 p_krpv_rec IN krpv_rec_type,
1741 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
1742
1743 CURSOR txn_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1744 SELECT a.date_transaction_occurred,
1745 b.date_last_interim_interest_cal
1746 FROM okl_trx_contracts a,
1747 okl_k_headers b
1748 WHERE a.khr_id_new = p_chr_id
1749 AND a.tcn_type = 'TRBK'
1750 AND a.tsu_code = 'ENTERED'
1751 --rkuttiya added for 12.1.1 Multi GAAP
1752 AND a.representation_type = 'PRIMARY'
1753 --
1754 AND a.khr_id_new = b.id;
1755
1756 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_K_RATE_PARAMS';
1757 l_api_version CONSTANT NUMBER := 1.0;
1758 l_krpv_rec krpv_rec_type;
1759 --x_krpv_rec krpv_rec_type;
1760 l_count NUMBER;
1761 l_rebook_copy BOOLEAN := FALSE;
1762 l_interest_processing_started BOOLEAN := FALSE;
1763 l_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
1764 l_orig_rate_rec krpv_rec_type;
1765 l_no_data BOOLEAN;
1766 l_rebook_date DATE;
1767 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
1768 l_deal_type VARCHAR2(30);
1769 l_interest_calculation_basis VARCHAR2(30);
1770 l_revenue_recognition_method VARCHAR2(30);
1771 l_last_interest_calc_date DATE;
1772 l_curr_effective_date DATE;
1773 l_product_id NUMBER;
1774 l_contract_start_date DATE;
1775 l_krpv_tbl krpv_tbl_type;
1776 --l_k_rate_tbl krpv_tbl_type;
1777 begin
1778 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1779
1780 x_return_status := OKL_API.START_ACTIVITY(
1781 p_api_name => l_api_name,
1782 p_pkg_name => g_pkg_name,
1783 p_init_msg_list => p_init_msg_list,
1784 l_api_version => l_api_version,
1785 p_api_version => p_api_version,
1786 p_api_type => G_API_TYPE,
1787 x_return_status => x_return_status);
1788
1789 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1790 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Update_k_rate_params:Printing input p_krpv_rec...');
1791 END IF;
1792 print_krpv_rec(p_krpv_rec);
1793
1794 get_product2(
1795 p_api_version => p_api_version,
1796 p_init_msg_list => p_init_msg_list,
1797 x_return_status => x_return_status,
1798 x_msg_count => x_msg_count,
1799 x_msg_data => x_msg_data,
1800 p_khr_id => p_krpv_rec.khr_id,
1801 x_product_id => l_product_id,
1802 x_pdt_parameter_rec => l_pdt_parameter_rec);
1803
1804 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1805 RAISE OKL_API.G_EXCEPTION_ERROR;
1806 END IF;
1807
1808 l_deal_type := l_pdt_parameter_rec.deal_type;
1809 l_interest_calculation_basis := l_pdt_parameter_rec.interest_calculation_basis;
1810 l_revenue_recognition_method := l_pdt_parameter_rec.revenue_recognition_method;
1811
1812 --Bug# 7566308
1813 l_rebook_copy := is_rebook_copy(p_krpv_rec.khr_id);
1814 IF (l_rebook_copy) THEN
1815 validate_rate_params_rbk(
1816 p_api_version => p_api_version,
1817 p_init_msg_list => p_init_msg_list,
1818 x_return_status => x_return_status,
1819 x_msg_count => x_msg_count,
1820 x_msg_data => x_msg_data,
1821 p_krpv_rec => p_krpv_rec);
1822
1823 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1824 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1825 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1826 RAISE OKL_API.G_EXCEPTION_ERROR;
1827 END IF;
1828 END IF;
1829 --Bug# 7566308
1830
1831 l_krpv_rec.khr_id := p_krpv_rec.khr_id;
1832 l_krpv_rec.parameter_type_code := p_krpv_rec.parameter_type_code;
1833 l_krpv_rec.effective_from_date := p_krpv_rec.effective_from_date;
1834 l_krpv_rec.effective_to_date := p_krpv_rec.effective_to_date;
1835 l_krpv_rec.interest_index_id := p_krpv_rec.interest_index_id;
1836 l_krpv_rec.base_rate := p_krpv_rec.base_rate;
1837 l_krpv_rec.interest_start_date := p_krpv_rec.interest_start_date;
1838 l_krpv_rec.adder_rate := p_krpv_rec.adder_rate;
1839 l_krpv_rec.maximum_rate := p_krpv_rec.maximum_rate;
1840 l_krpv_rec.minimum_rate := p_krpv_rec.minimum_rate;
1841 l_krpv_rec.principal_basis_code := p_krpv_rec.principal_basis_code;
1842 l_krpv_rec.days_in_a_month_code := p_krpv_rec.days_in_a_month_code;
1843 l_krpv_rec.days_in_a_year_code := p_krpv_rec.days_in_a_year_code;
1844 l_krpv_rec.interest_basis_code := p_krpv_rec.interest_basis_code;
1845 l_krpv_rec.rate_delay_code := p_krpv_rec.rate_delay_code;
1846 l_krpv_rec.rate_delay_frequency := p_krpv_rec.rate_delay_frequency;
1847 l_krpv_rec.compounding_frequency_code := p_krpv_rec.compounding_frequency_code;
1848 l_krpv_rec.calculation_formula_id := p_krpv_rec.calculation_formula_id;
1849 l_krpv_rec.catchup_basis_code := p_krpv_rec.catchup_basis_code;
1850 l_krpv_rec.catchup_start_date := p_krpv_rec.catchup_start_date;
1851 l_krpv_rec.catchup_settlement_code := p_krpv_rec.catchup_settlement_code;
1852 l_krpv_rec.catchup_frequency_code := p_krpv_rec.catchup_frequency_code;
1853 l_krpv_rec.rate_change_start_date := p_krpv_rec.rate_change_start_date;
1854 l_krpv_rec.rate_change_frequency_code := p_krpv_rec.rate_change_frequency_code;
1855 l_krpv_rec.rate_change_value := p_krpv_rec.rate_change_value;
1856 l_krpv_rec.conversion_option_code := p_krpv_rec.conversion_option_code;
1857 l_krpv_rec.next_conversion_date := p_krpv_rec.next_conversion_date;
1858 l_krpv_rec.conversion_type_code := p_krpv_rec.conversion_type_code;
1859
1860 l_krpv_tbl(1) := l_krpv_rec;
1861
1862 /*get_product2(
1863 p_api_version => p_api_version,
1864 p_init_msg_list => p_init_msg_list,
1865 x_return_status => x_return_status,
1866 x_msg_count => x_msg_count,
1867 x_msg_data => x_msg_data,
1868 p_khr_id => l_krpv_rec.khr_id,
1869 x_product_id => l_product_id,
1870 x_pdt_parameter_rec => l_pdt_parameter_rec); */
1871
1872 --Bug# 7440232
1873 validate_k_rate_params(
1874 p_api_version => p_api_version,
1875 p_init_msg_list => p_init_msg_list,
1876 x_return_status => x_return_status,
1877 x_msg_count => x_msg_count,
1878 x_msg_data => x_msg_data,
1879 p_product_id => l_product_id,
1880 p_k_rate_tbl => l_krpv_tbl,
1881 p_validate_flag => 'F');
1882
1883 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1884 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1885 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1886 RAISE OKL_API.G_EXCEPTION_ERROR;
1887 END IF;
1888
1889 -- Bug 4722746
1890 IF (l_pdt_parameter_rec.interest_calculation_basis = 'CATCHUP/CLEANUP'
1891 AND l_pdt_parameter_rec.revenue_recognition_method = 'STREAMS') THEN
1892
1893 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1894 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Catchup :5.0');
1895 END IF;
1896 IF (l_krpv_rec.catchup_frequency_code is NULL OR
1897 l_krpv_rec.catchup_frequency_code = G_MISS_CHAR) AND
1898 (l_krpv_rec.catchup_start_date is NULL OR
1899 l_krpv_rec.catchup_start_date = G_MISS_DATE) AND
1900 (l_krpv_rec.catchup_settlement_code is NULL OR
1901 l_krpv_rec.catchup_settlement_code = G_MISS_CHAR) AND
1902 (l_krpv_rec.catchup_basis_code is NULL OR
1903 l_krpv_rec.catchup_basis_code = G_MISS_CHAR) THEN
1904 -- All four are null
1905 IF (l_krpv_rec.rate_change_start_date is NULL OR
1906 l_krpv_rec.rate_change_start_date = G_MISS_DATE) AND
1907 (l_krpv_rec.rate_change_value is NULL OR
1908 l_krpv_rec.rate_change_value = G_MISS_NUM) AND
1909 (l_krpv_rec.rate_change_frequency_code is NULL OR
1910 l_krpv_rec.rate_change_frequency_code = G_MISS_CHAR) AND
1911 (l_krpv_rec.compounding_frequency_code is NULL OR
1912 l_krpv_rec.compounding_frequency_code = G_MISS_CHAR) AND
1913 (l_krpv_rec.calculation_formula_id is NULL OR
1914 l_krpv_rec.calculation_formula_id = G_MISS_NUM) AND
1915 (l_krpv_rec.rate_delay_code is NULL OR
1916 l_krpv_rec.rate_delay_code = G_MISS_CHAR) AND
1917 (l_krpv_rec.rate_delay_frequency is NULL OR
1918 l_krpv_rec.rate_delay_frequency = G_MISS_NUM) THEN
1919 NULL;
1920 ELSE
1921 OKC_API.set_message(p_app_name => G_APP_NAME,
1922 p_msg_name => G_REQUIRED_VALUE,
1923 p_token1 => G_COL_NAME_TOKEN,
1924 p_token1_value => 'CATCHUP FREQUENCY');
1925 RAISE OKL_API.G_EXCEPTION_ERROR;
1926 END IF;
1927
1928 ELSE
1929 -- One of the four is not null
1930 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1931 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Catchup :5.1');
1932 END IF;
1933 IF (l_krpv_rec.catchup_frequency_code is NOT NULL AND
1934 l_krpv_rec.catchup_frequency_code <> G_MISS_CHAR) THEN
1935 NULL;
1936 ELSE
1937 OKC_API.set_message(p_app_name => G_APP_NAME,
1938 p_msg_name => G_REQUIRED_VALUE,
1939 p_token1 => G_COL_NAME_TOKEN,
1940 p_token1_value => 'Catchup Frequency');
1941 RAISE OKL_API.G_EXCEPTION_ERROR;
1942 END IF;
1943
1944 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1945 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Catchup :6');
1946 END IF;
1947 IF (l_krpv_rec.catchup_start_date is NOT NULL AND
1948 l_krpv_rec.catchup_start_date <> G_MISS_DATE) THEN
1949 NULL;
1950 ELSE
1951 -- Default from contract start date
1952 l_krpv_rec.catchup_start_date := l_contract_start_date;
1953 END IF;
1954
1955 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1956 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Catchup :7');
1957 END IF;
1958 IF (l_krpv_rec.catchup_settlement_code is NOT NULL AND
1959 l_krpv_rec.catchup_settlement_code <> G_MISS_CHAR) THEN
1960 NULL;
1961 ELSE
1962 OKC_API.set_message(p_app_name => G_APP_NAME,
1963 p_msg_name => G_REQUIRED_VALUE,
1964 p_token1 => G_COL_NAME_TOKEN,
1965 p_token1_value => 'Catchup Settlement');
1966 RAISE OKL_API.G_EXCEPTION_ERROR;
1967 END IF;
1968
1969 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1970 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Catchup :8');
1971 END IF;
1972 IF (l_krpv_rec.catchup_basis_code is NOT NULL AND
1973 l_krpv_rec.catchup_basis_code <> G_MISS_CHAR) THEN
1974 NULL;
1975 ELSE
1976 OKC_API.set_message(p_app_name => G_APP_NAME,
1977 p_msg_name => G_REQUIRED_VALUE,
1978 p_token1 => G_COL_NAME_TOKEN,
1979 p_token1_value => 'Catchup Basis');
1980 RAISE OKL_API.G_EXCEPTION_ERROR;
1981 END IF;
1982
1983
1984 END IF;
1985
1986 END IF; -- if STREAMS and CATCHUP/CLEANUP
1987
1988 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1989 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before calling update_row() ');
1990 END IF;
1991 OKL_KRP_PVT.update_row(
1992 p_api_version,
1993 p_init_msg_list,
1994 x_return_status,
1995 x_msg_count,
1996 x_msg_data,
1997 l_krpv_rec,
1998 x_krpv_rec);
1999
2000 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2001 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After update_row() finished');
2002 END IF;
2003 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2004 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2005 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2006 RAISE OKL_API.G_EXCEPTION_ERROR;
2007 END IF;
2008
2009 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2010 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Before calling cascade_lease_status_update...');
2011 END IF;
2012 okl_contract_status_pub.cascade_lease_status_edit
2013 (p_api_version => p_api_version,
2014 p_init_msg_list => p_init_msg_list,
2015 x_return_status => x_return_status,
2016 x_msg_count => x_msg_count,
2017 x_msg_data => x_msg_data,
2018 p_chr_id => l_krpv_rec.khr_id);
2019
2020 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2021 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2022 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2023 raise OKL_API.G_EXCEPTION_ERROR;
2024 End If;
2025 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2026 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After cascade_lease_status_update finished ...');
2027 END IF;
2028
2029 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2030
2031 EXCEPTION
2032 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2033 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2034 p_api_name => l_api_name,
2035 p_pkg_name => g_pkg_name,
2036 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2037 x_msg_count => x_msg_count,
2038 x_msg_data => x_msg_data,
2039 p_api_type => g_api_type);
2040
2041 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2042 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2043 p_api_name => l_api_name,
2044 p_pkg_name => g_pkg_name,
2045 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2046 x_msg_count => x_msg_count,
2047 x_msg_data => x_msg_data,
2048 p_api_type => g_api_type);
2049
2050 WHEN OTHERS THEN
2051 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2052 p_api_name => l_api_name,
2053 p_pkg_name => g_pkg_name,
2054 p_exc_name => 'OTHERS',
2055 x_msg_count => x_msg_count,
2056 x_msg_data => x_msg_data,
2057 p_api_type => g_api_type);
2058 end;
2059
2060 -- First
2061 PROCEDURE update_k_rate_params(
2062 p_api_version IN NUMBER,
2063 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2064 x_return_status OUT NOCOPY VARCHAR2,
2065 x_msg_count OUT NOCOPY NUMBER,
2066 x_msg_data OUT NOCOPY VARCHAR2,
2067 p_krpr_rec IN krpr_rec_type,
2068 x_krpr_rec OUT NOCOPY krpr_rec_type) IS
2069
2070 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_K_RATE_PARAMS';
2071 l_api_version CONSTANT NUMBER := 1.0;
2072 l_krpv_rec krpv_rec_type;
2073 x_krpv_rec krpv_rec_type;
2074 l_count NUMBER;
2075
2076 begin
2077 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2078
2079 x_return_status := OKL_API.START_ACTIVITY(
2080 p_api_name => l_api_name,
2081 p_pkg_name => g_pkg_name,
2082 p_init_msg_list => p_init_msg_list,
2083 l_api_version => l_api_version,
2084 p_api_version => p_api_version,
2085 p_api_type => G_API_TYPE,
2086 x_return_status => x_return_status);
2087
2088 l_krpv_rec.khr_id := p_krpr_rec.khr_id;
2089 l_krpv_rec.parameter_type_code := p_krpr_rec.parameter_type_code;
2090 l_krpv_rec.effective_from_date := p_krpr_rec.effective_from_date;
2091 l_krpv_rec.effective_to_date := p_krpr_rec.effective_to_date;
2092 l_krpv_rec.interest_index_id := p_krpr_rec.interest_index_id;
2093 l_krpv_rec.base_rate := p_krpr_rec.base_rate;
2094 l_krpv_rec.interest_start_date := p_krpr_rec.interest_start_date;
2095 l_krpv_rec.adder_rate := p_krpr_rec.adder_rate;
2096 l_krpv_rec.maximum_rate := p_krpr_rec.maximum_rate;
2097 l_krpv_rec.minimum_rate := p_krpr_rec.minimum_rate;
2098 l_krpv_rec.principal_basis_code := p_krpr_rec.principal_basis_code;
2099 l_krpv_rec.days_in_a_month_code := p_krpr_rec.days_in_a_month_code;
2100 l_krpv_rec.days_in_a_year_code := p_krpr_rec.days_in_a_year_code;
2101 l_krpv_rec.interest_basis_code := p_krpr_rec.interest_basis_code;
2102
2103 OKL_KRP_PVT.update_row(
2104 p_api_version,
2105 p_init_msg_list,
2106 x_return_status,
2107 x_msg_count,
2108 x_msg_data,
2109 l_krpv_rec,
2110 x_krpv_rec);
2111
2112 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2113 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2114 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2115 RAISE OKL_API.G_EXCEPTION_ERROR;
2116 END IF;
2117
2118 x_krpr_rec.khr_id := x_krpv_rec.khr_id;
2119 x_krpr_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
2120 x_krpr_rec.effective_from_date := x_krpv_rec.effective_from_date;
2121 x_krpr_rec.effective_to_date := x_krpv_rec.effective_to_date;
2122 x_krpr_rec.interest_index_id := x_krpv_rec.interest_index_id;
2123 x_krpr_rec.base_rate := x_krpv_rec.base_rate;
2124 x_krpr_rec.interest_start_date := x_krpv_rec.interest_start_date;
2125 x_krpr_rec.adder_rate := x_krpv_rec.adder_rate;
2126 x_krpr_rec.maximum_rate := x_krpv_rec.maximum_rate;
2127 x_krpr_rec.minimum_rate := x_krpv_rec.minimum_rate;
2128 x_krpr_rec.principal_basis_code := x_krpv_rec.principal_basis_code;
2129 x_krpr_rec.days_in_a_month_code := x_krpv_rec.days_in_a_month_code;
2130 x_krpr_rec.days_in_a_year_code := x_krpv_rec.days_in_a_year_code;
2131 x_krpr_rec.interest_basis_code := x_krpv_rec.interest_basis_code;
2132
2133 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2134
2135 EXCEPTION
2136 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2137 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2138 p_api_name => l_api_name,
2139 p_pkg_name => g_pkg_name,
2140 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2141 x_msg_count => x_msg_count,
2142 x_msg_data => x_msg_data,
2143 p_api_type => g_api_type);
2144
2145 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2146 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2147 p_api_name => l_api_name,
2148 p_pkg_name => g_pkg_name,
2149 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2150 x_msg_count => x_msg_count,
2151 x_msg_data => x_msg_data,
2152 p_api_type => g_api_type);
2153
2154 WHEN OTHERS THEN
2155 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2156 p_api_name => l_api_name,
2157 p_pkg_name => g_pkg_name,
2158 p_exc_name => 'OTHERS',
2159 x_msg_count => x_msg_count,
2160 x_msg_data => x_msg_data,
2161 p_api_type => g_api_type);
2162 end;
2163
2164 -- Second
2165 PROCEDURE update_k_rate_params(
2166 p_api_version IN NUMBER,
2167 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2168 x_return_status OUT NOCOPY VARCHAR2,
2169 x_msg_count OUT NOCOPY NUMBER,
2170 x_msg_data OUT NOCOPY VARCHAR2,
2171 p_krpar_rec IN krpar_rec_type,
2172 x_krpar_rec OUT NOCOPY krpar_rec_type) IS
2173
2174 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_K_RATE_PARAMS';
2175 l_api_version CONSTANT NUMBER := 1.0;
2176 l_krpv_rec krpv_rec_type;
2177 x_krpv_rec krpv_rec_type;
2178 l_count NUMBER;
2179
2180 begin
2181 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2182
2183 x_return_status := OKL_API.START_ACTIVITY(
2184 p_api_name => l_api_name,
2185 p_pkg_name => g_pkg_name,
2186 p_init_msg_list => p_init_msg_list,
2187 l_api_version => l_api_version,
2188 p_api_version => p_api_version,
2189 p_api_type => G_API_TYPE,
2190 x_return_status => x_return_status);
2191
2192 l_krpv_rec.khr_id := p_krpar_rec.khr_id;
2193 l_krpv_rec.parameter_type_code := p_krpar_rec.parameter_type_code;
2194 l_krpv_rec.effective_from_date := p_krpar_rec.effective_from_date;
2195 l_krpv_rec.effective_to_date := p_krpar_rec.effective_to_date;
2196 l_krpv_rec.rate_delay_code := p_krpar_rec.rate_delay_code;
2197 l_krpv_rec.rate_delay_frequency := p_krpar_rec.rate_delay_frequency;
2198 l_krpv_rec.compounding_frequency_code := p_krpar_rec.compounding_frequency_code;
2199 l_krpv_rec.calculation_formula_id := p_krpar_rec.calculation_formula_id;
2200 l_krpv_rec.catchup_basis_code := p_krpar_rec.catchup_basis_code;
2201 l_krpv_rec.catchup_start_date := p_krpar_rec.catchup_start_date;
2202 l_krpv_rec.catchup_settlement_code := p_krpar_rec.catchup_settlement_code;
2203 l_krpv_rec.rate_change_start_date := p_krpar_rec.rate_change_start_date;
2204 l_krpv_rec.rate_change_frequency_code := p_krpar_rec.rate_change_frequency_code;
2205 l_krpv_rec.rate_change_value := p_krpar_rec.rate_change_value;
2206
2207 OKL_KRP_PVT.update_row(
2208 p_api_version,
2209 p_init_msg_list,
2210 x_return_status,
2211 x_msg_count,
2212 x_msg_data,
2213 l_krpv_rec,
2214 x_krpv_rec);
2215
2216 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2217 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2218 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2219 RAISE OKL_API.G_EXCEPTION_ERROR;
2220 END IF;
2221
2222 x_krpar_rec.khr_id := x_krpv_rec.khr_id;
2223 x_krpar_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
2224 x_krpar_rec.effective_from_date := x_krpv_rec.effective_from_date;
2225 x_krpar_rec.effective_to_date := x_krpv_rec.effective_to_date;
2226 x_krpar_rec.rate_delay_code := x_krpv_rec.rate_delay_code;
2227 x_krpar_rec.rate_delay_frequency := x_krpv_rec.rate_delay_frequency;
2228 x_krpar_rec.compounding_frequency_code := x_krpv_rec.compounding_frequency_code;
2229 x_krpar_rec.calculation_formula_id := x_krpv_rec.calculation_formula_id;
2230 x_krpar_rec.catchup_basis_code := x_krpv_rec.catchup_basis_code;
2231 x_krpar_rec.catchup_start_date := x_krpv_rec.catchup_start_date;
2232 x_krpar_rec.catchup_settlement_code := x_krpv_rec.catchup_settlement_code;
2233 x_krpar_rec.rate_change_start_date := x_krpv_rec.rate_change_start_date;
2234 x_krpar_rec.rate_change_frequency_code := x_krpv_rec.rate_change_frequency_code;
2235 x_krpar_rec.rate_change_value := x_krpv_rec.rate_change_value;
2236
2237 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2238
2239 EXCEPTION
2240 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2241 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2242 p_api_name => l_api_name,
2243 p_pkg_name => g_pkg_name,
2244 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2245 x_msg_count => x_msg_count,
2246 x_msg_data => x_msg_data,
2247 p_api_type => g_api_type);
2248
2249 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2250 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2251 p_api_name => l_api_name,
2252 p_pkg_name => g_pkg_name,
2253 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2254 x_msg_count => x_msg_count,
2255 x_msg_data => x_msg_data,
2256 p_api_type => g_api_type);
2257
2258 WHEN OTHERS THEN
2259 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2260 p_api_name => l_api_name,
2261 p_pkg_name => g_pkg_name,
2262 p_exc_name => 'OTHERS',
2263 x_msg_count => x_msg_count,
2264 x_msg_data => x_msg_data,
2265 p_api_type => g_api_type);
2266 end;
2267
2268 -- Third
2269 PROCEDURE update_k_rate_params(
2270 p_api_version IN NUMBER,
2271 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2272 x_return_status OUT NOCOPY VARCHAR2,
2273 x_msg_count OUT NOCOPY NUMBER,
2274 x_msg_data OUT NOCOPY VARCHAR2,
2275 p_krpc_rec IN krpc_rec_type,
2276 x_krpc_rec OUT NOCOPY krpc_rec_type) IS
2277
2278 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_K_RATE_PARAMS';
2279 l_api_version CONSTANT NUMBER := 1.0;
2280 l_krpv_rec krpv_rec_type;
2281 x_krpv_rec krpv_rec_type;
2282 l_count NUMBER;
2283
2284 begin
2285 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2286
2287 x_return_status := OKL_API.START_ACTIVITY(
2288 p_api_name => l_api_name,
2289 p_pkg_name => g_pkg_name,
2290 p_init_msg_list => p_init_msg_list,
2291 l_api_version => l_api_version,
2292 p_api_version => p_api_version,
2293 p_api_type => G_API_TYPE,
2294 x_return_status => x_return_status);
2295
2296 l_krpv_rec.khr_id := p_krpc_rec.khr_id;
2297 l_krpv_rec.parameter_type_code := p_krpc_rec.parameter_type_code;
2298 l_krpv_rec.effective_from_date := p_krpc_rec.effective_from_date;
2299 l_krpv_rec.effective_to_date := p_krpc_rec.effective_to_date;
2300 l_krpv_rec.conversion_option_code := p_krpc_rec.conversion_option_code;
2301 l_krpv_rec.next_conversion_date := p_krpc_rec.next_conversion_date;
2302 l_krpv_rec.conversion_type_code := p_krpc_rec.conversion_type_code;
2303
2304 OKL_KRP_PVT.update_row(
2305 p_api_version,
2306 p_init_msg_list,
2307 x_return_status,
2308 x_msg_count,
2309 x_msg_data,
2310 l_krpv_rec,
2311 x_krpv_rec);
2312
2313 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2314 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2315 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2316 RAISE OKL_API.G_EXCEPTION_ERROR;
2317 END IF;
2318
2319 x_krpc_rec.khr_id := x_krpv_rec.khr_id;
2320 x_krpc_rec.parameter_type_code := x_krpv_rec.parameter_type_code;
2321 x_krpc_rec.effective_from_date := x_krpv_rec.effective_from_date;
2322 x_krpc_rec.effective_to_date := x_krpv_rec.effective_to_date;
2323 x_krpc_rec.conversion_option_code := x_krpv_rec.conversion_option_code;
2324 x_krpc_rec.next_conversion_date := x_krpv_rec.next_conversion_date;
2325 x_krpc_rec.conversion_type_code := x_krpv_rec.conversion_type_code;
2326
2327 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2328
2329 EXCEPTION
2330 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2331 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2332 p_api_name => l_api_name,
2333 p_pkg_name => g_pkg_name,
2334 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2335 x_msg_count => x_msg_count,
2336 x_msg_data => x_msg_data,
2337 p_api_type => g_api_type);
2338
2339 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2340 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2341 p_api_name => l_api_name,
2342 p_pkg_name => g_pkg_name,
2343 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2344 x_msg_count => x_msg_count,
2345 x_msg_data => x_msg_data,
2346 p_api_type => g_api_type);
2347
2348 WHEN OTHERS THEN
2349 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2350 p_api_name => l_api_name,
2351 p_pkg_name => g_pkg_name,
2352 p_exc_name => 'OTHERS',
2353 x_msg_count => x_msg_count,
2354 x_msg_data => x_msg_data,
2355 p_api_type => g_api_type);
2356 end;
2357
2358 PROCEDURE delete_k_rate_params(
2359 p_api_version IN NUMBER,
2360 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2361 x_return_status OUT NOCOPY VARCHAR2,
2362 x_msg_count OUT NOCOPY NUMBER,
2363 x_msg_data OUT NOCOPY VARCHAR2,
2364 p_krpdel_tbl IN krpdel_tbl_type) IS
2365
2366 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_K_RATE_PARAMS';
2367 l_api_version CONSTANT NUMBER := 1.0;
2368 l_krpv_rec krpv_rec_type;
2369 l_krpv_rec2 krpv_rec_type;
2370 l_krpv_rec3 krpv_rec_type;
2371
2372 CURSOR get_effective_to_date_csr(
2373 p_khr_id NUMBER,
2374 p_parameter_type_code VARCHAR2,
2375 p_effective_from_date DATE) IS
2376 select rate.effective_to_date,
2377 contract.sts_code,
2378 contract.orig_system_source_code,
2379 contract.orig_system_id1
2380 FROM OKL_K_RATE_PARAMS rate,
2381 OKC_K_HEADERS_B contract
2382 WHERE rate.khr_id = p_khr_id
2383 AND rate.parameter_type_code = p_parameter_type_code
2384 AND rate.effective_from_date = p_effective_from_date
2385 AND rate.khr_id = contract.id;
2386
2387 CURSOR get_orig_effective_from_dt_csr(
2388 p_khr_id NUMBER,
2389 p_parameter_type_code VARCHAR2) IS
2390 select rate.effective_from_date
2391 FROM OKL_K_RATE_PARAMS rate
2392 WHERE rate.khr_id = p_khr_id
2393 AND rate.parameter_type_code = p_parameter_type_code
2394 AND rate.effective_to_date IS NULL;
2395
2396 l_all_rate_params_null BOOLEAN;
2397 l_parameter_type_code VARCHAR2(30);
2398 l_effective_to_date DATE;
2399 l_sts_code OKC_K_HEADERS_B.STS_CODE%TYPE;
2400 l_orig_system_source_code OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2401 l_orig_system_id1 OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
2402 l_orig_effective_from_date DATE;
2403 l_del_count NUMBER := 0; -- Bug 4874280
2404 l_khr_id NUMBER;
2405 begin
2406 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2407
2408 x_return_status := OKL_API.START_ACTIVITY(
2409 p_api_name => l_api_name,
2410 p_pkg_name => g_pkg_name,
2411 p_init_msg_list => p_init_msg_list,
2412 l_api_version => l_api_version,
2413 p_api_version => p_api_version,
2414 p_api_type => G_API_TYPE,
2415 x_return_status => x_return_status);
2416
2417 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2418 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In delete_k_rate_params...');
2419 END IF;
2420 IF (p_krpdel_tbl.COUNT > 0) THEN
2421 FOR i in p_krpdel_tbl.FIRST..p_krpdel_tbl.LAST
2422 LOOP
2423 -- AKP: todo (change actual lookup values)
2424 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2425 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Delete:rate_type=' || p_krpdel_tbl(i).rate_type);
2426 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Delete:khr_id=' || p_krpdel_tbl(i).khr_id);
2427 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Delete:effective_from_date=' || p_krpdel_tbl(i).effective_from_date);
2428 END IF;
2429 l_khr_id := p_krpdel_tbl(i).khr_id;
2430 --Bug# 7440232
2431 IF (p_krpdel_tbl(i).rate_type IN ('INTEREST_RATE_PARAMS', 'CONVERSION_BASIS')) THEN
2432 l_parameter_type_code := 'ACTUAL';
2433 --Bug# 7440232
2434 ELSIF (p_krpdel_tbl(i).rate_type IN ('INTEREST_RATE_PARAMS_CONV')) THEN
2435 l_parameter_type_code := 'CONVERSION';
2436 ELSE
2437 OKC_API.set_message(p_app_name => G_APP_NAME,
2438 p_msg_name => 'OKL_LLA_VAR_RATE_INV_PARAM');
2439 RAISE OKL_API.G_EXCEPTION_ERROR;
2440 END IF;
2441
2442 FOR r IN get_effective_to_date_csr(
2443 p_krpdel_tbl(i).khr_id,
2444 l_parameter_type_code,
2445 p_krpdel_tbl(i).effective_from_date)
2446 LOOP
2447 l_effective_to_date := r.effective_to_date;
2448 l_sts_code := r.sts_code;
2449 l_orig_system_source_code := r.orig_system_source_code;
2450 l_orig_system_id1 := r.orig_system_id1;
2451 END LOOP;
2452
2453 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2454 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_system_source_code=' || l_orig_system_source_code);
2455 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_system_id1=' || l_orig_system_id1);
2456 END IF;
2457 IF (l_effective_to_date IS NOT NULL) THEN
2458 OKC_API.set_message(p_app_name => G_APP_NAME,
2459 p_msg_name => 'OKL_LLA_VAR_RATE_DELETE_ERR');
2460 RAISE OKL_API.G_EXCEPTION_ERROR;
2461 END IF;
2462
2463 --Bug# 7440232
2464 IF (l_sts_code = 'BOOKED') THEN
2465 OKC_API.set_message(p_app_name => G_APP_NAME,
2466 p_msg_name => 'OKL_LLA_VAR_RATE_DELETE_ERR1');
2467 RAISE OKL_API.G_EXCEPTION_ERROR;
2468 END IF;
2469
2470 IF (l_orig_system_source_code = 'OKL_REBOOK') THEN
2471
2472 FOR r IN get_orig_effective_from_dt_csr(
2473 --p_krpdel_tbl(i).khr_id,
2474 l_orig_system_id1,
2475 l_parameter_type_code)
2476 LOOP
2477 l_orig_effective_from_date := r.effective_from_date;
2478 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2479 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_orig_effective_from_date=' || l_orig_effective_from_date);
2480 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'krpdel.effective_from_date=' || p_krpdel_tbl(i).effective_from_date);
2481 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'krpdel.khr_id=' || p_krpdel_tbl(i).khr_id);
2482 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_parameter_type_code=' || l_parameter_type_code);
2483 END IF;
2484 END LOOP;
2485
2486 --Bug# 7440232
2487 IF (l_orig_effective_from_date =
2488 p_krpdel_tbl(i).effective_from_date) THEN
2489 OKC_API.set_message(p_app_name => G_APP_NAME,
2490 p_msg_name => 'OKL_LLA_VAR_RATE_DELETE_ERR2');
2491 RAISE OKL_API.G_EXCEPTION_ERROR;
2492 END IF;
2493
2494 /*UPDATE OKL_K_RATE_PARAMS
2495 SET EFFECTIVE_TO_DATE = NULL
2496 WHERE KHR_ID = p_krpdel_tbl(i).khr_id
2497 AND PARAMETER_TYPE_CODE = l_parameter_type_code
2498 AND EFFECTIVE_TO_DATE = p_krpdel_tbl(i).effective_from_date - 1;*/
2499 END IF;
2500
2501 SELECT KHR_ID, PARAMETER_TYPE_CODE, EFFECTIVE_FROM_DATE,
2502 EFFECTIVE_TO_DATE, INTEREST_INDEX_ID, BASE_RATE,
2503 INTEREST_START_DATE, ADDER_RATE, MAXIMUM_RATE,
2504 MINIMUM_RATE, PRINCIPAL_BASIS_CODE, DAYS_IN_A_MONTH_CODE,
2505 DAYS_IN_A_YEAR_CODE, INTEREST_BASIS_CODE, RATE_DELAY_CODE,
2506 RATE_DELAY_FREQUENCY, COMPOUNDING_FREQUENCY_CODE, CALCULATION_FORMULA_ID,
2507 CATCHUP_BASIS_CODE, CATCHUP_START_DATE, CATCHUP_SETTLEMENT_CODE,
2508 RATE_CHANGE_START_DATE, RATE_CHANGE_FREQUENCY_CODE, RATE_CHANGE_VALUE,
2509 CONVERSION_OPTION_CODE, NEXT_CONVERSION_DATE, CONVERSION_TYPE_CODE,
2510 ATTRIBUTE_CATEGORY, ATTRIBUTE1, ATTRIBUTE2,
2511 ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5,
2512 ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8,
2513 ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11,
2514 ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
2515 ATTRIBUTE15, created_by, creation_date,
2516 last_updated_by, last_update_date, last_update_login,
2517 CATCHUP_FREQUENCY_CODE
2518 INTO
2519 l_krpv_rec.KHR_ID, l_krpv_rec.parameter_type_code, l_krpv_rec.effective_from_date,
2520 l_krpv_rec.EFFECTIVE_TO_DATE, l_krpv_rec.INTEREST_INDEX_ID, l_krpv_rec.BASE_RATE,
2521 l_krpv_rec.INTEREST_START_DATE, l_krpv_rec.ADDER_RATE, l_krpv_rec.MAXIMUM_RATE,
2522 l_krpv_rec.MINIMUM_RATE, l_krpv_rec.PRINCIPAL_BASIS_CODE, l_krpv_rec.DAYS_IN_A_MONTH_CODE,
2523 l_krpv_rec.DAYS_IN_A_YEAR_CODE, l_krpv_rec.INTEREST_BASIS_CODE, l_krpv_rec.RATE_DELAY_CODE,
2524 l_krpv_rec.RATE_DELAY_FREQUENCY, l_krpv_rec.COMPOUNDING_FREQUENCY_CODE, l_krpv_rec.CALCULATION_FORMULA_ID,
2525 l_krpv_rec.CATCHUP_BASIS_CODE, l_krpv_rec.CATCHUP_START_DATE, l_krpv_rec.CATCHUP_SETTLEMENT_CODE,
2526 l_krpv_rec.RATE_CHANGE_START_DATE, l_krpv_rec.RATE_CHANGE_FREQUENCY_CODE, l_krpv_rec.RATE_CHANGE_VALUE,
2527 l_krpv_rec.CONVERSION_OPTION_CODE, l_krpv_rec.NEXT_CONVERSION_DATE, l_krpv_rec.CONVERSION_TYPE_CODE,
2528 l_krpv_rec.ATTRIBUTE_CATEGORY, l_krpv_rec.ATTRIBUTE1, l_krpv_rec.ATTRIBUTE2,
2529 l_krpv_rec.ATTRIBUTE3, l_krpv_rec.ATTRIBUTE4, l_krpv_rec.ATTRIBUTE5,
2530 l_krpv_rec.ATTRIBUTE6, l_krpv_rec.ATTRIBUTE7, l_krpv_rec.ATTRIBUTE8,
2531 l_krpv_rec.ATTRIBUTE9, l_krpv_rec.ATTRIBUTE10, l_krpv_rec.ATTRIBUTE11,
2532 l_krpv_rec.ATTRIBUTE12, l_krpv_rec.ATTRIBUTE13, l_krpv_rec.ATTRIBUTE14,
2533 l_krpv_rec.ATTRIBUTE15, l_krpv_rec.CREATED_BY, l_krpv_rec.CREATION_DATE,
2534 l_krpv_rec.LAST_UPDATED_BY, l_krpv_rec.LAST_UPDATE_DATE, l_krpv_rec.LAST_UPDATE_LOGIN,
2535 l_krpv_rec.CATCHUP_FREQUENCY_CODE
2536 FROM OKL_K_RATE_PARAMS
2537 WHERE KHR_ID = p_krpdel_tbl(i).khr_id
2538 AND parameter_type_code = l_parameter_type_code
2539 AND effective_from_date = p_krpdel_tbl(i).effective_from_date;
2540
2541 --Bug# 7440232
2542 IF (p_krpdel_tbl(i).rate_type IN ('INTEREST_RATE_PARAMS', 'INTEREST_RATE_PARAMS_CONV')) THEN
2543 l_krpv_rec.interest_index_id := null;
2544 l_krpv_rec.base_rate := null;
2545 l_krpv_rec.adder_rate := null;
2546 l_krpv_rec.minimum_rate := null;
2547 l_krpv_rec.maximum_rate := null;
2548 l_krpv_rec.principal_basis_code := null;
2549 l_krpv_rec.interest_basis_code := null;
2550 l_krpv_rec.interest_start_date := null;
2551 l_krpv_rec.days_in_a_month_code := null;
2552 l_krpv_rec.days_in_a_year_code := null;
2553
2554 l_krpv_rec.rate_delay_code := null;
2555 l_krpv_rec.rate_delay_frequency := null;
2556 l_krpv_rec.compounding_frequency_code := null;
2557 l_krpv_rec.calculation_formula_id := null;
2558 l_krpv_rec.catchup_frequency_code := null;
2559 l_krpv_rec.catchup_start_date := null;
2560 l_krpv_rec.catchup_settlement_code := null;
2561 l_krpv_rec.catchup_basis_code := null;
2562 l_krpv_rec.rate_change_frequency_code := null;
2563 l_krpv_rec.rate_change_start_date := null;
2564 l_krpv_rec.rate_change_value := null;
2565
2566 UPDATE OKL_K_RATE_PARAMS
2567 SET interest_index_id = null,
2568 base_rate = null,
2569 adder_rate = null,
2570 minimum_rate = null,
2571 maximum_rate = null,
2572 principal_basis_code = null,
2573 interest_basis_code = null,
2574 interest_start_date = null,
2575 days_in_a_month_code = null,
2576 days_in_a_year_code = null,
2577 rate_delay_code = null,
2578 rate_delay_frequency = null,
2579 compounding_frequency_code = null,
2580 calculation_formula_id = null,
2581 catchup_frequency_code = null,
2582 catchup_start_date = null,
2583 catchup_settlement_code = null,
2584 catchup_basis_code = null,
2585 rate_change_frequency_code = null,
2586 rate_change_start_date = null,
2587 rate_change_value = null
2588 WHERE KHR_ID = p_krpdel_tbl(i).khr_id
2589 AND parameter_type_code = l_parameter_type_code
2590 AND effective_from_date = p_krpdel_tbl(i).effective_from_date;
2591 l_del_count := l_del_count + sql%rowcount;
2592
2593 ELSIF (p_krpdel_tbl(i).rate_type = 'CONVERSION_BASIS') THEN
2594 l_krpv_rec.conversion_option_code := null;
2595 l_krpv_rec.next_conversion_date := null;
2596 l_krpv_rec.conversion_type_code := null;
2597
2598 UPDATE OKL_K_RATE_PARAMS
2599 SET conversion_option_code = null,
2600 next_conversion_date = null,
2601 conversion_type_code = null
2602 WHERE KHR_ID = p_krpdel_tbl(i).khr_id
2603 AND parameter_type_code = l_parameter_type_code
2604 AND effective_from_date = p_krpdel_tbl(i).effective_from_date;
2605 l_del_count := l_del_count + sql%rowcount;
2606 END IF;
2607
2608 -- Check if all null
2609 l_all_rate_params_null := FALSE;
2610 IF (l_krpv_rec.interest_index_id IS NULL AND
2611 l_krpv_rec.base_rate IS NULL AND
2612 l_krpv_rec.adder_rate IS NULL AND
2613 l_krpv_rec.minimum_rate IS NULL AND
2614 l_krpv_rec.maximum_rate IS NULL AND
2615 l_krpv_rec.principal_basis_code IS NULL AND
2616 l_krpv_rec.interest_basis_code IS NULL AND
2617 l_krpv_rec.interest_start_date IS NULL AND
2618 l_krpv_rec.days_in_a_month_code IS NULL AND
2619 l_krpv_rec.days_in_a_year_code IS NULL AND
2620 l_krpv_rec.rate_delay_code IS NULL AND
2621 l_krpv_rec.rate_delay_frequency IS NULL AND
2622 l_krpv_rec.compounding_frequency_code IS NULL AND
2623 l_krpv_rec.calculation_formula_id IS NULL AND
2624 l_krpv_rec.catchup_frequency_code IS NULL AND
2625 l_krpv_rec.catchup_start_date IS NULL AND
2626 l_krpv_rec.catchup_settlement_code IS NULL AND
2627 l_krpv_rec.catchup_basis_code IS NULL AND
2628 l_krpv_rec.rate_change_frequency_code IS NULL AND
2629 l_krpv_rec.rate_change_start_date IS NULL AND
2630 l_krpv_rec.rate_change_value IS NULL AND
2631 l_krpv_rec.conversion_option_code IS NULL AND
2632 l_krpv_rec.next_conversion_date IS NULL AND
2633 l_krpv_rec.conversion_type_code IS NULL) THEN
2634
2635 l_all_rate_params_null := TRUE;
2636
2637 END IF;
2638
2639 IF (l_all_rate_params_null) THEN
2640 l_krpv_rec2.khr_id := p_krpdel_tbl(i).khr_id;
2641 l_krpv_rec2.parameter_type_code := l_parameter_type_code;
2642 l_krpv_rec2.effective_from_date := p_krpdel_tbl(i).effective_from_date;
2643
2644 OKL_KRP_PVT.delete_row(
2645 p_api_version,
2646 p_init_msg_list,
2647 x_return_status,
2648 x_msg_count,
2649 x_msg_data,
2650 l_krpv_rec2);
2651
2652 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2653 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2654 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2655 RAISE OKL_API.G_EXCEPTION_ERROR;
2656 END IF;
2657
2658 IF (l_orig_system_source_code = 'OKL_REBOOK') THEN
2659
2660 /*FOR r IN get_orig_effective_from_dt_csr(
2661 p_krpdel_tbl(i).khr_id,
2662 l_parameter_type_code)
2663 LOOP
2664 l_orig_effective_from_date := r.effective_from_date;
2665 print('l_orig_effective_from_date=' || l_orig_effective_from_date);
2666 print('krpdel.effective_from_date=' || p_krpdel_tbl(i).effective_from_date);
2667 print('krpdel.khr_id=' || p_krpdel_tbl(i).khr_id);
2668 print('l_parameter_type_code=' || l_parameter_type_code);
2669 END LOOP;
2670
2671 IF (l_orig_effective_from_date =
2672 p_krpdel_tbl(i).effective_from_date) THEN
2673 OKC_API.set_message(p_app_name => G_APP_NAME,
2674 p_msg_name => 'OKL_LA_VAR_RATE_DELETE_ERR2');
2675 RAISE OKL_API.G_EXCEPTION_ERROR;
2676 END IF;*/
2677
2678 UPDATE OKL_K_RATE_PARAMS
2679 SET EFFECTIVE_TO_DATE = NULL
2680 WHERE KHR_ID = p_krpdel_tbl(i).khr_id
2681 AND PARAMETER_TYPE_CODE = l_parameter_type_code
2682 AND EFFECTIVE_TO_DATE = p_krpdel_tbl(i).effective_from_date - 1;
2683 l_del_count := l_del_count + sql%rowcount;
2684 END IF;
2685
2686 END IF;
2687 l_krpv_rec := l_krpv_rec3;
2688 l_krpv_rec2 := l_krpv_rec3;
2689
2690 END LOOP;
2691 END IF;
2692
2693 -- Bug 4874280
2694 IF (l_del_count > 0) THEN
2695 okl_contract_status_pub.cascade_lease_status_edit
2696 (p_api_version => p_api_version,
2697 p_init_msg_list => p_init_msg_list,
2698 x_return_status => x_return_status,
2699 x_msg_count => x_msg_count,
2700 x_msg_data => x_msg_data,
2701 p_chr_id => l_khr_id);
2702
2703 If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
2704 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2705 Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
2706 raise OKL_API.G_EXCEPTION_ERROR;
2707 End If;
2708 END IF;
2709
2710 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2711
2712 EXCEPTION
2713 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2714 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2715 p_api_name => l_api_name,
2716 p_pkg_name => g_pkg_name,
2717 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2718 x_msg_count => x_msg_count,
2719 x_msg_data => x_msg_data,
2720 p_api_type => g_api_type);
2721
2722 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2723 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2724 p_api_name => l_api_name,
2725 p_pkg_name => g_pkg_name,
2726 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2727 x_msg_count => x_msg_count,
2728 x_msg_data => x_msg_data,
2729 p_api_type => g_api_type);
2730
2731 WHEN OTHERS THEN
2732 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2733 p_api_name => l_api_name,
2734 p_pkg_name => g_pkg_name,
2735 p_exc_name => 'OTHERS',
2736 x_msg_count => x_msg_count,
2737 x_msg_data => x_msg_data,
2738 p_api_type => g_api_type);
2739 end;
2740
2741 /* For QA checker to call - stack Error messages and no raise exception*/
2742 PROCEDURE validate_k_rate_params(
2743 p_api_version IN NUMBER,
2744 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2745 x_return_status OUT NOCOPY VARCHAR2,
2746 x_msg_count OUT NOCOPY NUMBER,
2747 x_msg_data OUT NOCOPY VARCHAR2,
2748 p_khr_id IN okc_k_headers_b.id%type,
2749 p_validate_flag IN VARCHAR2 DEFAULT 'Y') IS
2750
2751 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_K_RATE_PARAMS';
2752 l_api_version CONSTANT NUMBER := 1.0;
2753
2754 p_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
2755 x_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
2756 x_no_data_found BOOLEAN;
2757 l_k_rate_tbl krpv_tbl_type;
2758 l_k_rate_tbl2 krpv_tbl_type;
2759 l_rate_counter NUMBER := 1;
2760
2761 CURSOR l_hdr_csr( chrId NUMBER ) IS
2762 SELECT
2763 CHR.authoring_org_id,
2764 CHR.inv_organization_id,
2765 khr.deal_type,
2766 pdt.id pid,
2767 NVL(pdt.reporting_pdt_id, -1) report_pdt_id
2768 FROM okc_k_headers_b CHR,
2769 okl_k_headers khr,
2770 okl_products_v pdt
2771 WHERE khr.id = CHR.id
2772 AND CHR.id = chrId
2773 AND khr.pdt_id = pdt.id(+);
2774
2775 l_hdr_rec l_hdr_csr%ROWTYPE;
2776
2777 CURSOR csr_get_rate_tbl(p_id NUMBER) IS
2778 SELECT
2779 khr_id
2780 ,parameter_type_code
2781 ,effective_from_date
2782 ,effective_to_date
2783 ,interest_index_id
2784 ,base_rate
2785 ,interest_start_date
2786 ,adder_rate
2787 ,maximum_rate
2788 ,minimum_rate
2789 ,principal_basis_code
2790 ,days_in_a_month_code
2791 ,days_in_a_year_code
2792 ,interest_basis_code
2793 ,rate_delay_code
2794 ,rate_delay_frequency
2795 ,compounding_frequency_code
2796 ,calculation_formula_id
2797 ,catchup_basis_code
2798 ,catchup_start_date
2799 ,catchup_settlement_code
2800 ,rate_change_start_date
2801 ,rate_change_frequency_code
2802 ,rate_change_value
2803 ,conversion_option_code
2804 ,next_conversion_date
2805 ,conversion_type_code
2806 ,attribute_category
2807 ,attribute1
2808 ,attribute2
2809 ,attribute3
2810 ,attribute4
2811 ,attribute5
2812 ,attribute6
2813 ,attribute7
2814 ,attribute8
2815 ,attribute9
2816 ,attribute10
2817 ,attribute11
2818 ,attribute12
2819 ,attribute13
2820 ,attribute14
2821 ,attribute15
2822 ,created_by
2823 ,creation_date
2824 ,last_updated_by
2825 ,last_update_date
2826 ,last_update_login
2827 ,catchup_frequency_code
2828 FROM okl_k_rate_params
2829 WHERE khr_id = p_id;
2830
2831 l_deal_type VARCHAR2(30);
2832 l_interest_calculation_basis VARCHAR2(30);
2833 l_revenue_recognition_method VARCHAR2(30);
2834 begin
2835 x_return_status := OKL_API.START_ACTIVITY(
2836 p_api_name => l_api_name,
2837 p_pkg_name => g_pkg_name,
2838 p_init_msg_list => p_init_msg_list,
2839 l_api_version => l_api_version,
2840 p_api_version => p_api_version,
2841 p_api_type => G_API_TYPE,
2842 x_return_status => x_return_status);
2843
2844 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2845 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In validate_k_rate_params QA checker' || to_char(sysdate,'HH24:MI:SS') || ' with p_khr_id= ' || p_khr_id || ' ...');
2846 END IF;
2847 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2848 OPEN l_hdr_csr(p_khr_id);
2849 FETCH l_hdr_csr INTO l_hdr_rec;
2850 IF l_hdr_csr%NOTFOUND THEN
2851 CLOSE l_hdr_csr;
2852 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2853 END IF;
2854 CLOSE l_hdr_csr;
2855
2856 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2857 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'deal_type=' || l_hdr_rec.deal_type);
2858 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'pid=' || l_hdr_rec.pid);
2859 END IF;
2860
2861 p_pdtv_rec.id := l_hdr_rec.pid;
2862 OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
2863 p_api_version => p_api_version,
2864 p_init_msg_list => p_init_msg_list,
2865 x_return_status => x_return_status,
2866 x_msg_count => x_msg_count,
2867 x_msg_data => x_msg_data,
2868 p_pdtv_rec => p_pdtv_rec,
2869 x_no_data_found => x_no_data_found,
2870 p_pdt_parameter_rec => x_pdt_parameter_rec);
2871
2872 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2873 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2874 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2875 RAISE OKL_API.G_EXCEPTION_ERROR;
2876 ELSIF NVL(x_pdt_parameter_rec.Name,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
2877 x_return_status := OKL_API.G_RET_STS_ERROR;
2878 RAISE OKL_API.G_EXCEPTION_ERROR;
2879 END IF;
2880
2881 --print('Product_subclass=' || x_pdt_parameter_rec.product_subclass);
2882 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2883 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Deal_type=' || x_pdt_parameter_rec.Deal_type);
2884 END IF;
2885 --print('Tax_owner=' || x_pdt_parameter_rec.Tax_owner);
2886 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2887 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Revenue_Recognition_Method=' || x_pdt_parameter_rec.Revenue_Recognition_Method);
2888 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Interest_Calculation_Basis=' || x_pdt_parameter_rec.Interest_Calculation_Basis);
2889 END IF;
2890 l_deal_type := x_pdt_parameter_rec.deal_type;
2891 l_interest_calculation_basis := x_pdt_parameter_rec.interest_calculation_basis;
2892 l_revenue_recognition_method := x_pdt_parameter_rec.revenue_recognition_method;
2893
2894 -- AKP: Todo: Get l_k_rate_tbl from database
2895 Open csr_get_rate_tbl(p_khr_id);
2896 LOOP
2897 Fetch csr_get_rate_tbl BULK COLLECT INTO l_k_rate_tbl2 LIMIT G_BULK_SIZE;
2898 EXIT WHEN l_k_rate_tbl2.COUNT = 0;
2899 FOR i IN l_k_rate_tbl2.FIRST..l_k_rate_tbl2.LAST
2900 LOOP
2901 l_k_rate_tbl(l_rate_counter) := l_k_rate_tbl2(i);
2902 l_rate_counter := l_rate_counter + 1;
2903 END LOOP;
2904 END LOOP;
2905 CLOSE csr_get_rate_tbl;
2906
2907 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2908 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After csr_get_rate_tbl...');
2909 END IF;
2910 /* IF (((l_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST')) AND
2911 (l_interest_calculation_basis IN ('FIXED', 'REAMORT'))) OR
2912 ((l_deal_type = 'LOAN') AND
2913 (l_interest_calculation_basis = 'REAMORT')) ) THEN
2914 IF (l_k_rate_tbl.COUNT > 0) THEN
2915 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
2916 ,p_msg_name => G_OKL_LLA_VAR_RATE_ERROR
2917 ,p_token1 => G_LEASE_TYPE
2918 ,p_token1_value => 'LEASEOP,LEASEDF,LEASEST'
2919 ,p_token2 => G_INT_BASIS
2920 ,p_token2_value => 'FIXED,REAMORT');
2921 RAISE OKL_API.G_EXCEPTION_ERROR;
2922 END IF;
2923 ELS */
2924 IF (((l_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST')) AND
2925 (l_interest_calculation_basis IN ( 'FLOAT_FACTORS', 'REAMORT'))) OR
2926 --((l_deal_type = 'LOAN') AND
2927 --(l_interest_calculation_basis IN
2928 --('FIXED','FLOAT', 'CATCHUP/CLEANUP'))) OR
2929 (l_deal_type = 'LOAN' AND
2930 (l_interest_calculation_basis IN
2931 ('FLOAT', 'REAMORT', 'CATCHUP/CLEANUP')
2932 OR
2933 (l_interest_calculation_basis='FIXED' AND
2934 l_revenue_recognition_method = 'ACTUAL') )) OR
2935 ((l_deal_type = 'LOAN-REVOLVING') AND
2936 (l_interest_calculation_basis = 'FLOAT')) ) THEN
2937 IF (l_k_rate_tbl.COUNT < 1) THEN
2938 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
2939 ,p_msg_name => G_OKL_LLA_VAR_RATE_MISSING
2940 ,p_token1 => G_CONT_ID
2941 ,p_token1_value => p_khr_id);
2942 RAISE OKL_API.G_EXCEPTION_ERROR;
2943 END IF;
2944
2945 END IF;
2946
2947 IF (l_k_rate_tbl.COUNT > 0) THEN
2948 okl_krp_pvt.validate_row(
2949 p_api_version => p_api_version,
2950 p_init_msg_list => p_init_msg_list,
2951 x_return_status => x_return_status,
2952 x_msg_count => x_msg_count,
2953 x_msg_data => x_msg_data,
2954 p_deal_type => x_pdt_parameter_rec.deal_type,
2955 p_rev_rec_method => x_pdt_parameter_rec.Revenue_recognition_method,
2956 p_int_calc_basis => x_pdt_parameter_rec.interest_calculation_basis,
2957 p_krpv_tbl => l_k_rate_tbl,
2958 p_stack_messages => 'Y',
2959 p_validate_flag => 'F'
2960 );
2961 END IF;
2962 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2963 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validation_row: x_return_status=' || x_return_status);
2964 END IF;
2965
2966 -- Bug 4722746
2967 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2968 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_k_rate_tbl.COUNT=' || l_k_rate_tbl.COUNT);
2969 END IF;
2970 IF (l_interest_calculation_basis = 'CATCHUP/CLEANUP'
2971 AND l_revenue_recognition_method = 'STREAMS'
2972 AND l_k_rate_tbl.COUNT > 0 ) THEN
2973
2974 FOR i IN l_k_rate_tbl.FIRST..l_k_rate_tbl.LAST
2975 LOOP
2976 --print('Catchup :1');
2977 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2978 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'i=' || i || ':' || l_k_rate_tbl(i).catchup_frequency_code);
2979 END IF;
2980 IF (l_k_rate_tbl(i).catchup_frequency_code is NOT NULL AND
2981 l_k_rate_tbl(i).catchup_frequency_code <> G_MISS_CHAR) THEN
2982 NULL;
2983 ELSE
2984 OKC_API.set_message(p_app_name => G_APP_NAME,
2985 p_msg_name => G_REQUIRED_VALUE,
2986 p_token1 => G_COL_NAME_TOKEN,
2987 p_token1_value => 'Catchup Frequency');
2988 RAISE OKL_API.G_EXCEPTION_ERROR;
2989 END IF;
2990
2991 --print('Catchup :2');
2992 /*IF (l_k_rate_tbl(i).catchup_start_date is NOT NULL AND
2993 l_k_rate_tbl(i).catchup_start_date <> G_MISS_DATE) THEN
2994 NULL;
2995 ELSE
2996 l_k_rate_tbl(i).catchup_start_date := l_contract_start_date;
2997 END IF;*/
2998
2999 --print('Catchup :3');
3000 IF (l_k_rate_tbl(i).catchup_settlement_code is NOT NULL AND
3001 l_k_rate_tbl(i).catchup_settlement_code <> G_MISS_CHAR) THEN
3002 NULL;
3003 ELSE
3004 OKC_API.set_message(p_app_name => G_APP_NAME,
3005 p_msg_name => G_REQUIRED_VALUE,
3006 p_token1 => G_COL_NAME_TOKEN,
3007 p_token1_value => 'Catchup Settlement');
3008 RAISE OKL_API.G_EXCEPTION_ERROR;
3009 END IF;
3010
3011 --print('Catchup :4');
3012 IF (l_k_rate_tbl(i).catchup_basis_code is NOT NULL AND
3013 l_k_rate_tbl(i).catchup_basis_code <> G_MISS_CHAR) THEN
3014 NULL;
3015 ELSE
3016 OKC_API.set_message(p_app_name => G_APP_NAME,
3017 p_msg_name => G_REQUIRED_VALUE,
3018 p_token1 => G_COL_NAME_TOKEN,
3019 p_token1_value => 'Catchup Basis');
3020 RAISE OKL_API.G_EXCEPTION_ERROR;
3021 END IF;
3022 END LOOP;
3023
3024 END IF;
3025
3026
3027 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3028
3029 EXCEPTION
3030 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3031 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3032 p_api_name => l_api_name,
3033 p_pkg_name => g_pkg_name,
3034 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3035 x_msg_count => x_msg_count,
3036 x_msg_data => x_msg_data,
3037 p_api_type => g_api_type);
3038
3039 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3040 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3041 p_api_name => l_api_name,
3042 p_pkg_name => g_pkg_name,
3043 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3044 x_msg_count => x_msg_count,
3045 x_msg_data => x_msg_data,
3046 p_api_type => g_api_type);
3047
3048 WHEN OTHERS THEN
3049 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3050 p_api_name => l_api_name,
3051 p_pkg_name => g_pkg_name,
3052 p_exc_name => 'OTHERS',
3053 x_msg_count => x_msg_count,
3054 x_msg_data => x_msg_data,
3055 p_api_type => g_api_type);
3056 end;
3057
3058 /* For UI/contract import to call */
3059 PROCEDURE validate_k_rate_params(
3060 p_api_version IN NUMBER,
3061 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3062 x_return_status OUT NOCOPY VARCHAR2,
3063 x_msg_count OUT NOCOPY NUMBER,
3064 x_msg_data OUT NOCOPY VARCHAR2,
3065 p_product_id IN okl_products_v.id%type,
3066 p_k_rate_tbl IN krpv_tbl_type,
3067 --Bug# 7440232
3068 p_validate_flag IN VARCHAR2 DEFAULT 'Y') IS
3069
3070 p_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
3071 x_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
3072 x_no_data_found BOOLEAN;
3073
3074 l_pdt_id number;
3075 begin
3076
3077 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3078 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In validate_k_rate_params from UI/contract import...');
3079 END IF;
3080 /*begin
3081 select id into l_pdt_id
3082 from okl_products_v
3083 where name = p_product_name;
3084 exception when no_data_found then
3085 null;
3086 -- ToDo AKP: Set Message : Product not found. Raise error.
3087 end; */
3088 p_pdtv_rec.id := p_product_id;
3089 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3090 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_product_id=' || to_char(p_product_id));
3091 END IF;
3092 OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
3093 p_api_version => p_api_version,
3094 p_init_msg_list => p_init_msg_list,
3095 x_return_status => x_return_status,
3096 x_msg_count => x_msg_count,
3097 x_msg_data => x_msg_data,
3098 p_pdtv_rec => p_pdtv_rec,
3099 x_no_data_found => x_no_data_found,
3100 p_pdt_parameter_rec => x_pdt_parameter_rec);
3101
3102 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3103 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'x_return_status=' || x_return_status);
3104 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'name=' || x_pdt_parameter_rec.name);
3105 END IF;
3106 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3107 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3108 ELSIF ( x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3109 RAISE OKL_API.G_EXCEPTION_ERROR;
3110 /*ELSIF NVL(x_pdt_parameter_rec.Name,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
3111 x_return_status := OKL_API.G_RET_STS_ERROR;
3112 RAISE OKL_API.G_EXCEPTION_ERROR;*/
3113 END IF;
3114
3115 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3116 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Deal_type=' || x_pdt_parameter_rec.Deal_type);
3117 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Revenue_Recognition_Method=' || x_pdt_parameter_rec.Revenue_Recognition_Method);
3118 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Interest_Calculation_Basis=' || x_pdt_parameter_rec.Interest_Calculation_Basis);
3119 END IF;
3120
3121 okl_krp_pvt.validate_row(
3122 p_api_version => p_api_version,
3123 p_init_msg_list => p_init_msg_list,
3124 x_return_status => x_return_status,
3125 x_msg_count => x_msg_count,
3126 x_msg_data => x_msg_data,
3127 p_deal_type => x_pdt_parameter_rec.deal_type,
3128 p_rev_rec_method => x_pdt_parameter_rec.Revenue_recognition_method,
3129 p_int_calc_basis => x_pdt_parameter_rec.interest_calculation_basis,
3130 p_krpv_tbl => p_k_rate_tbl,
3131 --Bug# 7440232
3132 p_stack_messages => 'Y',
3133 p_validate_flag => p_validate_flag
3134 );
3135 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3136 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_row: x_return_status=' || x_return_status);
3137 END IF;
3138 end;
3139
3140 -- Start of comments
3141 --
3142 -- Procedure Name : generate_rate_summary
3143 -- Description : Called through rosetta to generate summary of interest and additional interest
3144 -- rate parameters for actual and conversion records with
3145 -- different effectivities.
3146 -- Business Rules :
3147 -- Parameters :
3148 -- Version : 1.0, ramurt Created.
3149 -- End of comments
3150
3151 Procedure generate_rate_summary(
3152 p_api_version IN NUMBER,
3153 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3154 x_return_status OUT NOCOPY VARCHAR2,
3155 x_msg_count OUT NOCOPY NUMBER,
3156 x_msg_data OUT NOCOPY VARCHAR2,
3157 p_chr_id IN NUMBER,
3158 x_var_par_tbl OUT NOCOPY var_prm_tbl_type)
3159 AS
3160 l_api_version CONSTANT NUMBER := 1;
3161 l_api_name CONSTANT VARCHAR2(30) := 'GENERATE_RATE_SUMMARY';
3162 l_return_value VARCHAR2(1) := '';
3163
3164 CURSOR c_int_rate_param IS
3165 SELECT parameter_type_code,
3166 interest_index_id,
3167 base_rate,
3168 interest_start_date,
3169 adder_rate,
3170 maximum_rate,
3171 minimum_rate,
3172 principal_basis_code,
3173 days_in_a_month_code,
3174 days_in_a_year_code,
3175 interest_basis_code,
3176 effective_from_date,
3177 effective_to_date,
3178 rate_delay_code,
3179 rate_delay_frequency,
3180 compounding_frequency_code,
3181 calculation_formula_id,
3182 catchup_basis_code,
3183 catchup_start_date,
3184 catchup_settlement_code,
3185 rate_change_start_date,
3186 rate_change_frequency_code,
3187 rate_change_value,
3188 conversion_option_code,
3189 next_conversion_date,
3190 conversion_type_code
3191 FROM OKL_K_RATE_PARAMS
3192 WHERE KHR_ID = p_chr_id
3193 AND parameter_type_code IN ('ACTUAL', 'CONVERSION')
3194 ORDER BY effective_from_date, parameter_type_code;
3195
3196 CURSOR fnd_csr(p_lookup_code FND_LOOKUPS.LOOKUP_CODE%TYPE) IS
3197 SELECT meaning
3198 FROM FND_LOOKUPS
3199 WHERE lookup_type = 'OKL_VAR_RATE_PARAMS_TYPE'
3200 AND lookup_code = p_lookup_code
3201 AND nvl(enabled_flag,'N') = 'Y'
3202 AND sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate);
3203 l_meaning FND_LOOKUPS.MEANING%TYPE;
3204
3205 i NUMBER;
3206 l_int_rate_exist BOOLEAN;
3207 l_addl_int_rate_exist BOOLEAN;
3208 l_conv_basis_exist BOOLEAN;
3209
3210 BEGIN
3211 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3212
3213 x_return_status := OKL_API.START_ACTIVITY(
3214 p_api_name => l_api_name,
3215 p_pkg_name => g_pkg_name,
3216 p_init_msg_list => p_init_msg_list,
3217 l_api_version => l_api_version,
3218 p_api_version => p_api_version,
3219 p_api_type => G_API_TYPE,
3220 x_return_status => x_return_status);
3221
3222 --dbms_output.put_line('here1');
3223
3224 i := 0;
3225
3226 FOR c_int_rate_param_rec IN c_int_rate_param
3227 LOOP
3228 l_int_rate_exist := c_int_rate_param_rec.interest_index_id IS NOT NULL
3229 OR c_int_rate_param_rec.base_rate IS NOT NULL
3230 OR c_int_rate_param_rec.interest_start_date IS NOT NULL
3231 OR c_int_rate_param_rec.adder_rate IS NOT NULL
3232 OR c_int_rate_param_rec.maximum_rate IS NOT NULL
3233 OR c_int_rate_param_rec.minimum_rate IS NOT NULL
3234 OR c_int_rate_param_rec.principal_basis_code IS NOT NULL
3235 OR c_int_rate_param_rec.days_in_a_month_code IS NOT NULL
3236 OR c_int_rate_param_rec.days_in_a_year_code IS NOT NULL
3237 OR c_int_rate_param_rec.interest_basis_code IS NOT NULL;
3238
3239 l_addl_int_rate_exist := c_int_rate_param_rec.rate_delay_code IS NOT NULL
3240 OR c_int_rate_param_rec.rate_delay_frequency IS NOT NULL
3241 OR c_int_rate_param_rec.compounding_frequency_code IS NOT NULL
3242 OR c_int_rate_param_rec.calculation_formula_id IS NOT NULL
3243 OR c_int_rate_param_rec.catchup_basis_code IS NOT NULL
3244 OR c_int_rate_param_rec.catchup_start_date IS NOT NULL
3245 OR c_int_rate_param_rec.catchup_settlement_code IS NOT NULL
3246 OR c_int_rate_param_rec.rate_change_start_date IS NOT NULL
3247 OR c_int_rate_param_rec.rate_change_frequency_code IS NOT NULL
3248 OR c_int_rate_param_rec.rate_change_value IS NOT NULL;
3249
3250 l_conv_basis_exist := c_int_rate_param_rec.conversion_option_code IS NOT NULL
3251 OR c_int_rate_param_rec.next_conversion_date IS NOT NULL
3252 OR c_int_rate_param_rec.conversion_type_code IS NOT NULL;
3253
3254 -- Interest Rate Parameters and Additional Interest Rate Parameters.
3255 IF ( c_int_rate_param_rec.parameter_type_code = 'ACTUAL') THEN
3256 --Bug# 7440232
3257 IF( l_int_rate_exist ) OR ( l_addl_int_rate_exist ) THEN
3258 i := i+1;
3259 OPEN fnd_csr('INTEREST_RATE_PARAMS');
3260 FETCH fnd_csr INTO l_meaning;
3261 CLOSE fnd_csr;
3262 x_var_par_tbl(i).param_identifier_meaning := l_meaning;
3263 x_var_par_tbl(i).param_identifier := 'INTEREST_RATE_PARAMS';
3264 x_var_par_tbl(i).effective_from_date := c_int_rate_param_rec.effective_from_date;
3265 x_var_par_tbl(i).effective_to_date := c_int_rate_param_rec.effective_to_date;
3266 -- gboomina modified for Bug 5876083 - Start
3267 -- Returning Parameter Type Code which is used in the UI
3268 x_var_par_tbl(i).parameter_type_code := c_int_rate_param_rec.parameter_type_code;
3269 -- gboomina modified for Bug 5876083 - End
3270 END IF;
3271
3272 IF( l_conv_basis_exist ) THEN
3273 i := i+1;
3274 OPEN fnd_csr('CONVERSION_BASIS');
3275 FETCH fnd_csr INTO l_meaning;
3276 CLOSE fnd_csr;
3277 x_var_par_tbl(i).param_identifier_meaning := l_meaning;
3278 x_var_par_tbl(i).param_identifier := 'CONVERSION_BASIS';
3279 x_var_par_tbl(i).effective_from_date := c_int_rate_param_rec.effective_from_date;
3280 x_var_par_tbl(i).effective_to_date := c_int_rate_param_rec.effective_to_date;
3281 -- gboomina modified for Bug 5876083 - Start
3282 -- Returning Parameter Type Code which is used in the UI
3283 x_var_par_tbl(i).parameter_type_code := c_int_rate_param_rec.parameter_type_code;
3284 -- gboomina modified for Bug 5876083 - End
3285 END IF;
3286 END IF;
3287 -- Interest Rate Parameters and Additional Interest Rate Parameters for Conversion
3288 -- and parameters for Conversion Basis.
3289 IF ( c_int_rate_param_rec.parameter_type_code = 'CONVERSION') THEN
3290 --Bug# 7440232
3291 IF( l_int_rate_exist ) OR ( l_addl_int_rate_exist ) THEN
3292 i := i+1;
3293 OPEN fnd_csr('INTEREST_RATE_PARAMS_CONV');
3294 FETCH fnd_csr INTO l_meaning;
3295 CLOSE fnd_csr;
3296 x_var_par_tbl(i).param_identifier_meaning := l_meaning;
3297 x_var_par_tbl(i).param_identifier := 'INTEREST_RATE_PARAMS_CONV';
3298 x_var_par_tbl(i).effective_from_date := c_int_rate_param_rec.effective_from_date;
3299 x_var_par_tbl(i).effective_to_date := c_int_rate_param_rec.effective_to_date;
3300 -- gboomina modified for Bug 5876083 - Start
3301 -- Returning Parameter Type Code which is used in the UI
3302 x_var_par_tbl(i).parameter_type_code := c_int_rate_param_rec.parameter_type_code;
3303 -- gboomina modified for Bug 5876083 - End
3304 END IF;
3305
3306 END IF;
3307 END LOOP;
3308
3309 --dbms_output.put_line('here4');
3310 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3311
3312 EXCEPTION
3313 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3314 --Close all cursors if open
3315 IF c_int_rate_param%ISOPEN THEN
3316 CLOSE c_int_rate_param;
3317 END IF;
3318 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3319 l_api_name,
3320 G_PKG_NAME,
3321 'OKL_API.G_RET_STS_ERROR',
3322 x_msg_count,
3323 x_msg_data,
3324 '_PVT');
3325
3326 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3327 --Close all cursors if open
3328 IF c_int_rate_param%ISOPEN THEN
3329 CLOSE c_int_rate_param;
3330 END IF;
3331 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3332 l_api_name,
3333 G_PKG_NAME,
3334 'OKL_API.G_RET_STS_UNEXP_ERROR',
3335 x_msg_count,
3336 x_msg_data,
3337 '_PVT');
3338
3339 WHEN OTHERS THEN
3340 --Close all cursors if open
3341 IF c_int_rate_param%ISOPEN THEN
3342 CLOSE c_int_rate_param;
3343 END IF;
3344 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3345 l_api_name,
3346 G_PKG_NAME,
3347 'OTHERS',
3348 x_msg_count,
3349 x_msg_data,
3350 '_PVT');
3351
3352 END generate_rate_summary;
3353
3354 -- default_k_rate_params
3355 -- Default the values based on business rules
3356
3357 PROCEDURE default_k_rate_params(
3358 p_api_version IN NUMBER,
3359 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3360 x_return_status OUT NOCOPY VARCHAR2,
3361 x_msg_count OUT NOCOPY NUMBER,
3362 x_msg_data OUT NOCOPY VARCHAR2,
3363 p_deal_type IN okl_product_parameters_v.deal_type%type,
3364 p_rev_rec_method IN okl_product_parameters_v.revenue_recognition_method%type,
3365 p_int_calc_basis IN okl_product_parameters_v.interest_calculation_basis%type,
3366 p_column_name IN VARCHAR2,
3367 p_krpv_rec IN OUT NOCOPY krpv_rec_type) IS
3368 BEGIN
3369 x_return_status := OKC_API.G_RET_STS_SUCCESS;
3370
3371 IF (p_column_name = 'PRINCIPAL_BASIS_CODE' OR p_column_name = 'ALL') THEN
3372 IF (p_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3373 (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method = 'STREAMS')) THEN
3374 p_krpv_rec.PRINCIPAL_BASIS_CODE := 'SCHEDULED';
3375 ELSIF (p_deal_type = 'LOAN' AND
3376 p_int_calc_basis = 'FLOAT' AND p_rev_rec_method = 'ACTUAL') THEN
3377 p_krpv_rec.PRINCIPAL_BASIS_CODE := 'ACTUAL';
3378 ELSIF (p_deal_type = 'LOAN' AND
3379 p_int_calc_basis = 'REAMORT' AND
3380 p_rev_rec_method IN ('STREAMS', 'ACTUAL')) THEN
3381 p_krpv_rec.PRINCIPAL_BASIS_CODE := 'SCHEDULED';
3382 ELSIF (p_deal_type = 'LOAN' AND
3383 p_int_calc_basis = 'CATCHUP/CLEANUP' AND
3384 p_rev_rec_method = 'STREAMS' ) THEN
3385 p_krpv_rec.PRINCIPAL_BASIS_CODE := 'ACTUAL';
3386 ELSIF (p_deal_type = 'LOAN-REVOLVING' AND
3387 p_int_calc_basis = 'FLOAT' AND
3388 p_rev_rec_method IN ( 'ESTIMATED_AND_BILLED', 'ACTUAL' )) THEN
3389 p_krpv_rec.PRINCIPAL_BASIS_CODE := 'ACTUAL';
3390 END IF;
3391
3392 IF (p_column_name = 'PRINCIPAL_BASIS_CODE') THEN
3393 RETURN;
3394 END IF;
3395 END IF;
3396
3397 IF (p_column_name = 'DAYS_IN_A_MONTH_CODE' OR p_column_name = 'ALL') THEN
3398 IF (p_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3399 (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method = 'STREAMS')) THEN
3400 p_krpv_rec.DAYS_IN_A_MONTH_CODE := '30';
3401 ELSIF (p_deal_type = 'LOAN' AND
3402 p_int_calc_basis = 'REAMORT' AND
3403 p_rev_rec_method = 'STREAMS' ) THEN
3404 p_krpv_rec.DAYS_IN_A_MONTH_CODE := '30';
3405 END IF;
3406
3407 IF (p_column_name = 'DAYS_IN_A_MONTH_CODE' ) THEN
3408 RETURN;
3409 END IF;
3410 END IF;
3411
3412 IF (p_column_name = 'DAYS_IN_A_YEAR_CODE' OR p_column_name = 'ALL') THEN
3413 IF (p_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3414 (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method = 'STREAMS')) THEN
3415 p_krpv_rec.DAYS_IN_A_YEAR_CODE := '360';
3416 ELSIF (p_deal_type = 'LOAN' AND
3417 p_int_calc_basis = 'REAMORT' AND
3418 p_rev_rec_method = 'STREAMS' ) THEN
3419 p_krpv_rec.DAYS_IN_A_YEAR_CODE := '360';
3420 END IF;
3421
3422 IF (p_column_name = 'DAYS_IN_A_YEAR_CODE' ) THEN
3423 RETURN;
3424 END IF;
3425 END IF;
3426
3427 IF (p_column_name = 'INTEREST_BASIS_CODE' OR p_column_name = 'ALL') THEN
3428 IF (p_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3429 (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method = 'STREAMS')) THEN
3430 p_krpv_rec.INTEREST_BASIS_CODE := 'SIMPLE';
3431 ELSIF (p_deal_type = 'LOAN' AND
3432 p_int_calc_basis = 'REAMORT' AND
3433 p_rev_rec_method = 'STREAMS' ) THEN
3434 p_krpv_rec.INTEREST_BASIS_CODE := 'SIMPLE';
3435 END IF;
3436
3437 IF (p_column_name = 'INTEREST_BASIS_CODE') THEN
3438 RETURN;
3439 END IF;
3440 END IF;
3441
3442 IF (p_column_name = 'RATE_CHANGE_FREQUENCY_CODE' OR p_column_name= 'ALL') THEN
3443 IF (p_deal_type IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3444 (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method = 'STREAMS')) THEN
3445 p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE := 'BILLING_DATE';
3446 ELSIF (p_deal_type = 'LOAN' AND
3447 p_int_calc_basis = 'REAMORT' AND
3448 p_rev_rec_method = 'STREAMS' ) THEN
3449 p_krpv_rec.RATE_CHANGE_FREQUENCY_CODE := 'BILLING_DATE';
3450 END IF;
3451
3452 IF (p_column_name = 'RATE_CHANGE_FREQUENCY_CODE' ) THEN
3453 RETURN;
3454 END IF;
3455 END IF;
3456
3457 IF (p_column_name = 'CATCHUP_BASIS_CODE' OR p_column_name= 'ALL') THEN
3458 IF (p_deal_type = 'LOAN' AND
3459 p_int_calc_basis = 'CATCHUP/CLEANUP' AND
3460 p_rev_rec_method = 'STREAMS' ) THEN
3461 p_krpv_rec.CATCHUP_BASIS_CODE := 'ACTUAL';
3462 END IF;
3463
3464 IF (p_column_name = 'CATCHUP_BASIS_CODE' ) THEN
3465 RETURN;
3466 END IF;
3467 END IF;
3468
3469 END;
3470
3471 PROCEDURE cascade_contract_start_date(
3472 p_api_version IN NUMBER,
3473 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3474 x_return_status OUT NOCOPY VARCHAR2,
3475 x_msg_count OUT NOCOPY NUMBER,
3476 x_msg_data OUT NOCOPY VARCHAR2,
3477 p_chr_id IN OKC_K_HEADERS_B.ID%TYPE,
3478 p_new_start_date IN DATE) IS
3479 l_effective_from_date DATE;
3480 l_api_name varchar2(30) := 'cascade_cntrct_start_date';
3481 l_api_version number := 1;
3482 l_no_data_found BOOLEAN:= FALSE;
3483 l_krpv_rec krpv_rec_type;
3484 x_krpv_rec krpv_rec_type;
3485 l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
3486 l_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
3487 l_interest_processing_started BOOLEAN;
3488 l_product_id NUMBER;
3489 l_contract_start_date DATE;
3490
3491 --Bug 4735972
3492 CURSOR rate_csr(p_id NUMBER) IS
3493 SELECT COUNT(1) COUNT1
3494 FROM OKL_K_RATE_PARAMS
3495 WHERE KHR_ID = p_id
3496 AND EFFECTIVE_TO_DATE IS NULL;
3497 l_rate_count NUMBER;
3498 l_catchup_start_date DATE;
3499
3500
3501 BEGIN
3502 x_return_status := OKC_API.G_RET_STS_SUCCESS;
3503 x_return_status := OKL_API.START_ACTIVITY(
3504 p_api_name => l_api_name,
3505 p_pkg_name => g_pkg_name,
3506 p_init_msg_list => p_init_msg_list,
3507 l_api_version => l_api_version,
3508 p_api_version => p_api_version,
3509 p_api_type => G_API_TYPE,
3510 x_return_status => x_return_status);
3511
3512
3513 --Bug 4735972
3514 FOR r IN rate_csr(p_chr_id)
3515 LOOP
3516 l_rate_count := r.COUNT1;
3517 END LOOP;
3518
3519 --Bug 4735972
3520 IF (l_rate_count > 0) THEN
3521
3522 get_product(
3523 p_api_version => p_api_version,
3524 p_init_msg_list => p_init_msg_list,
3525 x_return_status => x_return_status,
3526 x_msg_count => x_msg_count,
3527 x_msg_data => x_msg_data,
3528 p_khr_id => p_chr_id,
3529 x_pdt_parameter_rec => l_pdt_parameter_rec);
3530
3531 l_interest_processing_started := interest_processing
3532 (p_chr_id,
3533 l_contract_number,
3534 l_contract_start_date);
3535
3536 IF (l_interest_processing_started) THEN
3537 -- Parameters RATE_CHANGE_START_DATE can not be updated because
3538 -- Interest Processing has already started for contract CONTRACT_NUMBER.
3539 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3540 ,p_msg_name => 'OKL_LLA_VAR_RATE_INT_PROC'
3541 ,p_token1 => 'PARAMETER_NAME'
3542 --,p_token1_value => 'INTEREST_START_DATE'
3543 ,p_token1_value =>
3544 'INTEREST_START_DATE,RATE_CHANGE_START_DATE,CATCHUP_START_DATE'
3545 ,p_token2 => 'CONTRACT_NUMBER'
3546 ,p_token2_value => l_contract_number);
3547 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3548 END IF;
3549
3550 IF (l_pdt_parameter_rec.DEAL_TYPE IN ('LEASEOP', 'LEASEDF', 'LEASEST') AND
3551 l_pdt_parameter_rec.interest_calculation_basis IN
3552 ('REAMORT', 'FLOAT_FACTORS') AND
3553 l_pdt_parameter_rec.revenue_recognition_method ='STREAMS' ) OR
3554 (l_pdt_parameter_rec.DEAL_TYPE IN ('LOAN') AND
3555 l_pdt_parameter_rec.interest_calculation_basis = 'FLOAT' AND
3556 l_pdt_parameter_rec.revenue_recognition_method IN
3557 ('ESTIMATED_AND_BILLED', 'ACTUAL' ) ) OR
3558 (l_pdt_parameter_rec.DEAL_TYPE IN ('LOAN') AND
3559 l_pdt_parameter_rec.interest_calculation_basis IN
3560 ('REAMORT', 'CATCHUP/CLEANUP', 'FIXED') AND
3561 l_pdt_parameter_rec.revenue_recognition_method IN
3562 ('STREAMS', 'ACTUAL' ) ) OR
3563 (l_pdt_parameter_rec.DEAL_TYPE IN ('LOAN-REVOLVING') AND
3564 l_pdt_parameter_rec.interest_calculation_basis = 'FLOAT' AND
3565 l_pdt_parameter_rec.revenue_recognition_method IN
3566 ('ESTIMATED_AND_BILLED', 'ACTUAL' ) ) THEN
3567
3568 get_effective_from_date(
3569 p_api_version ,
3570 p_init_msg_list,
3571 x_return_status,
3572 x_msg_count ,
3573 x_msg_data ,
3574 p_chr_id ,
3575 l_effective_from_date,
3576 l_no_data_found);
3577 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3578 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3579 END IF;
3580
3581 IF NOT(l_no_data_found) THEN
3582 l_krpv_rec.khr_id := p_chr_id;
3583 l_krpv_rec.effective_from_date := l_effective_from_date;
3584 --l_krpv_rec.effective_from_date := p_new_start_date;
3585 l_krpv_rec.parameter_type_code := 'ACTUAL';
3586
3587 l_krpv_rec.interest_start_date := p_new_start_date;
3588 l_krpv_rec.rate_change_start_date := p_new_start_date;
3589
3590 IF (l_pdt_parameter_rec.DEAL_TYPE = 'LOAN' AND
3591 l_pdt_parameter_rec.interest_calculation_basis =
3592 'CATCHUP/CLEANUP' AND
3593 l_pdt_parameter_rec.revenue_recognition_method = 'STREAMS' ) THEN
3594 l_krpv_rec.catchup_start_date := p_new_start_date;
3595 l_catchup_start_date := p_new_start_date;
3596 ELSE
3597 l_catchup_start_date := null;
3598 END IF;
3599
3600 update OKL_K_RATE_PARAMS
3601 SET interest_start_date = p_new_start_date,
3602 rate_change_start_date = p_new_start_date,
3603 catchup_start_date = nvl(l_catchup_start_date,catchup_start_date)
3604 WHERE khr_id = p_chr_id
3605 AND effective_from_date = l_effective_from_date
3606 AND effective_to_date is NULL;
3607
3608 /*update_k_rate_params(
3609 p_api_version => p_api_version,
3610 p_init_msg_list => p_init_msg_list,
3611 x_return_status => x_return_status,
3612 x_msg_count => x_msg_count,
3613 x_msg_data => x_msg_data,
3614 p_krpv_rec => l_krpv_rec,
3615 x_krpv_rec => x_krpv_rec);
3616 --p_validate_flag => 'Y');
3617 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3618 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3619 END IF; */
3620
3621 update okl_k_rate_params
3622 set effective_from_date = p_new_start_date
3623 WHERE khr_id = p_chr_id
3624 AND effective_from_date = l_effective_from_date
3625 AND effective_to_date IS NULL;
3626 --AND parameter_type_code = 'ACTUAL';
3627
3628 /*ELSE
3629 update okl_k_rate_params
3630 set effective_from_date = p_new_start_date
3631 WHERE khr_id = p_chr_id
3632 AND effective_from_date = l_effective_from_date
3633 AND effective_to_date is NULL;
3634 --AND parameter_type_code = 'ACTUAL'; */
3635
3636 END IF;
3637
3638 END IF;
3639
3640 END IF;
3641
3642 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3643
3644 EXCEPTION
3645 WHEN OTHERS THEN
3646 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3647 p_api_name => l_api_name,
3648 p_pkg_name => g_pkg_name,
3649 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3650 x_msg_count => x_msg_count,
3651 x_msg_data => x_msg_data,
3652 p_api_type => g_api_type);
3653
3654 END;
3655
3656 -- smadhava Bug#4542290 - 22-Aug-2005 - Added - Start
3657 --------------------------------------------------------------------------------
3658 --Start of Comments
3659 --API Name : Check_Rebook_Allowed
3660 --Description : Process API to check if the rebook transaction can be allowed
3661 -- for the contract.
3662 -- 1. Obtain the Product Parameters - Book Classification, Interest
3663 -- Calculation Basis and Revenue Recognition Method.
3664 -- 2. Obtain the due date for various streams accrued and billed.
3665 -- 3. Ensure that the rebook date is after the due date of streams
3666 -- billed/accrued.
3667 -- The valid combinations of Book classification and Interest Calculation Basis:
3668 -- (i) OPLease/STLease/DFLease and Fixed/Reamort(If interest has not been
3669 -- processed before)/Float Factors
3670 -- (ii) Loan and Fixed/Reamort(If interest has not been processed before)/
3671 -- Float/ Catchup-Cleanup
3672 -- (iii) Revolving Loan and Float
3673 -- Streams Used to calculate due date:
3674 -- ------------------------------------------------------------------------
3675 -- S.NO BOOK_CLASS ICB RRM ACCRUAL_STREAM BILL_STREAM
3676 -- ------------------------------------------------------------------------
3677 -- 1 LEASEOP REAMORT RENT_ACCRUAL RENT
3678 -- 2 LEASEST REAMORT LEASE_INCOME RENT
3679 -- 3 LEASEDF REAMORT LEASE_INCOME RENT
3680 -- 4 LOAN REAMORT INTEREST_INCOME RENT
3681 -- 5 LOAN FLOAT ESTIMATED VARIABLE_INTEREST VARIABLE_INTEREST
3682 -- and ACTUAL _INCOME _INCOME
3683 -- 6 LOAN FLOAT ACTUAL INTEREST_INCOME LOAN_PAYMENT
3684 -- 7 REV_LOAN FLOAT ESTIMATED VARIABLE_INTEREST VARIABLE_INTEREST
3685 -- and ACTUAL _INCOME _INCOME
3686 -- 8 REV_LOAN FLOAT ACTUAL INTEREST_INCOME LOAN_PAYMENT
3687 -- ------------------------------------------------------------------------
3688 --History :
3689 -- 22-AUG-2005 smadhava Created
3690 --End of Comments
3691 ------------------------------------------------------------------------------
3692 PROCEDURE check_rebook_allowed (
3693 p_api_version IN NUMBER,
3694 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3695 x_return_status OUT NOCOPY VARCHAR2,
3696 x_msg_count OUT NOCOPY NUMBER,
3697 x_msg_data OUT NOCOPY VARCHAR2,
3698 p_chr_id IN OKC_K_HEADERS_B.ID%TYPE,
3699 p_rebook_date IN DATE) IS
3700
3701 l_api_name VARCHAR2(30) := 'check_rebook_allowed';
3702 l_api_version NUMBER := 1;
3703
3704 l_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
3705 l_book_class OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE%TYPE;
3706 l_book_class_meaning OKL_PRODUCT_PARAMETERS_V.DEAL_TYPE_MEANING%TYPE;
3707 l_interest_calc_basis OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE;
3708 l_interest_calc_meaning OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_MEANING%TYPE;
3709 l_rev_recog_method OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE;
3710 --l_rev_recog_meaning OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_MEANING%TYPE;
3711 l_interest_proc_date OKL_K_HEADERS.DATE_LAST_INTERIM_INTEREST_CAL%TYPE;
3712 l_stream_name OKL_STRM_TYPE_V.STYB_PURPOSE_MEANING%TYPE;
3713
3714 l_last_accrued_due_date DATE;
3715 l_last_billed_due_date DATE;
3716
3717 l_pdt_params_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
3718
3719 -- Get the quality descriptions
3720 CURSOR get_prod_param_values(cp_name OKL_PDT_QUALITYS.NAME%TYPE
3721 , cp_value OKL_PQY_VALUES.VALUE%TYPE) IS
3722 SELECT
3723 QVE.DESCRIPTION
3724 FROM
3725 OKL_PDT_QUALITYS PQY
3726 , OKL_PQY_VALUES QVE
3727 WHERE
3728 QVE.PQY_ID = PQY.ID
3729 AND PQY.NAME = cp_name
3730 AND QVE.VALUE = cp_value;
3731
3732 -- Get the lookup meanings
3733 CURSOR get_lkp_meaning(cp_lkp_type FND_LOOKUPS.LOOKUP_TYPE%TYPE
3734 , cp_lkp_code FND_LOOKUPS.LOOKUP_CODE%TYPE) IS
3735 SELECT
3736 FNDLUP.MEANING
3737 FROM
3738 FND_LOOKUPS FNDLUP
3739 WHERE
3740 FNDLUP.LOOKUP_TYPE = cp_lkp_type
3741 AND FNDLUP.LOOKUP_CODE = cp_lkp_code
3742 AND SYSDATE BETWEEN
3743 NVL(FNDLUP.START_DATE_ACTIVE,SYSDATE)
3744 AND NVL(FNDLUP.END_DATE_ACTIVE,SYSDATE);
3745
3746 -- Cursor to query to get the Interest Processed flag
3747 CURSOR get_contract_details(cp_chr_id OKL_K_HEADERS.ID%TYPE) IS
3748 SELECT
3749 CHR.CONTRACT_NUMBER
3750 , KHR.DATE_LAST_INTERIM_INTEREST_CAL INTEREST_PROCESSED_FLAG
3751 FROM
3752 OKL_K_HEADERS KHR
3753 , OKC_K_HEADERS_B CHR
3754 WHERE
3755 CHR.ID = KHR.ID
3756 AND KHR.ID = cp_chr_id;
3757
3758 --Cursor to query the last accrued due date of the stream.
3759 --Bug# 9058664: Corrected GROUP BY clause
3760 CURSOR get_last_accrued_due_date(
3761 p_chr_id OKC_K_HEADERS_B.ID%TYPE
3762 , p_stream_purpose OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE) IS
3763 SELECT
3764 MAX(STE.STREAM_ELEMENT_DATE) LAST_STREAM_DUE_DATE
3765 , STY.STYB_PURPOSE_MEANING
3766 FROM
3767 OKL_STRM_ELEMENTS STE
3768 , OKL_STREAMS STM
3769 , OKL_STRM_TYPE_V STY
3770 , OKL_K_HEADERS KHR
3771 , OKC_K_HEADERS_B CHR
3772 WHERE
3773 STM.ID = STE.STM_ID
3774 AND STY.ID = STM.STY_ID
3775 AND KHR.ID = STM.KHR_ID
3776 AND CHR.ID = KHR.ID
3777 AND STE.ACCRUED_YN ='Y'
3778 AND CHR.ID = p_chr_id
3779 AND STY.STREAM_TYPE_PURPOSE = p_stream_purpose
3780 GROUP BY STY.STYB_PURPOSE_MEANING;
3781
3782 --Cursor to query the last billed due date of the stream.
3783 --Bug# 9058664: Corrected GROUP BY clause
3784 CURSOR get_last_billed_due_date(
3785 p_chr_id OKC_K_HEADERS_B.ID%TYPE
3786 , p_stream_purpose OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE) IS
3787 SELECT
3788 MAX(STE.STREAM_ELEMENT_DATE) LAST_STREAM_DUE_DATE
3789 , STY.STYB_PURPOSE_MEANING
3790 FROM
3791 OKL_STRM_ELEMENTS STE
3792 , OKL_STREAMS STM
3793 , OKL_STRM_TYPE_V STY
3794 , OKL_K_HEADERS KHR
3795 , OKC_K_HEADERS_B CHR
3796 WHERE
3797 STM.ID = STE.STM_ID
3798 AND STY.ID = STM.STY_ID
3799 AND KHR.ID = STM.KHR_ID
3800 AND CHR.ID = KHR.ID
3801 AND STE.DATE_BILLED IS NOT NULL
3802 AND CHR.ID = p_chr_id
3803 AND STY.STREAM_TYPE_PURPOSE = p_stream_purpose
3804 GROUP BY STY.STYB_PURPOSE_MEANING;
3805 l_product_id NUMBER;
3806 -- 4766555
3807 l_mass_rebook_flag varchar2(1) := 'N';
3808
3809 BEGIN
3810 IF (G_DEBUG_ENABLED = 'Y') THEN
3811 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3812 END IF;
3813 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3814 -- Call start_activity to create savepoint, check compatibility
3815 -- and initialize message list
3816 x_return_status := OKL_API.START_ACTIVITY (
3817 l_api_name
3818 ,p_init_msg_list
3819 ,'_PVT'
3820 ,x_return_status);
3821 -- Check if activity started successfully
3822 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3823 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3824 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3825 RAISE OKL_API.G_EXCEPTION_ERROR;
3826 END IF;
3827
3828 --Bug# 13447258: Do not perform Rebook Effective Date validations for Mass Rebooks
3829 -- 4766555
3830 l_mass_rebook_flag := okl_lla_util_pvt.check_mass_rebook_contract(
3831 p_chr_id => p_chr_id);
3832 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3833 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'check_rebook_allowed:l_mass_rebook_flag=' || l_mass_rebook_flag);
3834 END IF;
3835
3836 IF (l_mass_rebook_flag = OKL_API.G_FALSE) THEN
3837
3838 -- Obtain the contract details - Book classification, Interest Calculation Basis, Revenue Recognition Method, Interest Processed flag
3839 OKL_K_RATE_PARAMS_PVT.get_product(
3840 p_api_version => p_api_version,
3841 p_init_msg_list => p_init_msg_list,
3842 x_return_status => x_return_status,
3843 x_msg_count => x_msg_count,
3844 x_msg_data => x_msg_data,
3845 p_khr_id => p_chr_id,
3846 x_pdt_parameter_rec => l_pdt_params_rec);
3847
3848 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3849 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3850 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3851 RAISE OKL_API.G_EXCEPTION_ERROR;
3852 END IF;
3853
3854 l_book_class := l_pdt_params_rec.deal_type;
3855 l_interest_calc_basis := l_pdt_params_rec.interest_calculation_basis;
3856 l_rev_recog_method := l_pdt_params_rec.revenue_recognition_method;
3857
3858 OPEN get_lkp_meaning('OKL_BOOK_CLASS',l_book_class);
3859 FETCH get_lkp_meaning INTO l_book_class_meaning;
3860 CLOSE get_lkp_meaning;
3861
3862 OPEN get_prod_param_values('INTEREST_CALCULATION_BASIS',
3863 l_interest_calc_basis);
3864 FETCH get_prod_param_values INTO l_interest_calc_meaning;
3865 CLOSE get_prod_param_values;
3866
3867 /*
3868 OPEN get_prod_param_values('REVENUE_RECOGNITION_METHOD',
3869 l_rev_recog_method);
3870 FETCH get_prod_param_values INTO l_rev_recog_meaning;
3871 CLOSE get_prod_param_values; */
3872
3873 OPEN get_contract_details(p_chr_id);
3874 FETCH get_contract_details INTO l_contract_number, l_interest_proc_date;
3875 CLOSE get_contract_details;
3876
3877
3878 -- Check the combinations of Book classification,
3879 -- Revenue Recognition Method Calculation Basis
3880 -- Check for Operating Lease
3881
3882 IF (l_book_class = G_BOOK_CLASS_OP) THEN
3883 IF (l_interest_calc_basis NOT IN
3884 (G_ICB_FIXED, G_ICB_FLOAT_FACTOR, G_ICB_REAMORT )) THEN
3885 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3886 ,p_msg_name => G_OKL_LLA_REBOOK_INVALID
3887 ,p_token1 => G_BOOK_CLASS
3888 ,p_token1_value => l_book_class_meaning
3889 ,p_token2 => G_INT_CALC_BASIS
3890 ,p_token2_value => l_interest_calc_meaning);
3891 RAISE OKL_API.G_EXCEPTION_ERROR;
3892 END IF;
3893
3894 IF ( l_interest_calc_basis = G_ICB_REAMORT) THEN
3895 -- Donot allow Rebook if interest has been processed
3896 IF ( l_interest_proc_date IS NOT NULL ) THEN
3897 IF (l_mass_rebook_flag = OKL_API.G_TRUE) THEN -- 4766555
3898 NULL;
3899 ELSE
3900 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3901 ,p_msg_name => G_OKL_LLA_RBK_INT_PROC_INVAL
3902 ,p_token1 => G_COL_NAME
3903 ,p_token1_value => l_contract_number);
3904 RAISE OKL_API.G_EXCEPTION_ERROR;
3905 END IF;
3906 ELSE
3907 -- Get the due date of the Rental stream that was last billed
3908 OPEN get_last_billed_due_date(p_chr_id, G_STRM_RENT);
3909 FETCH get_last_billed_due_date
3910 INTO l_last_billed_due_date, l_stream_name;
3911 CLOSE get_last_billed_due_date;
3912 -- Get the due date of the Rental Accrual stream that was last accrued
3913 /* -- Bug 5000110
3914 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_RENT_ACCRUAL);
3915 FETCH get_last_accrued_due_date
3916 INTO l_last_accrued_due_date, l_stream_name;
3917 CLOSE get_last_accrued_due_date; */
3918
3919 IF ( l_last_billed_due_date IS NOT NULL
3920 AND p_rebook_date <= l_last_billed_due_date) THEN
3921 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3922 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
3923 ,p_token1 => G_STREAM
3924 ,p_token1_value => l_stream_name
3925 ,p_token2 => G_DUE_DATE
3926 ,p_token2_value => l_last_billed_due_date);
3927 RAISE OKL_API.G_EXCEPTION_ERROR;
3928 /*ELSIF ( l_last_accrued_due_date IS NOT NULL
3929 AND p_rebook_date <= l_last_accrued_due_date) THEN
3930 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3931 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
3932 ,p_token1 => G_STREAM
3933 ,p_token1_value => l_stream_name
3934 ,p_token2 => G_DUE_DATE
3935 ,p_token2_value => l_last_accrued_due_date);
3936 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
3937 END IF; -- end of check for rebook date
3938 END IF; -- end of check for interest rate processed
3939
3940 END IF; -- end of REAMORT check
3941
3942 -- Check for Sales Type Lease
3943 ELSIF (l_book_class = G_BOOK_CLASS_ST) THEN
3944 IF (l_interest_calc_basis NOT IN
3945 (G_ICB_FIXED, G_ICB_FLOAT_FACTOR, G_ICB_REAMORT )) THEN
3946 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3947 ,p_msg_name => G_OKL_LLA_REBOOK_INVALID
3948 ,p_token1 => G_BOOK_CLASS
3949 ,p_token1_value => l_book_class_meaning
3950 ,p_token2 => G_INT_CALC_BASIS
3951 ,p_token2_value => l_interest_calc_meaning);
3952 RAISE OKL_API.G_EXCEPTION_ERROR;
3953 END IF;
3954 IF ( l_interest_calc_basis = G_ICB_REAMORT) THEN
3955 -- Donot allow Rebook if interest has been processed
3956 IF ( l_interest_proc_date IS NOT NULL ) THEN
3957 IF (l_mass_rebook_flag = OKL_API.G_TRUE) THEN -- 4766555
3958 NULL;
3959 ELSE
3960 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3961 ,p_msg_name => G_OKL_LLA_RBK_INT_PROC_INVAL
3962 ,p_token1 => G_COL_NAME
3963 ,p_token1_value => l_contract_number);
3964 RAISE OKL_API.G_EXCEPTION_ERROR;
3965 END IF;
3966 ELSE
3967 -- Get the due date of the Rental stream that was last billed
3968 OPEN get_last_billed_due_date(p_chr_id, G_STRM_RENT);
3969 FETCH get_last_billed_due_date
3970 INTO l_last_billed_due_date, l_stream_name;
3971 CLOSE get_last_billed_due_date;
3972 -- Get the due date of the Pre-Tax Income stream that was last accrued
3973 -- Bug 5000110
3974 /*
3975 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_PRE_TAX);
3976 FETCH get_last_accrued_due_date
3977 INTO l_last_accrued_due_date, l_stream_name;
3978 CLOSE get_last_accrued_due_date; */
3979
3980 IF ( l_last_billed_due_date IS NOT NULL AND
3981 p_rebook_date <= l_last_billed_due_date) THEN
3982 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3983 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
3984 ,p_token1 => G_STREAM
3985 ,p_token1_value => l_stream_name
3986 ,p_token2 => G_DUE_DATE
3987 ,p_token2_value => l_last_billed_due_date);
3988 RAISE OKL_API.G_EXCEPTION_ERROR;
3989 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
3990 p_rebook_date <= l_last_accrued_due_date) THEN
3991 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
3992 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
3993 ,p_token1 => G_STREAM
3994 ,p_token1_value => l_stream_name
3995 ,p_token2 => G_DUE_DATE
3996 ,p_token2_value => l_last_accrued_due_date);
3997 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
3998 END IF; -- end of check for rebook date
3999 END IF; -- end of check for interest rate processed
4000
4001 END IF; -- end of REAMORT check
4002
4003 -- Check for Direct Finance Lease
4004 ELSIF (l_book_class = G_BOOK_CLASS_DF) THEN
4005 IF (l_interest_calc_basis NOT IN
4006 (G_ICB_FIXED, G_ICB_FLOAT_FACTOR, G_ICB_REAMORT )) THEN
4007 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4008 ,p_msg_name => G_OKL_LLA_REBOOK_INVALID
4009 ,p_token1 => G_BOOK_CLASS
4010 ,p_token1_value => l_book_class_meaning
4011 ,p_token2 => G_INT_CALC_BASIS
4012 ,p_token2_value => l_interest_calc_meaning);
4013 RAISE OKL_API.G_EXCEPTION_ERROR;
4014 END IF;
4015
4016 IF ( l_interest_calc_basis = G_ICB_REAMORT) THEN
4017 -- Donot allow Rebook if interest has been processed
4018 IF ( l_interest_proc_date IS NOT NULL ) THEN
4019 IF (l_mass_rebook_flag = OKL_API.G_TRUE) THEN -- 4766555
4020 NULL;
4021 ELSE
4022 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4023 ,p_msg_name => G_OKL_LLA_RBK_INT_PROC_INVAL
4024 ,p_token1 => G_COL_NAME
4025 ,p_token1_value => l_contract_number);
4026 RAISE OKL_API.G_EXCEPTION_ERROR;
4027 END IF;
4028 ELSE
4029 -- Get the due date of the rent stream that was last billed
4030 OPEN get_last_billed_due_date(p_chr_id, G_STRM_RENT);
4031 FETCH get_last_billed_due_date
4032 INTO l_last_billed_due_date, l_stream_name;
4033 CLOSE get_last_billed_due_date;
4034 -- Get the due date of the Pre-Tax Income stream that was last accrued
4035 -- Bug 5000110
4036 /*
4037 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_PRE_TAX);
4038 FETCH get_last_accrued_due_date
4039 INTO l_last_accrued_due_date, l_stream_name;
4040 CLOSE get_last_accrued_due_date; */
4041
4042 IF ( l_last_billed_due_date IS NOT NULL AND
4043 p_rebook_date <= l_last_billed_due_date) THEN
4044 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4045 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4046 ,p_token1 => G_STREAM
4047 ,p_token1_value => l_stream_name
4048 ,p_token2 => G_DUE_DATE
4049 ,p_token2_value => l_last_billed_due_date);
4050 RAISE OKL_API.G_EXCEPTION_ERROR;
4051 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4052 p_rebook_date <= l_last_accrued_due_date) THEN
4053 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4054 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4055 ,p_token1 => G_STREAM
4056 ,p_token1_value => l_stream_name
4057 ,p_token2 => G_DUE_DATE
4058 ,p_token2_value => l_last_accrued_due_date);
4059 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4060 END IF; -- end of check for rebook date
4061 END IF; -- end of check for interest rate processed
4062
4063 END IF; -- end of REAMORT check
4064
4065 -- Check for Loan
4066 ELSIF (l_book_class = G_BOOK_CLASS_LOAN) THEN
4067 IF (l_interest_calc_basis NOT IN
4068 (G_ICB_FIXED, G_ICB_FLOAT, G_ICB_REAMORT, G_ICB_CATCHUP_CLEANUP)) THEN
4069 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4070 ,p_msg_name => G_OKL_LLA_REBOOK_INVALID
4071 ,p_token1 => G_BOOK_CLASS
4072 ,p_token1_value => l_book_class_meaning
4073 ,p_token2 => G_INT_CALC_BASIS
4074 ,p_token2_value => l_interest_calc_meaning);
4075 RAISE OKL_API.G_EXCEPTION_ERROR;
4076 END IF;
4077
4078 --Bug# 13831818
4079 IF (l_interest_calc_basis = G_ICB_CATCHUP_CLEANUP) THEN
4080 IF (l_interest_proc_date IS NOT NULL) AND (p_rebook_date <= l_interest_proc_date) THEN
4081
4082 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4083 ,p_msg_name => G_OKL_LLA_RBK_INT_CAL_DT_INV
4084 ,p_token2 => G_DUE_DATE
4085 ,p_token2_value => l_interest_proc_date);
4086 RAISE OKL_API.G_EXCEPTION_ERROR;
4087 END IF;
4088 END IF;
4089 --Bug# 13831818
4090
4091 IF ( l_interest_calc_basis = G_ICB_REAMORT) THEN
4092 IF ( l_interest_proc_date IS NOT NULL ) THEN
4093 IF (l_mass_rebook_flag = OKL_API.G_TRUE) THEN -- 4766555
4094 NULL;
4095 ELSE
4096 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4097 ,p_msg_name => G_OKL_LLA_RBK_INT_PROC_INVAL
4098 ,p_token1 => G_COL_NAME
4099 ,p_token1_value => l_contract_number);
4100 RAISE OKL_API.G_EXCEPTION_ERROR;
4101 END IF;
4102 ELSE
4103 /* 13394074
4104 -- Get the due date of the rent stream that was last billed
4105 OPEN get_last_billed_due_date(p_chr_id, G_STRM_RENT);
4106 FETCH get_last_billed_due_date
4107 INTO l_last_billed_due_date, l_stream_name;
4108 CLOSE get_last_billed_due_date;
4109 -- Get the due date of the Interest Income stream that was last accrued
4110 13394074 */
4111 -- Bug 5000110
4112 /*
4113 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_INT_INCOME);
4114 FETCH get_last_accrued_due_date
4115 INTO l_last_accrued_due_date, l_stream_name;
4116 CLOSE get_last_accrued_due_date; */
4117
4118 /* 13394074
4119 IF ( l_last_billed_due_date IS NOT NULL
4120 AND p_rebook_date <= l_last_billed_due_date) THEN
4121 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4122 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4123 ,p_token1 => G_STREAM
4124 ,p_token1_value => l_stream_name
4125 ,p_token2 => G_DUE_DATE
4126 ,p_token2_value => l_last_billed_due_date);
4127 RAISE OKL_API.G_EXCEPTION_ERROR;
4128 13394074 */
4129 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4130 p_rebook_date <= l_last_accrued_due_date) THEN
4131 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4132 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4133 ,p_token1 => G_STREAM
4134 ,p_token1_value => l_stream_name
4135 ,p_token2 => G_DUE_DATE
4136 ,p_token2_value => l_last_accrued_due_date);
4137 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4138 --END IF; -- end of check for rebook date 13394074
4139
4140 /* 13394074 Start */
4141 IF (l_rev_recog_method = G_RRM_ACTUAL) THEN
4142 -- Get the due date of the loan payment stream last billed
4143 OPEN get_last_billed_due_date(p_chr_id, G_STRM_LOAN_PAYMENT);
4144 FETCH get_last_billed_due_date
4145 INTO l_last_billed_due_date, l_stream_name;
4146 CLOSE get_last_billed_due_date;
4147 IF ( l_last_billed_due_date IS NOT NULL
4148 AND p_rebook_date <= l_last_billed_due_date) THEN
4149 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4150 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4151 ,p_token1 => G_STREAM
4152 ,p_token1_value => l_stream_name
4153 ,p_token2 => G_DUE_DATE
4154 ,p_token2_value => l_last_billed_due_date);
4155 RAISE OKL_API.G_EXCEPTION_ERROR;
4156 END IF;
4157 ELSE
4158 -- Get the due date of the principal payment stream last billed
4159 OPEN get_last_billed_due_date(p_chr_id, G_STRM_PRINCIPAL_PAYMENT);
4160 FETCH get_last_billed_due_date
4161 INTO l_last_billed_due_date, l_stream_name;
4162 CLOSE get_last_billed_due_date;
4163 IF ( l_last_billed_due_date IS NOT NULL
4164 AND p_rebook_date <= l_last_billed_due_date) THEN
4165 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4166 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4167 ,p_token1 => G_STREAM
4168 ,p_token1_value => l_stream_name
4169 ,p_token2 => G_DUE_DATE
4170 ,p_token2_value => l_last_billed_due_date);
4171 RAISE OKL_API.G_EXCEPTION_ERROR;
4172 END IF;
4173
4174 -- Get the due date of the interest payment stream last billed
4175 OPEN get_last_billed_due_date(p_chr_id, G_STRM_INTEREST_PAYMENT);
4176 FETCH get_last_billed_due_date
4177 INTO l_last_billed_due_date, l_stream_name;
4178 CLOSE get_last_billed_due_date;
4179 IF ( l_last_billed_due_date IS NOT NULL
4180 AND p_rebook_date <= l_last_billed_due_date) THEN
4181 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4182 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4183 ,p_token1 => G_STREAM
4184 ,p_token1_value => l_stream_name
4185 ,p_token2 => G_DUE_DATE
4186 ,p_token2_value => l_last_billed_due_date);
4187 RAISE OKL_API.G_EXCEPTION_ERROR;
4188 END IF;
4189
4190 END IF;
4191
4192 /* 13394074 End */
4193
4194 END IF; -- end of check for interest rate processed
4195
4196 END IF; -- end of REAMORT check
4197
4198 IF ( l_interest_calc_basis = G_ICB_FLOAT) THEN
4199 -- Check if the Revenue Recognition Method is Estimated and Actual
4200 --IF ( l_rev_recog_method = G_RRM_EST_ACTUAL) THEN 13394074
4201 IF ( l_rev_recog_method = G_RRM_EST_BILLED) THEN -- 13394074
4202 -- Get the due date of the Variable Interest Income stream that was last billed
4203 --OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_INT_INCOME); 13394074
4204 OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_INT); -- 13394074
4205 FETCH get_last_billed_due_date
4206 INTO l_last_billed_due_date, l_stream_name;
4207 CLOSE get_last_billed_due_date;
4208 -- Get the due date of the Variable Interest Income stream that was last acrrued
4209 -- Bug 5000110
4210 /*
4211 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_VAR_INT_INCOME);
4212 FETCH get_last_accrued_due_date
4213 INTO l_last_accrued_due_date, l_stream_name;
4214 CLOSE get_last_accrued_due_date; */
4215
4216 IF ( l_last_billed_due_date IS NOT NULL AND
4217 p_rebook_date <= l_last_billed_due_date) THEN
4218 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4219 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4220 ,p_token1 => G_STREAM
4221 ,p_token1_value => l_stream_name
4222 ,p_token2 => G_DUE_DATE
4223 ,p_token2_value => l_last_billed_due_date);
4224 RAISE OKL_API.G_EXCEPTION_ERROR;
4225 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4226 p_rebook_date <= l_last_accrued_due_date) THEN
4227 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4228 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4229 ,p_token1 => G_STREAM
4230 ,p_token1_value => l_stream_name
4231 ,p_token2 => G_DUE_DATE
4232 ,p_token2_value => l_last_accrued_due_date);
4233 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4234 END IF; -- end of check for rebook date
4235 -- Check if the Revenue Recognition Method is Actual
4236 ELSIF ( l_rev_recog_method = G_RRM_ACTUAL) THEN
4237 -- Get the due date of the Variable Loan Payment stream that was last billed
4238 --OPEN get_last_billed_due_date(p_chr_id, G_STRM_LOAN_PAYMENT); 13394074
4239 OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_LOAN_PAYMENT); -- 13394074
4240 FETCH get_last_billed_due_date
4241 INTO l_last_billed_due_date, l_stream_name;
4242 CLOSE get_last_billed_due_date;
4243 -- Get the due date of the Interest Income stream that was last accrued
4244 -- Bug 5000110
4245 /*
4246 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_INT_INCOME);
4247 FETCH get_last_accrued_due_date
4248 INTO l_last_accrued_due_date, l_stream_name;
4249 CLOSE get_last_accrued_due_date; */
4250
4251 IF ( l_last_billed_due_date IS NOT NULL AND
4252 p_rebook_date <= l_last_billed_due_date) THEN
4253 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4254 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4255 ,p_token1 => G_STREAM
4256 ,p_token1_value => l_stream_name
4257 ,p_token2 => G_DUE_DATE
4258 ,p_token2_value => l_last_billed_due_date);
4259 RAISE OKL_API.G_EXCEPTION_ERROR;
4260 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4261 p_rebook_date <= l_last_accrued_due_date) THEN
4262 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4263 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4264 ,p_token1 => G_STREAM
4265 ,p_token1_value => l_stream_name
4266 ,p_token2 => G_DUE_DATE
4267 ,p_token2_value => l_last_accrued_due_date);
4268 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4269 END IF; -- end of check for rebook date
4270 END IF; -- end of check for Revenue Recognition Method
4271 END IF; -- end of check for Interest Calculation Basis=FLOAT
4272
4273 -- Check for Revolving Loans
4274 ELSIF (l_book_class = G_BOOK_CLASS_REVLOAN) THEN
4275 IF (l_interest_calc_basis <> G_ICB_FLOAT) THEN
4276 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4277 ,p_msg_name => G_OKL_LLA_REBOOK_INVALID
4278 ,p_token1 => G_BOOK_CLASS
4279 ,p_token1_value => l_book_class_meaning
4280 ,p_token2 => G_INT_CALC_BASIS
4281 ,p_token2_value => l_interest_calc_meaning);
4282 RAISE OKL_API.G_EXCEPTION_ERROR;
4283 ELSE
4284 -- Check if the Revenue Recognition Method is Estimated and Actual
4285 --IF ( l_rev_recog_method = G_RRM_EST_ACTUAL) THEN 13394074
4286 IF ( l_rev_recog_method = G_RRM_EST_BILLED) THEN -- 13394074
4287 -- Get the due date of the Variable Interest Income stream that was last billed
4288 --OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_INT_INCOME); 13394074
4289 OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_INT); -- 13394074
4290 FETCH get_last_billed_due_date
4291 INTO l_last_billed_due_date, l_stream_name;
4292 CLOSE get_last_billed_due_date;
4293 -- Get the due date of the Variable Interest Income stream that was last accrued
4294 -- Bug 5000110
4295 /*
4296 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_VAR_INT_INCOME);
4297 FETCH get_last_accrued_due_date
4298 INTO l_last_accrued_due_date, l_stream_name;
4299 CLOSE get_last_accrued_due_date; */
4300
4301 IF ( l_last_billed_due_date IS NOT NULL AND
4302 p_rebook_date <= l_last_billed_due_date) THEN
4303 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4304 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4305 ,p_token1 => G_STREAM
4306 ,p_token1_value => l_stream_name
4307 ,p_token2 => G_DUE_DATE
4308 ,p_token2_value => l_last_billed_due_date);
4309 RAISE OKL_API.G_EXCEPTION_ERROR;
4310 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4311 p_rebook_date <= l_last_accrued_due_date) THEN
4312 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4313 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4314 ,p_token1 => G_STREAM
4315 ,p_token1_value => l_stream_name
4316 ,p_token2 => G_DUE_DATE
4317 ,p_token2_value => l_last_accrued_due_date);
4318 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4319 END IF; -- end of check for rebook date
4320 -- Check if the Revenue Recognition Method is Actual
4321 ELSIF ( l_rev_recog_method = G_RRM_ACTUAL) THEN
4322 -- Get the due date of the Variable Loan Payment stream that was last billed
4323 --OPEN get_last_billed_due_date(p_chr_id, G_STRM_LOAN_PAYMENT); 13394074
4324 OPEN get_last_billed_due_date(p_chr_id, G_STRM_VAR_LOAN_PAYMENT); -- 13394074
4325 FETCH get_last_billed_due_date
4326 INTO l_last_billed_due_date, l_stream_name;
4327 CLOSE get_last_billed_due_date;
4328 -- Get the due date of the Interest Income stream that was last accrued
4329 -- Bug 5000110
4330 /*
4331 OPEN get_last_accrued_due_date(p_chr_id, G_STRM_INT_INCOME);
4332 FETCH get_last_accrued_due_date
4333 INTO l_last_accrued_due_date, l_stream_name;
4334 CLOSE get_last_accrued_due_date; */
4335
4336 IF ( l_last_billed_due_date IS NOT NULL AND
4337 p_rebook_date <= l_last_billed_due_date) THEN
4338 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4339 ,p_msg_name => G_OKL_LLA_RBK_DATE_BILL_INVAL
4340 ,p_token1 => G_STREAM
4341 ,p_token1_value => l_stream_name
4342 ,p_token2 => G_DUE_DATE
4343 ,p_token2_value => l_last_billed_due_date);
4344 RAISE OKL_API.G_EXCEPTION_ERROR;
4345 /*ELSIF ( l_last_accrued_due_date IS NOT NULL AND
4346 p_rebook_date <= l_last_accrued_due_date) THEN
4347 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
4348 ,p_msg_name => G_OKL_LLA_RBK_DATE_ACCR_INVAL
4349 ,p_token1 => G_STREAM
4350 ,p_token1_value => l_stream_name
4351 ,p_token2 => G_DUE_DATE
4352 ,p_token2_value => l_last_accrued_due_date);
4353 RAISE OKL_API.G_EXCEPTION_ERROR; */ -- Bug 5000110
4354 END IF; -- end of check for rebook date
4355 END IF; -- end of check for Revenue Recognition Method
4356 END IF; -- end of check for Interest Calculation Basis=FLOAT
4357 /*-- Raise an error if the book classification is not valid.
4358 ELSE
4359 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR; */
4360 END IF;
4361
4362 END IF;
4363 --Bug# 13447258: End
4364
4365 OKL_API.END_ACTIVITY (x_msg_count,
4366 x_msg_data );
4367
4368 EXCEPTION
4369 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4370 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4371 l_api_name,
4372 G_PKG_NAME,
4373 'OKL_API.G_RET_STS_ERROR',
4374 x_msg_count,
4375 x_msg_data,
4376 '_PVT');
4377 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4378 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4379 l_api_name,
4380 G_PKG_NAME,
4381 'OKL_API.G_RET_STS_UNEXP_ERROR',
4382 x_msg_count,
4383 x_msg_data,
4384 '_PVT');
4385 WHEN OTHERS THEN
4386 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4387 l_api_name,
4388 G_PKG_NAME,
4389 'OTHERS',
4390 x_msg_count,
4391 x_msg_data,
4392 '_PVT');
4393 END; -- end of procedure Check_Rebook_Allowed
4394
4395 -- smadhava Bug#4542290 - 22-Aug-2005 - Added - End
4396
4397 PROCEDURE SYNC_RATE_PARAMS(
4398 p_orig_contract_id IN NUMBER,
4399 p_new_contract_id IN NUMBER) IS
4400 TYPE l_kkhr_id_type is table of okl_k_rate_params.khr_id%TYPE index by binary_integer;
4401 TYPE l_kparameter_type_code_type is table of okl_k_rate_params.parameter_type_code%TYPE index by binary_integer;
4402 TYPE l_keffective_from_date_type is table of okl_k_rate_params.effective_from_date%TYPE index by binary_integer;
4403 TYPE l_keffective_to_date_type is table of okl_k_rate_params.effective_to_date%TYPE index by binary_integer;
4404 TYPE l_kinterest_index_id_type is table of okl_k_rate_params.interest_index_id%TYPE index by binary_integer;
4405 TYPE l_kbase_rate_type is table of okl_k_rate_params.base_rate%TYPE index by binary_integer;
4406 TYPE l_kinterest_start_date_type is table of okl_k_rate_params.interest_start_date%TYPE index by binary_integer;
4407 TYPE l_kadder_rate_type is table of okl_k_rate_params.adder_rate%TYPE index by binary_integer;
4408 TYPE l_kmaximum_rate_type is table of okl_k_rate_params.maximum_rate%TYPE index by binary_integer;
4409 TYPE l_kminimum_rate_type is table of okl_k_rate_params.minimum_rate%TYPE index by binary_integer;
4410 TYPE l_kprincipal_basis_code_type is table of okl_k_rate_params.principal_basis_code%TYPE index by binary_integer;
4411 TYPE l_kdays_in_a_month_code_type is table of okl_k_rate_params.days_in_a_month_code%TYPE index by binary_integer;
4412 TYPE l_kdays_in_a_year_code_type is table of okl_k_rate_params.days_in_a_year_code%TYPE index by binary_integer;
4413 TYPE l_kinterest_basis_code_type is table of okl_k_rate_params.interest_basis_code%TYPE index by binary_integer;
4414 TYPE l_krate_delay_code_type is table of okl_k_rate_params.rate_delay_code%TYPE index by binary_integer;
4415 TYPE l_krate_delay_frequency_type is table of okl_k_rate_params.rate_delay_frequency%TYPE index by binary_integer;
4416 TYPE l_kcompounding_frequ_code_type is table of okl_k_rate_params.compounding_frequency_code%TYPE index by binary_integer;
4417 TYPE l_kcalculation_formula_id_type is table of okl_k_rate_params.calculation_formula_id%TYPE index by binary_integer;
4418 TYPE l_kcatchup_basis_code_type is table of okl_k_rate_params.catchup_basis_code%TYPE index by binary_integer;
4419 TYPE l_kcatchup_start_date_type is table of okl_k_rate_params.catchup_start_date%TYPE index by binary_integer;
4420 TYPE l_kcatchup_settlemen_code_type is table of okl_k_rate_params.catchup_settlement_code%TYPE index by binary_integer;
4421 TYPE l_krate_change_start_date_type is table of okl_k_rate_params.rate_change_start_date%TYPE index by binary_integer;
4422 TYPE l_krate_change_frequ_code_type is table of okl_k_rate_params.rate_change_frequency_code%TYPE index by binary_integer;
4423 TYPE l_krate_change_value_type is table of okl_k_rate_params.rate_change_value%TYPE index by binary_integer;
4424 TYPE l_kconversion_option_code_type is table of okl_k_rate_params.conversion_option_code%TYPE index by binary_integer;
4425 TYPE l_knext_conversion_date_type is table of okl_k_rate_params.next_conversion_date%TYPE index by binary_integer;
4426 TYPE l_kconversion_type_code_type is table of okl_k_rate_params.conversion_type_code%TYPE index by binary_integer;
4427 TYPE l_kattribute_category_type is table of okl_k_rate_params.attribute_category%TYPE index by binary_integer;
4428 TYPE l_kattribute1_type is table of okl_k_rate_params.attribute1%TYPE index by binary_integer;
4429 TYPE l_kattribute2_type is table of okl_k_rate_params.attribute2%TYPE index by binary_integer;
4430 TYPE l_kattribute3_type is table of okl_k_rate_params.attribute3%TYPE index by binary_integer;
4431 TYPE l_kattribute4_type is table of okl_k_rate_params.attribute4%TYPE index by binary_integer;
4432 TYPE l_kattribute5_type is table of okl_k_rate_params.attribute5%TYPE index by binary_integer;
4433 TYPE l_kattribute6_type is table of okl_k_rate_params.attribute6%TYPE index by binary_integer;
4434 TYPE l_kattribute7_type is table of okl_k_rate_params.attribute7%TYPE index by binary_integer;
4435 TYPE l_kattribute8_type is table of okl_k_rate_params.attribute8%TYPE index by binary_integer;
4436 TYPE l_kattribute9_type is table of okl_k_rate_params.attribute9%TYPE index by binary_integer;
4437 TYPE l_kattribute10_type is table of okl_k_rate_params.attribute10%TYPE index by binary_integer;
4438 TYPE l_kattribute11_type is table of okl_k_rate_params.attribute11%TYPE index by binary_integer;
4439 TYPE l_kattribute12_type is table of okl_k_rate_params.attribute12%TYPE index by binary_integer;
4440 TYPE l_kattribute13_type is table of okl_k_rate_params.attribute13%TYPE index by binary_integer;
4441 TYPE l_kattribute14_type is table of okl_k_rate_params.attribute14%TYPE index by binary_integer;
4442 TYPE l_kattribute15_type is table of okl_k_rate_params.attribute15%TYPE index by binary_integer;
4443 TYPE l_kcatchup_frequency_code_type is table of okl_k_rate_params.catchup_frequency_code%TYPE index by binary_integer;
4444
4445 l_kkhr_id_tab l_kkhr_id_type;
4446 l_kparameter_type_code_tab l_kparameter_type_code_type;
4447 l_keffective_from_date_tab l_keffective_from_date_type;
4448 l_keffective_to_date_tab l_keffective_to_date_type;
4449 l_kinterest_index_id_tab l_kinterest_index_id_type;
4450 l_kbase_rate_tab l_kbase_rate_type;
4451 l_kinterest_start_date_tab l_kinterest_start_date_type;
4452 l_kadder_rate_tab l_kadder_rate_type;
4453 l_kmaximum_rate_tab l_kmaximum_rate_type;
4454 l_kminimum_rate_tab l_kminimum_rate_type;
4455 l_kprincipal_basis_code_tab l_kprincipal_basis_code_type;
4456 l_kdays_in_a_month_code_tab l_kdays_in_a_month_code_type;
4457 l_kdays_in_a_year_code_tab l_kdays_in_a_year_code_type;
4458 l_kinterest_basis_code_tab l_kinterest_basis_code_type;
4459 l_krate_delay_code_tab l_krate_delay_code_type;
4460 l_krate_delay_frequency_tab l_krate_delay_frequency_type;
4461 l_kcompounding_frequ_code_tab l_kcompounding_frequ_code_type;
4462 l_kcalculation_formula_id_tab l_kcalculation_formula_id_type;
4463 l_kcatchup_basis_code_tab l_kcatchup_basis_code_type;
4464 l_kcatchup_start_date_tab l_kcatchup_start_date_type;
4465 l_kcatchup_settlemen_code_tab l_kcatchup_settlemen_code_type;
4466 l_krate_change_start_date_tab l_krate_change_start_date_type;
4467 l_krate_change_frequ_code_tab l_krate_change_frequ_code_type;
4468 l_krate_change_value_tab l_krate_change_value_type;
4469 l_kconversion_option_code_tab l_kconversion_option_code_type;
4470 l_knext_conversion_date_tab l_knext_conversion_date_type;
4471 l_kconversion_type_code_tab l_kconversion_type_code_type;
4472 l_kattribute_category_tab l_kattribute_category_type;
4473 l_kattribute1_tab l_kattribute1_type;
4474 l_kattribute2_tab l_kattribute2_type;
4475 l_kattribute3_tab l_kattribute3_type;
4476 l_kattribute4_tab l_kattribute4_type;
4477 l_kattribute5_tab l_kattribute5_type;
4478 l_kattribute6_tab l_kattribute6_type;
4479 l_kattribute7_tab l_kattribute7_type;
4480 l_kattribute8_tab l_kattribute8_type;
4481 l_kattribute9_tab l_kattribute9_type;
4482 l_kattribute10_tab l_kattribute10_type;
4483 l_kattribute11_tab l_kattribute11_type;
4484 l_kattribute12_tab l_kattribute12_type;
4485 l_kattribute13_tab l_kattribute13_type;
4486 l_kattribute14_tab l_kattribute14_type;
4487 l_kattribute15_tab l_kattribute15_type;
4488 l_kcatchup_frequency_code_tab l_kcatchup_frequency_code_type;
4489
4490 l_kkhr_id_tab2 l_kkhr_id_type;
4491 l_kparameter_type_code_tab2 l_kparameter_type_code_type;
4492 l_keffective_from_date_tab2 l_keffective_from_date_type;
4493 l_keffective_to_date_tab2 l_keffective_to_date_type;
4494 l_kinterest_index_id_tab2 l_kinterest_index_id_type;
4495 l_kbase_rate_tab2 l_kbase_rate_type;
4496 l_kinterest_start_date_tab2 l_kinterest_start_date_type;
4497 l_kadder_rate_tab2 l_kadder_rate_type;
4498 l_kmaximum_rate_tab2 l_kmaximum_rate_type;
4499 l_kminimum_rate_tab2 l_kminimum_rate_type;
4500 l_kprincipal_basis_code_tab2 l_kprincipal_basis_code_type;
4501 l_kdays_in_a_month_code_tab2 l_kdays_in_a_month_code_type;
4502 l_kdays_in_a_year_code_tab2 l_kdays_in_a_year_code_type;
4503 l_kinterest_basis_code_tab2 l_kinterest_basis_code_type;
4504 l_krate_delay_code_tab2 l_krate_delay_code_type;
4505 l_krate_delay_frequency_tab2 l_krate_delay_frequency_type;
4506 l_kcompounding_frequ_code_tab2 l_kcompounding_frequ_code_type;
4507 l_kcalculation_formula_id_tab2 l_kcalculation_formula_id_type;
4508 l_kcatchup_basis_code_tab2 l_kcatchup_basis_code_type;
4509 l_kcatchup_start_date_tab2 l_kcatchup_start_date_type;
4510 l_kcatchup_settlemen_code_tab2 l_kcatchup_settlemen_code_type;
4511 l_krate_change_start_date_tab2 l_krate_change_start_date_type;
4512 l_krate_change_frequ_code_tab2 l_krate_change_frequ_code_type;
4513 l_krate_change_value_tab2 l_krate_change_value_type;
4514 l_kconversion_option_code_tab2 l_kconversion_option_code_type;
4515 l_knext_conversion_date_tab2 l_knext_conversion_date_type;
4516 l_kconversion_type_code_tab2 l_kconversion_type_code_type;
4517 l_kattribute_category_tab2 l_kattribute_category_type;
4518 l_kattribute1_tab2 l_kattribute1_type;
4519 l_kattribute2_tab2 l_kattribute2_type;
4520 l_kattribute3_tab2 l_kattribute3_type;
4521 l_kattribute4_tab2 l_kattribute4_type;
4522 l_kattribute5_tab2 l_kattribute5_type;
4523 l_kattribute6_tab2 l_kattribute6_type;
4524 l_kattribute7_tab2 l_kattribute7_type;
4525 l_kattribute8_tab2 l_kattribute8_type;
4526 l_kattribute9_tab2 l_kattribute9_type;
4527 l_kattribute10_tab2 l_kattribute10_type;
4528 l_kattribute11_tab2 l_kattribute11_type;
4529 l_kattribute12_tab2 l_kattribute12_type;
4530 l_kattribute13_tab2 l_kattribute13_type;
4531 l_kattribute14_tab2 l_kattribute14_type;
4532 l_kattribute15_tab2 l_kattribute15_type;
4533 l_kcatchup_frequency_code_tab2 l_kcatchup_frequency_code_type;
4534
4535 l_k_rate_params_counter number := 1;
4536
4537 --CURSOR C30(p_id NUMBER, p_date DATE) IS
4538 CURSOR C30(p_id NUMBER) IS
4539 SELECT
4540 a.khr_id, a.parameter_type_code, a.effective_from_date,
4541 a.effective_to_date, a.interest_index_id, a.base_rate,
4542 a.interest_start_date, a.adder_rate, a.maximum_rate,
4543 a.minimum_rate, a.principal_basis_code, a.days_in_a_month_code,
4544 a.days_in_a_year_code, a.interest_basis_code, a.rate_delay_code,
4545 a.rate_delay_frequency, a.compounding_frequency_code, a.calculation_formula_id,
4546 a.catchup_basis_code, a.catchup_start_date, a.catchup_settlement_code,
4547 a.rate_change_start_date, a.rate_change_frequency_code, a.rate_change_value,
4548 a.conversion_option_code, a.next_conversion_date, a.conversion_type_code,
4549 a.attribute_category, a.attribute1, a.attribute2,
4550 a.attribute3, a.attribute4, a.attribute5,
4551 a.attribute6, a.attribute7, a.attribute8,
4552 a.attribute9, a.attribute10, a.attribute11,
4553 a.attribute12, a.attribute13, a.attribute14,
4554 a.attribute15, a.catchup_frequency_code
4555 FROM OKL_K_RATE_PARAMS a
4556 WHERE a.khr_id = p_id;
4557 --AND (effective_to_date is NULL OR
4558 -- effective_to_date = p_date);
4559
4560 /*CURSOR max_effective_to_date_csr(p_id NUMBER) IS
4561 SELECT max(effective_to_date) effective_to_date
4562 FROM OKL_K_RATE_PARAMS
4563 WHERE KHR_ID = p_id;
4564
4565 l_max_effective_to_date DATE;*/
4566 BEGIN
4567 IF (G_DEBUG_ENABLED = 'Y') THEN
4568 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4569 END IF;
4570 DELETE OKL_K_RATE_PARAMS
4571 WHERE KHR_ID = p_new_contract_id;
4572 --AND effective_to_date is NULL;
4573
4574 /*FOR r IN max_effective_to_date_csr(p_orig_contract_id)
4575 LOOP
4576 l_max_effective_to_date := r.effective_to_date;
4577 END LOOP;*/
4578
4579 --OPEN C30(p_orig_contract_id, l_max_effective_to_date);
4580 OPEN C30(p_orig_contract_id);
4581 LOOP
4582 FETCH C30 BULK COLLECT INTO
4583 l_kkhr_id_tab2, l_kparameter_type_code_tab2, l_keffective_from_date_tab2,
4584 l_keffective_to_date_tab2, l_kinterest_index_id_tab2, l_kbase_rate_tab2,
4585 l_kinterest_start_date_tab2, l_kadder_rate_tab2, l_kmaximum_rate_tab2,
4586 l_kminimum_rate_tab2, l_kprincipal_basis_code_tab2, l_kdays_in_a_month_code_tab2,
4587 l_kdays_in_a_year_code_tab2, l_kinterest_basis_code_tab2, l_krate_delay_code_tab2,
4588 l_krate_delay_frequency_tab2, l_kcompounding_frequ_code_tab2, l_kcalculation_formula_id_tab2,
4589 l_kcatchup_basis_code_tab2, l_kcatchup_start_date_tab2, l_kcatchup_settlemen_code_tab2,
4590 l_krate_change_start_date_tab2, l_krate_change_frequ_code_tab2, l_krate_change_value_tab2,
4591 l_kconversion_option_code_tab2, l_knext_conversion_date_tab2, l_kconversion_type_code_tab2,
4592 l_kattribute_category_tab2, l_kattribute1_tab2, l_kattribute2_tab2,
4593 l_kattribute3_tab2, l_kattribute4_tab2, l_kattribute5_tab2,
4594 l_kattribute6_tab2, l_kattribute7_tab2, l_kattribute8_tab2,
4595 l_kattribute9_tab2, l_kattribute10_tab2, l_kattribute11_tab2,
4596 l_kattribute12_tab2, l_kattribute13_tab2, l_kattribute14_tab2,
4597 l_kattribute15_tab2, l_kcatchup_frequency_code_tab2
4598 LIMIT G_BULK_SIZE;
4599 EXIT WHEN l_kkhr_id_tab2.COUNT = 0;
4600
4601 FOR i IN l_kkhr_id_tab2.FIRST..l_kkhr_id_tab2.LAST
4602 LOOP
4603 l_kkhr_id_tab(l_k_rate_params_counter) := l_kkhr_id_tab2(i);
4604 l_kkhr_id_tab(l_k_rate_params_counter) := p_new_contract_id;
4605
4606 l_kparameter_type_code_tab(l_k_rate_params_counter) := l_kparameter_type_code_tab2(i);
4607 l_keffective_from_date_tab(l_k_rate_params_counter) := l_keffective_from_date_tab2(i);
4608 l_keffective_to_date_tab(l_k_rate_params_counter) := l_keffective_to_date_tab2(i);
4609 l_kinterest_index_id_tab(l_k_rate_params_counter) := l_kinterest_index_id_tab2(i);
4610 l_kbase_rate_tab(l_k_rate_params_counter) := l_kbase_rate_tab2(i);
4611 l_kinterest_start_date_tab(l_k_rate_params_counter) := l_kinterest_start_date_tab2(i);
4612
4613 l_kadder_rate_tab(l_k_rate_params_counter) := l_kadder_rate_tab2(i);
4614 l_kmaximum_rate_tab(l_k_rate_params_counter) := l_kmaximum_rate_tab2(i);
4615 l_kminimum_rate_tab(l_k_rate_params_counter) := l_kminimum_rate_tab2(i);
4616 l_kprincipal_basis_code_tab(l_k_rate_params_counter) := l_kprincipal_basis_code_tab2(i);
4617 l_kdays_in_a_month_code_tab(l_k_rate_params_counter) := l_kdays_in_a_month_code_tab2(i);
4618 l_kdays_in_a_year_code_tab(l_k_rate_params_counter) := l_kdays_in_a_year_code_tab2(i);
4619 l_kinterest_basis_code_tab(l_k_rate_params_counter) := l_kinterest_basis_code_tab2(i);
4620 l_krate_delay_code_tab(l_k_rate_params_counter) := l_krate_delay_code_tab2(i);
4621 l_krate_delay_frequency_tab(l_k_rate_params_counter) := l_krate_delay_frequency_tab2(i);
4622 l_kcompounding_frequ_code_tab(l_k_rate_params_counter) := l_kcompounding_frequ_code_tab2(i);
4623 l_kcalculation_formula_id_tab(l_k_rate_params_counter) := l_kcalculation_formula_id_tab2(i);
4624 l_kcatchup_basis_code_tab(l_k_rate_params_counter) := l_kcatchup_basis_code_tab2(i);
4625 l_kcatchup_start_date_tab(l_k_rate_params_counter) := l_kcatchup_start_date_tab2(i);
4626
4627 l_kcatchup_settlemen_code_tab(l_k_rate_params_counter) := l_kcatchup_settlemen_code_tab2(i);
4628 l_krate_change_start_date_tab(l_k_rate_params_counter) := l_krate_change_start_date_tab2(i);
4629
4630 l_krate_change_frequ_code_tab(l_k_rate_params_counter) := l_krate_change_frequ_code_tab2(i);
4631 l_krate_change_value_tab(l_k_rate_params_counter) := l_krate_change_value_tab2(i);
4632 l_kconversion_option_code_tab(l_k_rate_params_counter) := l_kconversion_option_code_tab2(i);
4633 l_knext_conversion_date_tab(l_k_rate_params_counter) := l_knext_conversion_date_tab2(i);
4634 l_kconversion_type_code_tab(l_k_rate_params_counter) := l_kconversion_type_code_tab2(i);
4635 l_kattribute_category_tab(l_k_rate_params_counter) := l_kattribute_category_tab2(i);
4636 l_kattribute1_tab(l_k_rate_params_counter) := l_kattribute1_tab2(i);
4637 l_kattribute2_tab(l_k_rate_params_counter) := l_kattribute2_tab2(i);
4638 l_kattribute3_tab(l_k_rate_params_counter) := l_kattribute3_tab2(i);
4639 l_kattribute4_tab(l_k_rate_params_counter) := l_kattribute4_tab2(i);
4640 l_kattribute5_tab(l_k_rate_params_counter) := l_kattribute5_tab2(i);
4641 l_kattribute6_tab(l_k_rate_params_counter) := l_kattribute6_tab2(i);
4642 l_kattribute7_tab(l_k_rate_params_counter) := l_kattribute7_tab2(i);
4643 l_kattribute8_tab(l_k_rate_params_counter) := l_kattribute8_tab2(i);
4644 l_kattribute9_tab(l_k_rate_params_counter) := l_kattribute9_tab2(i);
4645 l_kattribute10_tab(l_k_rate_params_counter) := l_kattribute10_tab2(i);
4646 l_kattribute11_tab(l_k_rate_params_counter) := l_kattribute11_tab2(i);
4647 l_kattribute12_tab(l_k_rate_params_counter) := l_kattribute12_tab2(i);
4648 l_kattribute13_tab(l_k_rate_params_counter) := l_kattribute13_tab2(i);
4649 l_kattribute14_tab(l_k_rate_params_counter) := l_kattribute14_tab2(i);
4650 l_kattribute15_tab(l_k_rate_params_counter) := l_kattribute15_tab2(i);
4651 l_kcatchup_frequency_code_tab(l_k_rate_params_counter) := l_kcatchup_frequency_code_tab2(i);
4652
4653 l_k_rate_params_counter := l_k_rate_params_counter + 1;
4654 END LOOP;
4655 END LOOP;
4656 CLOSE C30;
4657
4658 IF l_k_rate_params_counter > 1 THEN
4659 FORALL i IN l_kkhr_id_tab.FIRST..l_kkhr_id_tab.LAST
4660 INSERT INTO okl_k_rate_params (
4661 khr_id, parameter_type_code, effective_from_date,
4662 effective_to_date, interest_index_id, base_rate,
4663 interest_start_date, adder_rate, maximum_rate,
4664 minimum_rate, principal_basis_code, days_in_a_month_code,
4665 days_in_a_year_code, interest_basis_code, rate_delay_code,
4666 rate_delay_frequency,compounding_frequency_code, calculation_formula_id,
4667 catchup_basis_code, catchup_start_date, catchup_settlement_code,
4668 rate_change_start_date, rate_change_frequency_code, rate_change_value,
4669 conversion_option_code, next_conversion_date, conversion_type_code,
4670 attribute_category, attribute1, attribute2,
4671 attribute3, attribute4, attribute5,
4672 attribute6, attribute7, attribute8,
4673 attribute9, attribute10, attribute11,
4674 attribute12, attribute13, attribute14,
4675 attribute15, created_by, creation_date,
4676 last_updated_by, last_update_date, last_update_login,
4677 catchup_frequency_code
4678 ) VALUES (
4679 l_kkhr_id_tab(i), l_kparameter_type_code_tab(i), l_keffective_from_date_tab(i),
4680 l_keffective_to_date_tab(i), l_kinterest_index_id_tab(i), l_kbase_rate_tab(i),
4681 l_kinterest_start_date_tab(i), l_kadder_rate_tab(i), l_kmaximum_rate_tab(i),
4682 l_kminimum_rate_tab(i), l_kprincipal_basis_code_tab(i), l_kdays_in_a_month_code_tab(i),
4683 l_kdays_in_a_year_code_tab(i), l_kinterest_basis_code_tab(i), l_krate_delay_code_tab(i),
4684 l_krate_delay_frequency_tab(i), l_kcompounding_frequ_code_tab(i), l_kcalculation_formula_id_tab(i),
4685 l_kcatchup_basis_code_tab(i), l_kcatchup_start_date_tab(i), l_kcatchup_settlemen_code_tab(i),
4686 l_krate_change_start_date_tab(i), l_krate_change_frequ_code_tab(i), l_krate_change_value_tab(i),
4687 l_kconversion_option_code_tab(i), l_knext_conversion_date_tab(i), l_kconversion_type_code_tab(i),
4688 l_kattribute_category_tab(i),l_kattribute1_tab(i), l_kattribute2_tab(i),
4689 l_kattribute3_tab(i), l_kattribute4_tab(i), l_kattribute5_tab(i),
4690 l_kattribute6_tab(i), l_kattribute7_tab(i), l_kattribute8_tab(i),
4691 l_kattribute9_tab(i), l_kattribute10_tab(i), l_kattribute11_tab(i),
4692 l_kattribute12_tab(i), l_kattribute13_tab(i), l_kattribute14_tab(i),
4693 l_kattribute15_tab(i), fnd_global.user_id, SYSDATE,
4694 fnd_global.user_id, SYSDATE, fnd_global.login_id,
4695 l_kcatchup_frequency_code_tab(i)
4696 );
4697 END IF;
4698
4699 EXCEPTION WHEN OTHERS THEN
4700
4701 --x_return_status := OKL_API.G_RET_STS_ERROR;
4702 /* DEBUG */
4703 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4704 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'sqlcode=' || SQLCODE || ':sqlerrm=' || SQLERRM);
4705 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Printing copy_var_int_rate_params:l_kkhr_id_tab.count=' || l_kkhr_id_tab.COUNT || ' ...');
4706 END IF;
4707 IF (l_kkhr_id_tab.COUNT > 0) THEN
4708 FOR i IN l_kkhr_id_tab.first..l_kkhr_id_tab.last
4709 LOOP
4710 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4711 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'KHR_ID('||i||')=' || l_kKHR_ID_tab(i));
4712 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'PARAMETER_TYPE_CODE('||i||')=' || l_kPARAMETER_TYPE_CODE_tab(i));
4713 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'EFFECTIVE_FROM_DATE('||i||')=' || l_kEFFECTIVE_FROM_DATE_tab(i));
4714 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'EFFECTIVE_TO_DATE('||i||')=' || l_kEFFECTIVE_TO_DATE_tab(i));
4715 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'INTEREST_INDEX_ID('||i||')=' || l_kINTEREST_INDEX_ID_tab(i));
4716 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'BASE_RATE('||i||')=' || l_kBASE_RATE_tab(i));
4717 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'INTEREST_START_DATE('||i||')=' || l_kINTEREST_START_DATE_tab(i));
4718 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ADDER_RATE('||i||')=' || l_kADDER_RATE_tab(i));
4719 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'MAXIMUM_RATE('||i||')=' || l_kMAXIMUM_RATE_tab(i));
4720 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'MINIMUM_RATE('||i||')=' || l_kMINIMUM_RATE_tab(i));
4721 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'PRINCIPAL_BASIS_CODE('||i||')=' || l_kPRINCIPAL_BASIS_CODE_tab(i));
4722 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'DAYS_IN_A_MONTH_CODE('||i||')=' || l_kDAYS_IN_A_MONTH_CODE_tab(i));
4723 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'DAYS_IN_A_YEAR_CODE('||i||')=' || l_kDAYS_IN_A_YEAR_CODE_tab(i));
4724 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'INTEREST_BASIS_CODE('||i||')=' || l_kINTEREST_BASIS_CODE_tab(i));
4725 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RATE_DELAY_CODE('||i||')=' || l_kRATE_DELAY_CODE_tab(i));
4726 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RATE_DELAY_FREQUENCY('||i||')=' || l_kRATE_DELAY_FREQUENCY_tab(i));
4727 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'COMPOUNDING_FREQUENCY_CODE('||i||')=' || l_kCOMPOUNDING_FREQU_CODE_tab(i));
4728 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CALCULATION_FORMULA_ID('||i||')=' || l_kCALCULATION_FORMULA_ID_tab(i));
4729 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CATCHUP_BASIS_CODE('||i||')=' || l_kCATCHUP_BASIS_CODE_tab(i));
4730 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CATCHUP_START_DATE('||i||')=' || l_kCATCHUP_START_DATE_tab(i));
4731 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CATCHUP_SETTLEMENT_CODE('||i||')=' || l_kCATCHUP_SETTLEMEN_CODE_tab(i));
4732 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RATE_CHANGE_START_DATE('||i||')=' || l_kRATE_CHANGE_START_DATE_tab(i));
4733 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RATE_CHANGE_FREQUENCY_CODE('||i||')=' || l_kRATE_CHANGE_FREQU_CODE_tab(i));
4734 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'RATE_CHANGE_VALUE('||i||')=' || l_kRATE_CHANGE_VALUE_tab(i));
4735 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CONVERSION_OPTION_CODE('||i||')=' || l_kCONVERSION_OPTION_CODE_tab(i));
4736 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'NEXT_CONVERSION_DATE('||i||')=' || l_kNEXT_CONVERSION_DATE_tab(i));
4737 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CONVERSION_TYPE_CODE('||i||')=' || l_kCONVERSION_TYPE_CODE_tab(i));
4738 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE_CATEGORY('||i||')=' || l_kATTRIBUTE_CATEGORY_tab(i));
4739 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE1('||i||')=' || l_kATTRIBUTE1_tab(i));
4740 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE2('||i||')=' || l_kATTRIBUTE2_tab(i));
4741 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE3('||i||')=' || l_kATTRIBUTE3_tab(i));
4742 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE4('||i||')=' || l_kATTRIBUTE4_tab(i));
4743 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE5('||i||')=' || l_kATTRIBUTE5_tab(i));
4744 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE6('||i||')=' || l_kATTRIBUTE6_tab(i));
4745 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE7('||i||')=' || l_kATTRIBUTE7_tab(i));
4746 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE8('||i||')=' || l_kATTRIBUTE8_tab(i));
4747 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE9('||i||')=' || l_kATTRIBUTE9_tab(i));
4748 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE10('||i||')=' || l_kATTRIBUTE10_tab(i));
4749 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE11('||i||')=' || l_kATTRIBUTE11_tab(i));
4750 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE12('||i||')=' || l_kATTRIBUTE12_tab(i));
4751 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE13('||i||')=' || l_kATTRIBUTE13_tab(i));
4752 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE14('||i||')=' || l_kATTRIBUTE14_tab(i));
4753 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'ATTRIBUTE15('||i||')=' || l_kATTRIBUTE15_tab(i));
4754 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'CATCHUP_FREQUENCY_CODE('||i||')=' || l_kCATCHUP_FREQUENCY_CODE_tab(i));
4755 END IF;
4756 END LOOP;
4757 END IF;
4758
4759 RAISE OKC_API.G_EXCEPTION_ERROR;
4760 END SYNC_RATE_PARAMS;
4761
4762 PROCEDURE check_base_rate(
4763 p_khr_id IN NUMBER,
4764 x_base_rate_defined OUT NOCOPY BOOLEAN,
4765 x_return_status OUT NOCOPY VARCHAR2) IS
4766 CURSOR base_rate_csr(p_id NUMBER) IS
4767 SELECT base_rate
4768 FROM OKL_K_RATE_PARAMS
4769 WHERE KHR_ID = p_id
4770 AND PARAMETER_TYPE_CODE = 'ACTUAL'
4771 AND EFFECTIVE_TO_DATE IS NULL;
4772
4773 l_base_rate NUMBER := NULL;
4774 BEGIN
4775 NULL;
4776 OPEN base_rate_csr(p_khr_id);
4777 FETCH base_rate_csr
4778 INTO l_base_rate;
4779 CLOSE base_rate_csr;
4780
4781 IF (l_base_rate IS NULL OR
4782 l_base_rate = OKL_API.G_MISS_NUM) THEN
4783 x_base_rate_defined := FALSE;
4784 ELSE
4785 x_base_rate_defined := TRUE;
4786 END IF;
4787 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4788
4789 EXCEPTION
4790 WHEN NO_DATA_FOUND THEN -- Bug 4905142
4791 x_base_rate_defined := FALSE;
4792 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4793 WHEN OTHERS THEN
4794 x_return_status := OKL_API.G_RET_STS_ERROR;
4795 x_base_rate_defined := FALSE;
4796 END;
4797
4798 PROCEDURE check_principal_payment(
4799 p_api_version IN NUMBER,
4800 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4801 x_return_status OUT NOCOPY VARCHAR2,
4802 x_msg_count OUT NOCOPY NUMBER,
4803 x_msg_data OUT NOCOPY VARCHAR2,
4804 p_chr_id IN OKC_K_HEADERS_B.ID%TYPE,
4805 x_principal_payment_defined OUT NOCOPY BOOLEAN) IS
4806
4807 cursor l_hdrrl_csr( rgcode OKC_RULE_GROUPS_B.RGD_CODE%TYPE,
4808 rlcat OKC_RULES_B.RULE_INFORMATION_CATEGORY%TYPE,
4809 chrId NUMBER) IS
4810 SELECT crl.object1_id1
4811 FROM OKC_RULE_GROUPS_B crg,
4812 OKC_RULES_B crl
4813 WHERE crl.rgp_id = crg.id
4814 AND crg.RGD_CODE = rgcode
4815 AND crl.RULE_INFORMATION_CATEGORY = rlcat
4816 AND crg.dnz_chr_id = chrId;
4817
4818 CURSOR strm_name_csr ( styid NUMBER ) is
4819 SELECT tl.name name,
4820 stm.stream_type_purpose
4821 FROM okl_strm_type_b stm,
4822 OKL_STRM_TYPE_TL tl
4823 WHERE tl.id = stm.id
4824 AND tl.language = 'US'
4825 AND stm.id = styid;
4826
4827 l_hdrrl_rec l_hdrrl_csr%ROWTYPE;
4828 l_strm_name_rec strm_name_csr%ROWTYPE;
4829 l_api_version NUMBER := 1;
4830 l_api_name VARCHAR2(30) := 'check_principal_payment';
4831
4832 BEGIN
4833 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4834 x_principal_payment_defined := FALSE;
4835
4836 x_return_status := OKL_API.START_ACTIVITY(
4837 p_api_name => l_api_name,
4838 p_pkg_name => g_pkg_name,
4839 p_init_msg_list => p_init_msg_list,
4840 l_api_version => l_api_version,
4841 p_api_version => p_api_version,
4842 p_api_type => G_API_TYPE,
4843 x_return_status => x_return_status);
4844
4845 FOR l_hdrrl_rec in l_hdrrl_csr ( 'LALEVL', 'LASLH', p_chr_id )
4846 LOOP
4847 OPEN strm_name_csr ( l_hdrrl_rec.object1_id1 );
4848 FETCH strm_name_csr into l_strm_name_rec;
4849 IF strm_name_csr%NOTFOUND THEN
4850 CLOSE strm_name_csr;
4851 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4852 END IF;
4853 CLOSE strm_name_csr;
4854
4855 IF ( l_strm_name_rec.stream_type_purpose = 'PRINCIPAL_PAYMENT' ) Then
4856 x_principal_payment_defined := TRUE;
4857 END IF;
4858 END LOOP;
4859
4860 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
4861
4862 EXCEPTION
4863 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4864 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4865 p_api_name => l_api_name,
4866 p_pkg_name => g_pkg_name,
4867 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4868 x_msg_count => x_msg_count,
4869 x_msg_data => x_msg_data,
4870 p_api_type => g_api_type);
4871
4872 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4873 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4874 p_api_name => l_api_name,
4875 p_pkg_name => g_pkg_name,
4876 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4877 x_msg_count => x_msg_count,
4878 x_msg_data => x_msg_data,
4879 p_api_type => g_api_type);
4880
4881 WHEN OTHERS THEN
4882 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4883 p_api_name => l_api_name,
4884 p_pkg_name => g_pkg_name,
4885 p_exc_name => 'OTHERS',
4886 x_msg_count => x_msg_count,
4887 x_msg_data => x_msg_data,
4888 p_api_type => g_api_type);
4889
4890 END;
4891
4892 FUNCTION get_formula_id(p_name IN VARCHAR2) RETURN NUMBER IS
4893 l_formula_id number := NULL;
4894 begin
4895 IF (p_name is NOT NULL) THEN
4896 --RETURN(NULL);
4897 --ELSE
4898 select id
4899 INTO l_formula_id
4900 FROM OKL_FORMULAE_B
4901 WHERE NAME = p_name;
4902
4903 END IF;
4904 return(l_formula_id);
4905 end;
4906
4907 PROCEDURE copy_k_rate_params(
4908 p_api_version IN NUMBER,
4909 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4910 x_return_status OUT NOCOPY VARCHAR2,
4911 x_msg_count OUT NOCOPY NUMBER,
4912 x_msg_data OUT NOCOPY VARCHAR2,
4913 p_khr_id IN NUMBER,
4914 p_effective_from_date IN DATE,
4915 p_rate_type IN VARCHAR2,
4916 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
4917
4918 l_effective_from_date DATE;
4919 l_parameter_type_code VARCHAR2(30);
4920 l_orig_system_source_code VARCHAR2(30);
4921 l_orig_system_id1 NUMBER;
4922 l_orig_effective_from_date DATE;
4923 l_last_interest_cal_date DATE;
4924 l_api_name varchar2(240) := 'copy_k_rate_params';
4925 l_krpv_rec krpv_rec_type;
4926
4927 CURSOR get_effective_from_date_csr(
4928 p_khr_id NUMBER,
4929 p_parameter_type_code VARCHAR2) IS
4930 select rate.effective_from_date,
4931 contract.orig_system_source_code,
4932 lease.date_last_interim_interest_cal,
4933 contract.orig_system_id1
4934 FROM OKL_K_RATE_PARAMS rate,
4935 OKC_K_HEADERS_B contract,
4936 OKL_K_HEADERS lease
4937 WHERE rate.khr_id = p_khr_id
4938 AND rate.parameter_type_code = p_parameter_type_code
4939 AND rate.effective_to_date is null
4940 AND rate.khr_id = contract.id
4941 AND contract.id = lease.id;
4942
4943 -- Bug 4999888
4944 l_interest_calc_basis OKL_PRODUCT_PARAMETERS_V.INTEREST_CALCULATION_BASIS%TYPE;
4945 l_rev_recog_method OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_METHOD%TYPE;
4946 l_pdt_params_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
4947
4948 --Cursor to query the last billed due date of the stream.
4949 CURSOR get_last_billed_due_date(
4950 p_chr_id OKC_K_HEADERS_B.ID%TYPE
4951 , p_stream_purpose OKL_STRM_TYPE_V.STREAM_TYPE_PURPOSE%TYPE) IS
4952 SELECT
4953 MAX(STE.STREAM_ELEMENT_DATE) LAST_STREAM_DUE_DATE
4954 --, STY.STYB_PURPOSE_MEANING
4955 FROM
4956 OKL_STRM_ELEMENTS STE
4957 , OKL_STREAMS STM
4958 , OKL_STRM_TYPE_V STY
4959 , OKL_K_HEADERS KHR
4960 , OKC_K_HEADERS_B CHR
4961 WHERE
4962 STM.ID = STE.STM_ID
4963 AND STY.ID = STM.STY_ID
4964 AND KHR.ID = STM.KHR_ID
4965 AND CHR.ID = KHR.ID
4966 AND STE.DATE_BILLED IS NOT NULL
4967 AND CHR.ID = p_chr_id
4968 AND STY.STREAM_TYPE_PURPOSE = p_stream_purpose;
4969 --GROUP BY STY.STREAM_TYPE_PURPOSE;
4970
4971 l_last_billed_due_date DATE;
4972 BEGIN
4973
4974 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4975
4976 x_return_status := OKL_API.START_ACTIVITY(
4977 p_api_name => l_api_name,
4978 p_pkg_name => g_pkg_name,
4979 p_init_msg_list => p_init_msg_list,
4980 l_api_version => 1,
4981 p_api_version => p_api_version,
4982 p_api_type => G_API_TYPE,
4983 x_return_status => x_return_status);
4984
4985 OKL_K_RATE_PARAMS_PVT.get_product(
4986 p_api_version => p_api_version,
4987 p_init_msg_list => p_init_msg_list,
4988 x_return_status => x_return_status,
4989 x_msg_count => x_msg_count,
4990 x_msg_data => x_msg_data,
4991 p_khr_id => p_khr_id,
4992 x_pdt_parameter_rec => l_pdt_params_rec);
4993
4994 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4995 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4996 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4997 RAISE OKL_API.G_EXCEPTION_ERROR;
4998 END IF;
4999
5000 l_interest_calc_basis := l_pdt_params_rec.interest_calculation_basis;
5001 l_rev_recog_method := l_pdt_params_rec.revenue_recognition_method;
5002
5003 -- AKP: todo (change actual lookup values)
5004 IF (p_rate_type IN ('INTEREST_RATE_PARAMS', 'ADDL_INTEREST_RATE_PARAMS', 'CONVERSION_BASIS')) THEN
5005 l_parameter_type_code := 'ACTUAL';
5006 ELSIF (p_rate_type IN ('INTEREST_RATE_PARAMS_CONV', 'ADDL_INTEREST_RATE_PARAMS_CONV')) THEN
5007 l_parameter_type_code := 'CONVERSION';
5008 ELSE
5009 OKC_API.set_message(p_app_name => G_APP_NAME,
5010 p_msg_name => 'OKL_LLA_VAR_RATE_INV_PARAM');
5011 RAISE OKL_API.G_EXCEPTION_ERROR;
5012 END IF;
5013
5014 l_effective_from_date := null;
5015 FOR r IN get_effective_from_date_csr(p_khr_id, l_parameter_type_code)
5016 LOOP
5017 l_effective_from_date := r.effective_from_date;
5018 l_orig_system_source_code := r.orig_system_source_code;
5019 l_last_interest_cal_date := r.date_last_interim_interest_cal;
5020 l_orig_system_id1 := r.orig_system_id1;
5021 END LOOP;
5022
5023 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5024 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:p_khr_id=' || p_khr_id);
5025 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_parameter_type_code=' || l_parameter_type_code);
5026 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_effective_from_date=' || l_effective_from_date);
5027 END IF;
5028 IF (l_effective_from_date is NULL) THEN
5029 l_krpv_rec.effective_from_date := NULL;
5030 x_krpv_rec := l_krpv_rec;
5031 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
5032 x_msg_data => x_msg_data);
5033 return;
5034 END IF;
5035
5036 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5037 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_orig_system_source_code=' || l_orig_system_source_code);
5038 END IF;
5039 IF (l_orig_system_source_code <> 'OKL_REBOOK') THEN
5040 OKC_API.set_message(p_app_name => G_APP_NAME,
5041 p_msg_name => 'OKL_LLA_VAR_RATE_COPY_NA');
5042 RAISE OKL_API.G_EXCEPTION_ERROR;
5043 END IF;
5044
5045 -- Bug 4999888
5046 IF (l_interest_calc_basis = 'FIXED' and l_rev_recog_method='ACTUAL') THEN
5047 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5048 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:Inside FIXED and ACTUAL...');
5049 END IF;
5050 OPEN get_last_billed_due_date(l_orig_system_id1, 'LOAN_PAYMENT');
5051 FETCH get_last_billed_due_date
5052 INTO l_last_billed_due_date;
5053 CLOSE get_last_billed_due_date;
5054
5055 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5056 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_last_billed_due_date=' || l_last_billed_due_date);
5057 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_effective_from_date=' || p_effective_from_date);
5058 END IF;
5059 IF (l_last_billed_due_date IS NOT NULL AND
5060 p_effective_from_date <= l_last_billed_due_date) THEN
5061 OKC_API.set_message(p_app_name => G_APP_NAME,
5062 p_msg_name => 'OKL_LLA_VAR_RATE_INT_DATE',
5063 p_token1 => 'EFF_DATE',
5064 p_token1_value => p_effective_from_date,
5065 p_token2 => 'INTEREST_DATE',
5066 p_token2_value => l_last_billed_due_date);
5067 RAISE OKL_API.G_EXCEPTION_ERROR;
5068 END IF;
5069 END IF;
5070
5071 -- Bug 4999888
5072 IF (l_interest_calc_basis IN
5073 ('FLOAT', 'REAMORT', 'FLOAT_FACTORS', 'CATCHUP/CLEANUP')) THEN
5074 IF (l_last_interest_cal_date IS NOT NULL) THEN
5075 IF (p_effective_from_date <= l_last_interest_cal_date) THEN
5076 OKC_API.set_message(p_app_name => G_APP_NAME,
5077 p_msg_name => 'OKL_LLA_VAR_RATE_INT_DATE',
5078 p_token1 => 'EFF_DATE',
5079 p_token1_value => p_effective_from_date,
5080 p_token2 => 'INTEREST_DATE',
5081 p_token2_value => l_last_interest_cal_date);
5082 RAISE OKL_API.G_EXCEPTION_ERROR;
5083 END IF;
5084 END IF;
5085 END IF;
5086
5087 FOR r IN get_effective_from_date_csr(l_orig_system_id1,
5088 l_parameter_type_code)
5089 LOOP
5090 l_orig_effective_from_date := r.effective_from_date;
5091 END LOOP;
5092
5093 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5094 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_orig_system_id1=' || l_orig_system_id1);
5095 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_effective_from_date=' || l_effective_from_date);
5096 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:l_orig_effective_from_date=' || l_orig_effective_from_date);
5097 END IF;
5098 IF (l_orig_effective_from_date <> l_effective_from_date) THEN
5099 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5100 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'copy:Yes, inside...');
5101 END IF;
5102 x_return_status := OKL_API.G_RET_STS_ERROR;
5103 OKC_API.set_message(p_app_name => G_APP_NAME,
5104 p_msg_name => 'OKL_LLA_VAR_RATE_EXISTS');
5105 RAISE OKL_API.G_EXCEPTION_ERROR;
5106 END IF;
5107
5108 SELECT
5109 KHR_ID, l_parameter_type_code, p_effective_from_date,
5110 EFFECTIVE_TO_DATE, INTEREST_INDEX_ID, BASE_RATE,
5111 INTEREST_START_DATE, ADDER_RATE, MAXIMUM_RATE,
5112 MINIMUM_RATE, PRINCIPAL_BASIS_CODE, DAYS_IN_A_MONTH_CODE,
5113 DAYS_IN_A_YEAR_CODE, INTEREST_BASIS_CODE, RATE_DELAY_CODE,
5114 RATE_DELAY_FREQUENCY, COMPOUNDING_FREQUENCY_CODE, CALCULATION_FORMULA_ID,
5115 CATCHUP_BASIS_CODE, CATCHUP_START_DATE, CATCHUP_SETTLEMENT_CODE,
5116 RATE_CHANGE_START_DATE, RATE_CHANGE_FREQUENCY_CODE, RATE_CHANGE_VALUE,
5117 CONVERSION_OPTION_CODE, NEXT_CONVERSION_DATE, CONVERSION_TYPE_CODE,
5118 ATTRIBUTE_CATEGORY, ATTRIBUTE1, ATTRIBUTE2,
5119 ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5,
5120 ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8,
5121 ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11,
5122 ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
5123 ATTRIBUTE15, fnd_global.user_id, SYSDATE,
5124 fnd_global.user_id, SYSDATE, fnd_global.user_id,
5125 CATCHUP_FREQUENCY_CODE
5126 INTO
5127 x_krpv_rec.KHR_ID, x_krpv_rec.parameter_type_code, x_krpv_rec.effective_from_date,
5128 x_krpv_rec.EFFECTIVE_TO_DATE, x_krpv_rec.INTEREST_INDEX_ID, x_krpv_rec.BASE_RATE,
5129 x_krpv_rec.INTEREST_START_DATE, x_krpv_rec.ADDER_RATE, x_krpv_rec.MAXIMUM_RATE,
5130 x_krpv_rec.MINIMUM_RATE, x_krpv_rec.PRINCIPAL_BASIS_CODE, x_krpv_rec.DAYS_IN_A_MONTH_CODE,
5131 x_krpv_rec.DAYS_IN_A_YEAR_CODE, x_krpv_rec.INTEREST_BASIS_CODE, x_krpv_rec.RATE_DELAY_CODE,
5132 x_krpv_rec.RATE_DELAY_FREQUENCY, x_krpv_rec.COMPOUNDING_FREQUENCY_CODE, x_krpv_rec.CALCULATION_FORMULA_ID,
5133 x_krpv_rec.CATCHUP_BASIS_CODE, x_krpv_rec.CATCHUP_START_DATE, x_krpv_rec.CATCHUP_SETTLEMENT_CODE,
5134 x_krpv_rec.RATE_CHANGE_START_DATE, x_krpv_rec.RATE_CHANGE_FREQUENCY_CODE, x_krpv_rec.RATE_CHANGE_VALUE,
5135 x_krpv_rec.CONVERSION_OPTION_CODE, x_krpv_rec.NEXT_CONVERSION_DATE, x_krpv_rec.CONVERSION_TYPE_CODE,
5136 x_krpv_rec.ATTRIBUTE_CATEGORY, x_krpv_rec.ATTRIBUTE1, x_krpv_rec.ATTRIBUTE2,
5137 x_krpv_rec.ATTRIBUTE3, x_krpv_rec.ATTRIBUTE4, x_krpv_rec.ATTRIBUTE5,
5138 x_krpv_rec.ATTRIBUTE6, x_krpv_rec.ATTRIBUTE7, x_krpv_rec.ATTRIBUTE8,
5139 x_krpv_rec.ATTRIBUTE9, x_krpv_rec.ATTRIBUTE10, x_krpv_rec.ATTRIBUTE11,
5140 x_krpv_rec.ATTRIBUTE12, x_krpv_rec.ATTRIBUTE13, x_krpv_rec.ATTRIBUTE14,
5141 x_krpv_rec.ATTRIBUTE15, x_krpv_rec.CREATED_BY, x_krpv_rec.CREATION_DATE,
5142 x_krpv_rec.LAST_UPDATED_BY, x_krpv_rec.LAST_UPDATE_DATE, x_krpv_rec.LAST_UPDATE_LOGIN,
5143 x_krpv_rec.CATCHUP_FREQUENCY_CODE
5144 FROM OKL_K_RATE_PARAMS
5145 WHERE KHR_ID = p_khr_id
5146 AND PARAMETER_TYPE_CODE = l_parameter_type_code
5147 AND EFFECTIVE_FROM_DATE = l_effective_from_date
5148 AND EFFECTIVE_TO_DATE IS NULL;
5149
5150 INSERT INTO OKL_K_RATE_PARAMS (
5151 KHR_ID, PARAMETER_TYPE_CODE, EFFECTIVE_FROM_DATE,
5152 EFFECTIVE_TO_DATE, INTEREST_INDEX_ID, BASE_RATE,
5153 INTEREST_START_DATE, ADDER_RATE, MAXIMUM_RATE,
5154 MINIMUM_RATE, PRINCIPAL_BASIS_CODE, DAYS_IN_A_MONTH_CODE,
5155 DAYS_IN_A_YEAR_CODE, INTEREST_BASIS_CODE, RATE_DELAY_CODE,
5156 RATE_DELAY_FREQUENCY, COMPOUNDING_FREQUENCY_CODE, CALCULATION_FORMULA_ID,
5157 CATCHUP_BASIS_CODE, CATCHUP_START_DATE, CATCHUP_SETTLEMENT_CODE,
5158 RATE_CHANGE_START_DATE, RATE_CHANGE_FREQUENCY_CODE, RATE_CHANGE_VALUE,
5159 CONVERSION_OPTION_CODE, NEXT_CONVERSION_DATE, CONVERSION_TYPE_CODE,
5160 ATTRIBUTE_CATEGORY, ATTRIBUTE1, ATTRIBUTE2,
5161 ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5,
5162 ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8,
5163 ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11,
5164 ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
5165 ATTRIBUTE15, CREATED_BY, CREATION_DATE,
5166 LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN,
5167 CATCHUP_FREQUENCY_CODE
5168 )
5169 VALUES (
5170 x_krpv_rec.KHR_ID, x_krpv_rec.parameter_type_code, x_krpv_rec.effective_from_date,
5171 x_krpv_rec.EFFECTIVE_TO_DATE, x_krpv_rec.INTEREST_INDEX_ID, x_krpv_rec.BASE_RATE,
5172 x_krpv_rec.INTEREST_START_DATE, x_krpv_rec.ADDER_RATE, x_krpv_rec.MAXIMUM_RATE,
5173 x_krpv_rec.MINIMUM_RATE, x_krpv_rec.PRINCIPAL_BASIS_CODE, x_krpv_rec.DAYS_IN_A_MONTH_CODE,
5174 x_krpv_rec.DAYS_IN_A_YEAR_CODE, x_krpv_rec.INTEREST_BASIS_CODE, x_krpv_rec.RATE_DELAY_CODE,
5175 x_krpv_rec.RATE_DELAY_FREQUENCY, x_krpv_rec.COMPOUNDING_FREQUENCY_CODE, x_krpv_rec.CALCULATION_FORMULA_ID,
5176 x_krpv_rec.CATCHUP_BASIS_CODE, x_krpv_rec.CATCHUP_START_DATE, x_krpv_rec.CATCHUP_SETTLEMENT_CODE,
5177 x_krpv_rec.RATE_CHANGE_START_DATE, x_krpv_rec.RATE_CHANGE_FREQUENCY_CODE, x_krpv_rec.RATE_CHANGE_VALUE,
5178 x_krpv_rec.CONVERSION_OPTION_CODE, x_krpv_rec.NEXT_CONVERSION_DATE, x_krpv_rec.CONVERSION_TYPE_CODE,
5179 x_krpv_rec.ATTRIBUTE_CATEGORY, x_krpv_rec.ATTRIBUTE1, x_krpv_rec.ATTRIBUTE2,
5180 x_krpv_rec.ATTRIBUTE3, x_krpv_rec.ATTRIBUTE4, x_krpv_rec.ATTRIBUTE5,
5181 x_krpv_rec.ATTRIBUTE6, x_krpv_rec.ATTRIBUTE7, x_krpv_rec.ATTRIBUTE8,
5182 x_krpv_rec.ATTRIBUTE9, x_krpv_rec.ATTRIBUTE10, x_krpv_rec.ATTRIBUTE11,
5183 x_krpv_rec.ATTRIBUTE12, x_krpv_rec.ATTRIBUTE13, x_krpv_rec.ATTRIBUTE14,
5184 x_krpv_rec.ATTRIBUTE15, x_krpv_rec.CREATED_BY, x_krpv_rec.CREATION_DATE,
5185 x_krpv_rec.LAST_UPDATED_BY, x_krpv_rec.LAST_UPDATE_DATE, x_krpv_rec.LAST_UPDATE_LOGIN,
5186 x_krpv_rec.CATCHUP_FREQUENCY_CODE);
5187
5188 UPDATE OKL_K_RATE_PARAMS
5189 SET EFFECTIVE_TO_DATE = p_effective_from_date - 1
5190 WHERE KHR_ID = p_khr_id
5191 AND PARAMETER_TYPE_CODE = l_parameter_type_code
5192 AND EFFECTIVE_FROM_DATE = l_effective_from_date
5193 AND EFFECTIVE_TO_DATE IS NULL;
5194
5195 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
5196
5197 EXCEPTION
5198 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5199 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5200 p_api_name => l_api_name,
5201 p_pkg_name => g_pkg_name,
5202 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5203 x_msg_count => x_msg_count,
5204 x_msg_data => x_msg_data,
5205 p_api_type => g_api_type);
5206
5207 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5208 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5209 p_api_name => l_api_name,
5210 p_pkg_name => g_pkg_name,
5211 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5212 x_msg_count => x_msg_count,
5213 x_msg_data => x_msg_data,
5214 p_api_type => g_api_type);
5215
5216 WHEN OTHERS THEN
5217 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5218 p_api_name => l_api_name,
5219 p_pkg_name => g_pkg_name,
5220 p_exc_name => 'OTHERS',
5221 x_msg_count => x_msg_count,
5222 x_msg_data => x_msg_data,
5223 p_api_type => g_api_type);
5224
5225 END;
5226
5227 -- Bug 4917614
5228 PROCEDURE SYNC_BASE_RATE(
5229 p_api_version IN NUMBER,
5230 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5231 x_return_status OUT NOCOPY VARCHAR2,
5232 x_msg_count OUT NOCOPY NUMBER,
5233 x_msg_data OUT NOCOPY VARCHAR2,
5234 p_khr_id IN NUMBER) IS
5235 CURSOR implicit_interest_rate_csr(p_id NUMBER) IS
5236 SELECT IMPLICIT_INTEREST_RATE
5237 FROM OKL_K_HEADERS
5238 WHERE ID = p_id;
5239
5240 l_base_count NUMBER;
5241 l_api_name varchar2(240) := 'sync_base_rate';
5242 l_implicit_interest_rate NUMBER;
5243 BEGIN
5244 NULL;
5245
5246 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5247 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In Sync_base_rate procedure...');
5248 END IF;
5249 x_return_status := OKL_API.START_ACTIVITY(
5250 p_api_name => l_api_name,
5251 p_pkg_name => g_pkg_name,
5252 p_init_msg_list => p_init_msg_list,
5253 l_api_version => 1,
5254 p_api_version => p_api_version,
5255 p_api_type => G_API_TYPE,
5256 x_return_status => x_return_status);
5257
5258 SELECT COUNT(1)
5259 INTO l_base_count
5260 FROM OKL_K_RATE_PARAMS
5261 WHERE khr_id = p_khr_id
5262 AND PARAMETER_TYPE_CODE = 'ACTUAL'
5263 AND EFFECTIVE_TO_DATE IS NULL
5264 AND BASE_RATE IS NULL;
5265
5266 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5267 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_base_count=' || l_base_count);
5268 END IF;
5269 IF (l_base_count > 0) THEN
5270 OPEN implicit_interest_rate_csr(p_khr_id);
5271 FETCH implicit_interest_rate_csr INTO l_implicit_interest_rate;
5272 CLOSE implicit_interest_rate_csr;
5273
5274 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5275 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_implicit_interest_rate=' || l_implicit_interest_rate);
5276 END IF;
5277 UPDATE OKL_K_RATE_PARAMS
5278 SET BASE_RATE = l_implicit_interest_rate
5279 WHERE khr_id = p_khr_id
5280 AND PARAMETER_TYPE_CODE = 'ACTUAL'
5281 AND EFFECTIVE_TO_DATE IS NULL
5282 AND BASE_RATE IS NULL;
5283 END IF;
5284
5285 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
5286
5287 EXCEPTION
5288 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5289 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5290 p_api_name => l_api_name,
5291 p_pkg_name => g_pkg_name,
5292 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5293 x_msg_count => x_msg_count,
5294 x_msg_data => x_msg_data,
5295 p_api_type => g_api_type);
5296
5297 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5298 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5299 p_api_name => l_api_name,
5300 p_pkg_name => g_pkg_name,
5301 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5302 x_msg_count => x_msg_count,
5303 x_msg_data => x_msg_data,
5304 p_api_type => g_api_type);
5305
5306 WHEN OTHERS THEN
5307 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5308 p_api_name => l_api_name,
5309 p_pkg_name => g_pkg_name,
5310 p_exc_name => 'OTHERS',
5311 x_msg_count => x_msg_count,
5312 x_msg_data => x_msg_data,
5313 p_api_type => g_api_type);
5314
5315 END;
5316
5317 END OKL_K_RATE_PARAMS_PVT;