[Home] [Help]
PACKAGE BODY: APPS.OKL_KRP_PVT
Source
1 PACKAGE BODY OKL_KRP_PVT AS
2 /* $Header: OKLSKRPB.pls 120.21.12020000.6 2012/10/26 18:55:54 gkadarka 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 G_MISS_NUM CONSTANT NUMBER := FND_API.G_MISS_NUM;
9 G_MISS_CHAR CONSTANT VARCHAR2(1) := FND_API.G_MISS_CHAR;
10 G_MISS_DATE CONSTANT DATE := FND_API.G_MISS_DATE;
11
12 ---------------------------------------------------------------------------
13 -- Lookup Code Validation
14 ---------------------------------------------------------------------------
15 FUNCTION check_lookup_code(p_lookup_type IN VARCHAR2,
16 p_lookup_code IN VARCHAR2) RETURN VARCHAR2 IS
17 x_return_status VARCHAR2(1):= Okl_Api.G_RET_STS_SUCCESS;
18 l_sysdate DATE := SYSDATE ;
19 l_dummy_var VARCHAR2(1) := '?';
20 CURSOR l_lookup_code_csr IS
21 SELECT 'X'
22 FROM fnd_lookups fndlup
23 WHERE fndlup.lookup_type = p_lookup_type
24 AND fndlup.lookup_code = p_lookup_code
25 AND l_sysdate BETWEEN
26 NVL(fndlup.start_date_active,l_sysdate)
27 AND NVL(fndlup.end_date_active,l_sysdate);
28 BEGIN
29 OPEN l_lookup_code_csr;
30 FETCH l_lookup_code_csr INTO l_dummy_var;
31 CLOSE l_lookup_code_csr;
32 -- if l_dummy_var still set to default, data was not found
33 IF (l_dummy_var = '?') THEN
34 -- notify caller of an error
35 x_return_status := Okl_Api.G_RET_STS_ERROR;
36 END IF;
37 RETURN (x_return_status);
38 EXCEPTION
39 WHEN OTHERS THEN
40 -- notify caller of an UNEXPECTED error
41 x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
42 -- verify that cursor was closed
43 IF l_lookup_code_csr%ISOPEN THEN
44 CLOSE l_lookup_code_csr;
45 END IF;
46 RETURN(x_return_status);
47 END check_lookup_code;
48
49 ---------------------------------------------------------------------------
50 -- PROCEDURE load_error_tbl
51 ---------------------------------------------------------------------------
52 PROCEDURE load_error_tbl (
53 px_error_rec IN OUT NOCOPY OKC_API.ERROR_REC_TYPE,
54 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
55
56 j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
57 last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
58 l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
59 BEGIN
60 -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
61 -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
62 -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
63 -- automatically increments the index by 1, (making it 2), however, when the GET function
64 -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
65 -- message 2. To circumvent this problem, check the amount of messages and compensate.
66 -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
67 -- will only update the index variable when 1 and only 1 message is on the stack.
68 IF (last_msg_idx = 1) THEN
69 l_msg_idx := FND_MSG_PUB.G_FIRST;
70 END IF;
71 LOOP
72 fnd_msg_pub.get(
73 p_msg_index => l_msg_idx,
74 p_encoded => fnd_api.g_false,
75 p_data => px_error_rec.msg_data,
76 p_msg_index_out => px_error_rec.msg_count);
77 px_error_tbl(j) := px_error_rec;
78 j := j + 1;
79 EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
80 END LOOP;
81 END load_error_tbl;
82 ---------------------------------------------------------------------------
83 -- FUNCTION find_highest_exception
84 ---------------------------------------------------------------------------
85 -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
86 -- in a OKC_API.ERROR_TBL_TYPE, and returns it.
87 FUNCTION find_highest_exception(
88 p_error_tbl IN OKC_API.ERROR_TBL_TYPE
89 ) RETURN VARCHAR2 IS
90 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
91 i INTEGER := 1;
92 BEGIN
93 IF (p_error_tbl.COUNT > 0) THEN
94 i := p_error_tbl.FIRST;
95 LOOP
96 IF (p_error_tbl(i).error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
97 IF (l_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
98 l_return_status := p_error_tbl(i).error_type;
99 END IF;
100 END IF;
101 EXIT WHEN (i = p_error_tbl.LAST);
102 i := p_error_tbl.NEXT(i);
103 END LOOP;
104 END IF;
105 RETURN(l_return_status);
106 END find_highest_exception;
107 ---------------------------------------------------------------------------
108 -- FUNCTION get_seq_id
109 ---------------------------------------------------------------------------
110 FUNCTION get_seq_id RETURN NUMBER IS
111 BEGIN
112 RETURN(okc_p_util.raw_to_number(sys_guid()));
113 END get_seq_id;
114
115 ---------------------------------------------------------------------------
116 -- PROCEDURE qc
117 ---------------------------------------------------------------------------
118 PROCEDURE qc IS
119 BEGIN
120 null;
121 END qc;
122
123 ---------------------------------------------------------------------------
124 -- PROCEDURE change_version
125 ---------------------------------------------------------------------------
126 PROCEDURE change_version IS
127 BEGIN
128 null;
129 END change_version;
130
131 ---------------------------------------------------------------------------
132 -- PROCEDURE api_copy
133 ---------------------------------------------------------------------------
134 PROCEDURE api_copy IS
135 BEGIN
136 null;
137 END api_copy;
138
139 ---------------------------------------------------------------------------
140 -- FUNCTION get_rec for: OKL_K_RATE_PARAMS_V
141 ---------------------------------------------------------------------------
142 FUNCTION get_rec (
143 p_krpv_rec IN krpv_rec_type,
144 x_no_data_found OUT NOCOPY BOOLEAN
145 ) RETURN krpv_rec_type IS
146 CURSOR okl_k_rate_params_v_u1_csr (p_effective_from_date IN DATE,
147 p_khr_id IN NUMBER,
148 p_parameter_type_code IN VARCHAR2) IS
149 SELECT
150 KHR_ID,
151 PARAMETER_TYPE_CODE,
152 EFFECTIVE_FROM_DATE,
153 EFFECTIVE_TO_DATE,
154 INTEREST_INDEX_ID,
155 BASE_RATE,
156 INTEREST_START_DATE,
157 ADDER_RATE,
158 MAXIMUM_RATE,
159 MINIMUM_RATE,
160 PRINCIPAL_BASIS_CODE,
161 DAYS_IN_A_MONTH_CODE,
162 DAYS_IN_A_YEAR_CODE,
163 INTEREST_BASIS_CODE,
164 RATE_DELAY_CODE,
165 RATE_DELAY_FREQUENCY,
166 COMPOUNDING_FREQUENCY_CODE,
167 CALCULATION_FORMULA_ID,
168 CATCHUP_BASIS_CODE,
169 CATCHUP_START_DATE,
170 CATCHUP_SETTLEMENT_CODE,
171 RATE_CHANGE_START_DATE,
172 RATE_CHANGE_FREQUENCY_CODE,
173 RATE_CHANGE_VALUE,
174 CONVERSION_OPTION_CODE,
175 NEXT_CONVERSION_DATE,
176 CONVERSION_TYPE_CODE,
177 ATTRIBUTE_CATEGORY,
178 ATTRIBUTE1,
179 ATTRIBUTE2,
180 ATTRIBUTE3,
181 ATTRIBUTE4,
182 ATTRIBUTE5,
183 ATTRIBUTE6,
184 ATTRIBUTE7,
185 ATTRIBUTE8,
186 ATTRIBUTE9,
187 ATTRIBUTE10,
188 ATTRIBUTE11,
189 ATTRIBUTE12,
190 ATTRIBUTE13,
191 ATTRIBUTE14,
192 ATTRIBUTE15,
193 CREATED_BY,
194 CREATION_DATE,
195 LAST_UPDATED_BY,
196 LAST_UPDATE_DATE,
197 LAST_UPDATE_LOGIN,
198 CATCHUP_FREQUENCY_CODE
199 FROM Okl_K_Rate_Params_V
200 WHERE okl_k_rate_params_v.effective_from_date = p_effective_from_date
201 AND okl_k_rate_params_v.khr_id = p_khr_id
202 AND okl_k_rate_params_v.parameter_type_code = p_parameter_type_code;
203 l_okl_k_rate_params_v_u1 okl_k_rate_params_v_u1_csr%ROWTYPE;
204 l_krpv_rec krpv_rec_type;
205 BEGIN
206 x_no_data_found := TRUE;
207 -- Get current database values
208 OPEN okl_k_rate_params_v_u1_csr (p_krpv_rec.effective_from_date,
209 p_krpv_rec.khr_id,
210 p_krpv_rec.parameter_type_code);
211 FETCH okl_k_rate_params_v_u1_csr INTO
212 l_krpv_rec.khr_id,
213 l_krpv_rec.parameter_type_code,
214 l_krpv_rec.effective_from_date,
215 l_krpv_rec.effective_to_date,
216 l_krpv_rec.interest_index_id,
217 l_krpv_rec.base_rate,
218 l_krpv_rec.interest_start_date,
219 l_krpv_rec.adder_rate,
220 l_krpv_rec.maximum_rate,
221 l_krpv_rec.minimum_rate,
222 l_krpv_rec.principal_basis_code,
223 l_krpv_rec.days_in_a_month_code,
224 l_krpv_rec.days_in_a_year_code,
225 l_krpv_rec.interest_basis_code,
226 l_krpv_rec.rate_delay_code,
227 l_krpv_rec.rate_delay_frequency,
228 l_krpv_rec.compounding_frequency_code,
229 l_krpv_rec.calculation_formula_id,
230 l_krpv_rec.catchup_basis_code,
231 l_krpv_rec.catchup_start_date,
232 l_krpv_rec.catchup_settlement_code,
233 l_krpv_rec.rate_change_start_date,
234 l_krpv_rec.rate_change_frequency_code,
235 l_krpv_rec.rate_change_value,
236 l_krpv_rec.conversion_option_code,
237 l_krpv_rec.next_conversion_date,
238 l_krpv_rec.conversion_type_code,
239 l_krpv_rec.attribute_category,
240 l_krpv_rec.attribute1,
241 l_krpv_rec.attribute2,
242 l_krpv_rec.attribute3,
243 l_krpv_rec.attribute4,
244 l_krpv_rec.attribute5,
245 l_krpv_rec.attribute6,
246 l_krpv_rec.attribute7,
247 l_krpv_rec.attribute8,
248 l_krpv_rec.attribute9,
249 l_krpv_rec.attribute10,
250 l_krpv_rec.attribute11,
251 l_krpv_rec.attribute12,
252 l_krpv_rec.attribute13,
253 l_krpv_rec.attribute14,
254 l_krpv_rec.attribute15,
255 l_krpv_rec.created_by,
256 l_krpv_rec.creation_date,
257 l_krpv_rec.last_updated_by,
258 l_krpv_rec.last_update_date,
259 l_krpv_rec.last_update_login,
260 l_krpv_rec.catchup_frequency_code;
261 x_no_data_found := okl_k_rate_params_v_u1_csr%NOTFOUND;
262 CLOSE okl_k_rate_params_v_u1_csr;
263 RETURN(l_krpv_rec);
264 END get_rec;
265
266 ------------------------------------------------------------------
267 -- This version of get_rec sets error messages if no data found --
268 ------------------------------------------------------------------
269 FUNCTION get_rec (
270 p_krpv_rec IN krpv_rec_type,
271 x_return_status OUT NOCOPY VARCHAR2
272 ) RETURN krpv_rec_type IS
273 l_krpv_rec krpv_rec_type;
274 l_row_notfound BOOLEAN := TRUE;
275 BEGIN
276 x_return_status := OKC_API.G_RET_STS_SUCCESS;
277 l_krpv_rec := get_rec(p_krpv_rec, l_row_notfound);
278 IF (l_row_notfound) THEN
279 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'EFFECTIVE_FROM_DATE');
280 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'KHR_ID');
281 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'PARAMETER_TYPE_CODE');
282 x_return_status := OKC_API.G_RET_STS_ERROR;
283 END IF;
284 RETURN(l_krpv_rec);
285 END get_rec;
286 -----------------------------------------------------------
287 -- So we don't have to pass an "l_row_notfound" variable --
288 -----------------------------------------------------------
289 FUNCTION get_rec (
290 p_krpv_rec IN krpv_rec_type
291 ) RETURN krpv_rec_type IS
292 l_row_not_found BOOLEAN := TRUE;
293 BEGIN
294 RETURN(get_rec(p_krpv_rec, l_row_not_found));
295 END get_rec;
296 ---------------------------------------------------------------------------
297 -- FUNCTION get_rec for: OKL_K_RATE_PARAMS
298 ---------------------------------------------------------------------------
299 FUNCTION get_rec (
300 p_krp_rec IN krp_rec_type,
301 x_no_data_found OUT NOCOPY BOOLEAN
302 ) RETURN krp_rec_type IS
303 CURSOR okl_k_rate_params_pk_csr (p_parameter_type_code IN VARCHAR2,
304 p_effective_from_date IN DATE,
305 p_khr_id IN NUMBER) IS
306 SELECT
307 KHR_ID,
308 PARAMETER_TYPE_CODE,
309 EFFECTIVE_FROM_DATE,
310 EFFECTIVE_TO_DATE,
311 INTEREST_INDEX_ID,
312 BASE_RATE,
313 INTEREST_START_DATE,
314 ADDER_RATE,
315 MAXIMUM_RATE,
316 MINIMUM_RATE,
317 PRINCIPAL_BASIS_CODE,
318 DAYS_IN_A_MONTH_CODE,
319 DAYS_IN_A_YEAR_CODE,
320 INTEREST_BASIS_CODE,
321 RATE_DELAY_CODE,
322 RATE_DELAY_FREQUENCY,
323 COMPOUNDING_FREQUENCY_CODE,
324 CALCULATION_FORMULA_ID,
325 CATCHUP_BASIS_CODE,
326 CATCHUP_START_DATE,
327 CATCHUP_SETTLEMENT_CODE,
328 RATE_CHANGE_START_DATE,
329 RATE_CHANGE_FREQUENCY_CODE,
330 RATE_CHANGE_VALUE,
331 CONVERSION_OPTION_CODE,
332 NEXT_CONVERSION_DATE,
333 CONVERSION_TYPE_CODE,
334 ATTRIBUTE_CATEGORY,
335 ATTRIBUTE1,
336 ATTRIBUTE2,
337 ATTRIBUTE3,
338 ATTRIBUTE4,
339 ATTRIBUTE5,
340 ATTRIBUTE6,
341 ATTRIBUTE7,
342 ATTRIBUTE8,
343 ATTRIBUTE9,
344 ATTRIBUTE10,
345 ATTRIBUTE11,
346 ATTRIBUTE12,
347 ATTRIBUTE13,
348 ATTRIBUTE14,
349 ATTRIBUTE15,
350 CREATED_BY,
351 CREATION_DATE,
352 LAST_UPDATED_BY,
353 LAST_UPDATE_DATE,
354 LAST_UPDATE_LOGIN,
355 CATCHUP_FREQUENCY_CODE
356 FROM Okl_K_Rate_Params
357 WHERE okl_k_rate_params.parameter_type_code = p_parameter_type_code
358 AND okl_k_rate_params.effective_from_date = p_effective_from_date
359 AND okl_k_rate_params.khr_id = p_khr_id;
360 l_okl_k_rate_params_pk okl_k_rate_params_pk_csr%ROWTYPE;
361 l_krp_rec krp_rec_type;
362 BEGIN
363 x_no_data_found := TRUE;
364 -- Get current database values
365 OPEN okl_k_rate_params_pk_csr (p_krp_rec.parameter_type_code,
366 p_krp_rec.effective_from_date,
367 p_krp_rec.khr_id);
368 FETCH okl_k_rate_params_pk_csr INTO
369 l_krp_rec.khr_id,
370 l_krp_rec.parameter_type_code,
371 l_krp_rec.effective_from_date,
372 l_krp_rec.effective_to_date,
373 l_krp_rec.interest_index_id,
374 l_krp_rec.base_rate,
375 l_krp_rec.interest_start_date,
376 l_krp_rec.adder_rate,
377 l_krp_rec.maximum_rate,
378 l_krp_rec.minimum_rate,
379 l_krp_rec.principal_basis_code,
380 l_krp_rec.days_in_a_month_code,
381 l_krp_rec.days_in_a_year_code,
382 l_krp_rec.interest_basis_code,
383 l_krp_rec.rate_delay_code,
384 l_krp_rec.rate_delay_frequency,
385 l_krp_rec.compounding_frequency_code,
386 l_krp_rec.calculation_formula_id,
387 l_krp_rec.catchup_basis_code,
388 l_krp_rec.catchup_start_date,
389 l_krp_rec.catchup_settlement_code,
390 l_krp_rec.rate_change_start_date,
391 l_krp_rec.rate_change_frequency_code,
392 l_krp_rec.rate_change_value,
393 l_krp_rec.conversion_option_code,
394 l_krp_rec.next_conversion_date,
395 l_krp_rec.conversion_type_code,
396 l_krp_rec.attribute_category,
397 l_krp_rec.attribute1,
398 l_krp_rec.attribute2,
399 l_krp_rec.attribute3,
400 l_krp_rec.attribute4,
401 l_krp_rec.attribute5,
402 l_krp_rec.attribute6,
403 l_krp_rec.attribute7,
404 l_krp_rec.attribute8,
405 l_krp_rec.attribute9,
406 l_krp_rec.attribute10,
407 l_krp_rec.attribute11,
408 l_krp_rec.attribute12,
409 l_krp_rec.attribute13,
410 l_krp_rec.attribute14,
411 l_krp_rec.attribute15,
412 l_krp_rec.created_by,
413 l_krp_rec.creation_date,
414 l_krp_rec.last_updated_by,
415 l_krp_rec.last_update_date,
416 l_krp_rec.last_update_login,
417 l_krp_rec.catchup_frequency_code;
418 x_no_data_found := okl_k_rate_params_pk_csr%NOTFOUND;
419 CLOSE okl_k_rate_params_pk_csr;
420 RETURN(l_krp_rec);
421 END get_rec;
422
423 ------------------------------------------------------------------
424 -- This version of get_rec sets error messages if no data found --
425 ------------------------------------------------------------------
426 FUNCTION get_rec (
427 p_krp_rec IN krp_rec_type,
428 x_return_status OUT NOCOPY VARCHAR2
429 ) RETURN krp_rec_type IS
430 l_krp_rec krp_rec_type;
431 l_row_notfound BOOLEAN := TRUE;
432 BEGIN
433 x_return_status := OKC_API.G_RET_STS_SUCCESS;
434 l_krp_rec := get_rec(p_krp_rec, l_row_notfound);
435 IF (l_row_notfound) THEN
436 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'PARAMETER_TYPE_CODE');
437 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'EFFECTIVE_FROM_DATE');
438 OKC_API.set_message(OKL_API.G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'KHR_ID');
439 x_return_status := OKC_API.G_RET_STS_ERROR;
440 END IF;
441 RETURN(l_krp_rec);
442 END get_rec;
443 -----------------------------------------------------------
444 -- So we don't have to pass an "l_row_notfound" variable --
445 -----------------------------------------------------------
446 FUNCTION get_rec (
447 p_krp_rec IN krp_rec_type
448 ) RETURN krp_rec_type IS
449 l_row_not_found BOOLEAN := TRUE;
450 BEGIN
451 RETURN(get_rec(p_krp_rec, l_row_not_found));
452 END get_rec;
453 ---------------------------------------------------------------------------
454 -- FUNCTION null_out_defaults for: OKL_K_RATE_PARAMS_V
455 ---------------------------------------------------------------------------
456 FUNCTION null_out_defaults (
457 p_krpv_rec IN krpv_rec_type
458 ) RETURN krpv_rec_type IS
459 l_krpv_rec krpv_rec_type := p_krpv_rec;
460 BEGIN
461 IF (l_krpv_rec.khr_id = OKC_API.G_MISS_NUM ) THEN
462 l_krpv_rec.khr_id := NULL;
463 END IF;
464 IF (l_krpv_rec.parameter_type_code = OKC_API.G_MISS_CHAR ) THEN
465 l_krpv_rec.parameter_type_code := NULL;
466 END IF;
467 IF (l_krpv_rec.effective_from_date = OKC_API.G_MISS_DATE ) THEN
468 l_krpv_rec.effective_from_date := NULL;
469 END IF;
470 IF (l_krpv_rec.effective_to_date = OKC_API.G_MISS_DATE ) THEN
471 l_krpv_rec.effective_to_date := NULL;
472 END IF;
473 IF (l_krpv_rec.interest_index_id = OKC_API.G_MISS_NUM ) THEN
474 l_krpv_rec.interest_index_id := NULL;
475 END IF;
476 IF (l_krpv_rec.base_rate = OKC_API.G_MISS_NUM ) THEN
477 l_krpv_rec.base_rate := NULL;
478 END IF;
479 IF (l_krpv_rec.interest_start_date = OKC_API.G_MISS_DATE ) THEN
480 l_krpv_rec.interest_start_date := NULL;
481 END IF;
482 IF (l_krpv_rec.adder_rate = OKC_API.G_MISS_NUM ) THEN
483 l_krpv_rec.adder_rate := NULL;
484 END IF;
485 IF (l_krpv_rec.maximum_rate = OKC_API.G_MISS_NUM ) THEN
486 l_krpv_rec.maximum_rate := NULL;
487 END IF;
488 IF (l_krpv_rec.minimum_rate = OKC_API.G_MISS_NUM ) THEN
489 l_krpv_rec.minimum_rate := NULL;
490 END IF;
491 IF (l_krpv_rec.principal_basis_code = OKC_API.G_MISS_CHAR ) THEN
492 l_krpv_rec.principal_basis_code := NULL;
493 END IF;
494 IF (l_krpv_rec.days_in_a_month_code = OKC_API.G_MISS_CHAR ) THEN
495 l_krpv_rec.days_in_a_month_code := NULL;
496 END IF;
497 IF (l_krpv_rec.days_in_a_year_code = OKC_API.G_MISS_CHAR ) THEN
498 l_krpv_rec.days_in_a_year_code := NULL;
499 END IF;
500 IF (l_krpv_rec.interest_basis_code = OKC_API.G_MISS_CHAR ) THEN
501 l_krpv_rec.interest_basis_code := NULL;
502 END IF;
503 IF (l_krpv_rec.rate_delay_code = OKC_API.G_MISS_CHAR ) THEN
504 l_krpv_rec.rate_delay_code := NULL;
505 END IF;
506 IF (l_krpv_rec.rate_delay_frequency = OKC_API.G_MISS_NUM ) THEN
507 l_krpv_rec.rate_delay_frequency := NULL;
508 END IF;
509 IF (l_krpv_rec.compounding_frequency_code = OKC_API.G_MISS_CHAR ) THEN
510 l_krpv_rec.compounding_frequency_code := NULL;
511 END IF;
512 IF (l_krpv_rec.calculation_formula_id = OKC_API.G_MISS_NUM ) THEN
513 l_krpv_rec.calculation_formula_id := NULL;
514 END IF;
515 IF (l_krpv_rec.catchup_basis_code = OKC_API.G_MISS_CHAR ) THEN
516 l_krpv_rec.catchup_basis_code := NULL;
517 END IF;
518 IF (l_krpv_rec.catchup_start_date = OKC_API.G_MISS_DATE ) THEN
519 l_krpv_rec.catchup_start_date := NULL;
520 END IF;
521 IF (l_krpv_rec.catchup_settlement_code = OKC_API.G_MISS_CHAR ) THEN
522 l_krpv_rec.catchup_settlement_code := NULL;
523 END IF;
524 IF (l_krpv_rec.rate_change_start_date = OKC_API.G_MISS_DATE ) THEN
525 l_krpv_rec.rate_change_start_date := NULL;
526 END IF;
527 IF (l_krpv_rec.rate_change_frequency_code = OKC_API.G_MISS_CHAR ) THEN
528 l_krpv_rec.rate_change_frequency_code := NULL;
529 END IF;
530 IF (l_krpv_rec.rate_change_value = OKC_API.G_MISS_NUM ) THEN
531 l_krpv_rec.rate_change_value := NULL;
532 END IF;
533 IF (l_krpv_rec.conversion_option_code = OKC_API.G_MISS_CHAR ) THEN
534 l_krpv_rec.conversion_option_code := NULL;
535 END IF;
536 IF (l_krpv_rec.next_conversion_date = OKC_API.G_MISS_DATE ) THEN
537 l_krpv_rec.next_conversion_date := NULL;
538 END IF;
539 IF (l_krpv_rec.conversion_type_code = OKC_API.G_MISS_CHAR ) THEN
540 l_krpv_rec.conversion_type_code := NULL;
541 END IF;
542 IF (l_krpv_rec.attribute_category = OKC_API.G_MISS_CHAR ) THEN
543 l_krpv_rec.attribute_category := NULL;
544 END IF;
545 IF (l_krpv_rec.attribute1 = OKC_API.G_MISS_CHAR ) THEN
546 l_krpv_rec.attribute1 := NULL;
547 END IF;
548 IF (l_krpv_rec.attribute2 = OKC_API.G_MISS_CHAR ) THEN
549 l_krpv_rec.attribute2 := NULL;
550 END IF;
551 IF (l_krpv_rec.attribute3 = OKC_API.G_MISS_CHAR ) THEN
552 l_krpv_rec.attribute3 := NULL;
553 END IF;
554 IF (l_krpv_rec.attribute4 = OKC_API.G_MISS_CHAR ) THEN
555 l_krpv_rec.attribute4 := NULL;
556 END IF;
557 IF (l_krpv_rec.attribute5 = OKC_API.G_MISS_CHAR ) THEN
558 l_krpv_rec.attribute5 := NULL;
559 END IF;
560 IF (l_krpv_rec.attribute6 = OKC_API.G_MISS_CHAR ) THEN
561 l_krpv_rec.attribute6 := NULL;
562 END IF;
563 IF (l_krpv_rec.attribute7 = OKC_API.G_MISS_CHAR ) THEN
564 l_krpv_rec.attribute7 := NULL;
565 END IF;
566 IF (l_krpv_rec.attribute8 = OKC_API.G_MISS_CHAR ) THEN
567 l_krpv_rec.attribute8 := NULL;
568 END IF;
569 IF (l_krpv_rec.attribute9 = OKC_API.G_MISS_CHAR ) THEN
570 l_krpv_rec.attribute9 := NULL;
571 END IF;
572 IF (l_krpv_rec.attribute10 = OKC_API.G_MISS_CHAR ) THEN
573 l_krpv_rec.attribute10 := NULL;
574 END IF;
575 IF (l_krpv_rec.attribute11 = OKC_API.G_MISS_CHAR ) THEN
576 l_krpv_rec.attribute11 := NULL;
577 END IF;
578 IF (l_krpv_rec.attribute12 = OKC_API.G_MISS_CHAR ) THEN
579 l_krpv_rec.attribute12 := NULL;
580 END IF;
581 IF (l_krpv_rec.attribute13 = OKC_API.G_MISS_CHAR ) THEN
582 l_krpv_rec.attribute13 := NULL;
583 END IF;
584 IF (l_krpv_rec.attribute14 = OKC_API.G_MISS_CHAR ) THEN
585 l_krpv_rec.attribute14 := NULL;
586 END IF;
587 IF (l_krpv_rec.attribute15 = OKC_API.G_MISS_CHAR ) THEN
588 l_krpv_rec.attribute15 := NULL;
589 END IF;
590 IF (l_krpv_rec.created_by = OKC_API.G_MISS_NUM ) THEN
591 l_krpv_rec.created_by := NULL;
592 END IF;
593 IF (l_krpv_rec.creation_date = OKC_API.G_MISS_DATE ) THEN
594 l_krpv_rec.creation_date := NULL;
595 END IF;
596 IF (l_krpv_rec.last_updated_by = OKC_API.G_MISS_NUM ) THEN
597 l_krpv_rec.last_updated_by := NULL;
598 END IF;
599 IF (l_krpv_rec.last_update_date = OKC_API.G_MISS_DATE ) THEN
600 l_krpv_rec.last_update_date := NULL;
601 END IF;
602 IF (l_krpv_rec.last_update_login = OKC_API.G_MISS_NUM ) THEN
603 l_krpv_rec.last_update_login := NULL;
604 END IF;
605 IF (l_krpv_rec.catchup_frequency_code = OKC_API.G_MISS_CHAR ) THEN
606 l_krpv_rec.catchup_frequency_code := NULL;
607 END IF;
608 RETURN(l_krpv_rec);
609 END null_out_defaults;
610 -------------------------------------
611 -- Validate_Attributes for: KHR_ID --
612 -------------------------------------
613 PROCEDURE validate_khr_id(
614 x_return_status OUT NOCOPY VARCHAR2,
615 p_khr_id IN NUMBER) IS
616 BEGIN
617 x_return_status := OKC_API.G_RET_STS_SUCCESS;
618 IF (p_khr_id = OKC_API.G_MISS_NUM OR
619 p_khr_id IS NULL)
620 THEN
621 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'khr_id');
622 x_return_status := OKC_API.G_RET_STS_ERROR;
623 RAISE G_EXCEPTION_HALT_VALIDATION;
624 END IF;
625 EXCEPTION
626 WHEN G_EXCEPTION_HALT_VALIDATION THEN
627 null;
628 WHEN OTHERS THEN
629 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
630 ,p_msg_name => G_UNEXPECTED_ERROR
631 ,p_token1 => G_SQLCODE_TOKEN
632 ,p_token1_value => SQLCODE
633 ,p_token2 => G_SQLERRM_TOKEN
634 ,p_token2_value => SQLERRM);
635 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
636 END validate_khr_id;
637 --------------------------------------------------
638 -- Validate_Attributes for: PARAMETER_TYPE_CODE --
639 --------------------------------------------------
640 PROCEDURE validate_parameter_type_code(
641 x_return_status OUT NOCOPY VARCHAR2,
642 p_parameter_type_code IN VARCHAR2) IS
643 BEGIN
644 x_return_status := OKC_API.G_RET_STS_SUCCESS;
645 IF (p_parameter_type_code = OKC_API.G_MISS_CHAR OR
646 p_parameter_type_code IS NULL)
647 THEN
648 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'parameter_type_code');
649 x_return_status := OKC_API.G_RET_STS_ERROR;
650 RAISE G_EXCEPTION_HALT_VALIDATION;
651 END IF;
652 EXCEPTION
653 WHEN G_EXCEPTION_HALT_VALIDATION THEN
654 null;
655 WHEN OTHERS THEN
656 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
657 ,p_msg_name => G_UNEXPECTED_ERROR
658 ,p_token1 => G_SQLCODE_TOKEN
659 ,p_token1_value => SQLCODE
660 ,p_token2 => G_SQLERRM_TOKEN
661 ,p_token2_value => SQLERRM);
662 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
663 END validate_parameter_type_code;
664 --------------------------------------------------
665 -- Validate_Attributes for: EFFECTIVE_FROM_DATE --
666 --------------------------------------------------
667 PROCEDURE validate_effective_from_date(
668 x_return_status OUT NOCOPY VARCHAR2,
669 p_effective_from_date IN DATE) IS
670 BEGIN
671 x_return_status := OKC_API.G_RET_STS_SUCCESS;
672 IF (p_effective_from_date = OKC_API.G_MISS_DATE OR
673 p_effective_from_date IS NULL)
674 THEN
675 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'effective_from_date');
676 x_return_status := OKC_API.G_RET_STS_ERROR;
677 RAISE G_EXCEPTION_HALT_VALIDATION;
678 END IF;
679 EXCEPTION
680 WHEN G_EXCEPTION_HALT_VALIDATION THEN
681 null;
682 WHEN OTHERS THEN
683 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
684 ,p_msg_name => G_UNEXPECTED_ERROR
685 ,p_token1 => G_SQLCODE_TOKEN
686 ,p_token1_value => SQLCODE
687 ,p_token2 => G_SQLERRM_TOKEN
688 ,p_token2_value => SQLERRM);
689 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
690 END validate_effective_from_date;
691 --------------------------------------------------
692 -- Validate_Attributes for: interest_basis_code --
693 --------------------------------------------------
694 PROCEDURE validate_interest_basis_code(
695 x_return_status OUT NOCOPY VARCHAR2,
696 p_lookup_code IN VARCHAR2) IS
697 BEGIN
698 x_return_status := check_lookup_code('OKL_VAR_INTCALC',
699 p_lookup_code);
700 END validate_interest_basis_code;
701
702 --------------------------------------------------
703 -- Validate_Attributes for: rate_delay_code --
704 --------------------------------------------------
705 PROCEDURE validate_rate_delay_code(
706 x_return_status OUT NOCOPY VARCHAR2,
707 p_lookup_code IN VARCHAR2) IS
708 BEGIN
709 x_return_status := check_lookup_code('OKL_RATE_DELAY_CODE',
710 p_lookup_code);
711 END validate_rate_delay_code;
712
713 --------------------------------------------------
714 -- Validate_Attributes for: rate_change_frequency --
715 --------------------------------------------------
716 PROCEDURE validate_rate_change_frequency(
717 x_return_status OUT NOCOPY VARCHAR2,
718 p_lookup_code IN VARCHAR2) IS
719 BEGIN
720 x_return_status := check_lookup_code('OKL_RATE_CHANGE_FREQUENCY_CODE',
721 p_lookup_code);
722 END validate_rate_change_frequency;
723
724 --------------------------------------------------
725 -- Validate_Attributes for: compounding_frequency_code --
726 --------------------------------------------------
727 PROCEDURE validate_compounding_freq_code(
728 x_return_status OUT NOCOPY VARCHAR2,
729 p_lookup_code IN VARCHAR2) IS
730 BEGIN
731 x_return_status := check_lookup_code('OKL_COMPOUNDING_FREQUENCY_CODE',
732 p_lookup_code);
733 END validate_compounding_freq_code;
734
735 --------------------------------------------------
736 -- Validate_Attributes for: Principal_Basis_Code --
737 --------------------------------------------------
738 PROCEDURE validate_Principal_Basis_Code(
739 x_return_status OUT NOCOPY VARCHAR2,
740 p_lookup_code IN VARCHAR2) IS
741 BEGIN
742 --x_return_status := check_lookup_code('OKL_PRINCIPAL_BASIS_CODE',
743 x_return_status := check_lookup_code('OKL_PRINCIPAL_INTEREST',
744 p_lookup_code);
745 END validate_Principal_Basis_Code;
746
747 --------------------------------------------------
748 -- Validate_Attributes for: Catchup_Basis_Code --
749 --------------------------------------------------
750 PROCEDURE validate_Catchup_Basis_Code(
751 x_return_status OUT NOCOPY VARCHAR2,
752 p_lookup_code IN VARCHAR2) IS
753 BEGIN
754 x_return_status := check_lookup_code('OKL_CATCHUP_BASIS_CODE',
755 p_lookup_code);
756 END validate_Catchup_Basis_Code;
757
758 --------------------------------------------------
759 -- Validate_Attributes for: Catchup_Settlement_Code --
760 --------------------------------------------------
761 PROCEDURE validate_Catchup_Settleme_Code(
762 x_return_status OUT NOCOPY VARCHAR2,
763 p_lookup_code IN VARCHAR2) IS
764 BEGIN
765 x_return_status := check_lookup_code('OKL_CATCHUP_SETTLEMENT_CODE',
766 p_lookup_code);
767 END validate_Catchup_Settleme_Code;
768
769 --------------------------------------------------
770 -- Validate_Attributes for: Conversion_Option_Code --
771 --------------------------------------------------
772 PROCEDURE validate_Conversion_Optio_Code(
773 x_return_status OUT NOCOPY VARCHAR2,
774 p_lookup_code IN VARCHAR2) IS
775 BEGIN
776 x_return_status := OKC_API.G_RET_STS_SUCCESS;
777 IF (p_lookup_code = OKC_API.G_MISS_CHAR OR
778 p_lookup_code IS NULL)
779 THEN
780 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Conversion Option Code');
781 x_return_status := OKC_API.G_RET_STS_ERROR;
782 RAISE G_EXCEPTION_HALT_VALIDATION;
783 ELSIF (p_lookup_code <> OKL_API.G_MISS_CHAR AND
784 p_lookup_code is NOT NULL) THEN
785 x_return_status := check_lookup_code('OKL_CONVERSION_OPTION_CODE',
786 p_lookup_code);
787 END IF;
788 EXCEPTION
789 WHEN G_EXCEPTION_HALT_VALIDATION THEN
790 null;
791 WHEN OTHERS THEN
792 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
793 ,p_msg_name => G_UNEXPECTED_ERROR
794 ,p_token1 => G_SQLCODE_TOKEN
795 ,p_token1_value => SQLCODE
796 ,p_token2 => G_SQLERRM_TOKEN
797 ,p_token2_value => SQLERRM);
798 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
799 END validate_Conversion_Optio_Code;
800
801 --------------------------------------------------
802 -- Validate_Attributes for: Conversion_Type_Code --
803 --------------------------------------------------
804 PROCEDURE validate_Conversion_Type_Code(
805 x_return_status OUT NOCOPY VARCHAR2,
806 p_lookup_code IN VARCHAR2) IS
807 BEGIN
808 x_return_status := check_lookup_code('OKL_CONVERSION_TYPE_CODE',
809 p_lookup_code);
810 END validate_Conversion_Type_Code;
811
812 --------------------------------------------------
813 -- Validate_Attributes for: calculation_formula_id --
814 --------------------------------------------------
815 PROCEDURE validate_calculatio_formula_id(
816 x_return_status OUT NOCOPY VARCHAR2,
817 p_calculation_formula_id IN NUMBER) IS
818 CURSOR C1(p_id NUMBER) IS
819 SELECT ID from OKL_FORMULAE_B
820 WHERE ID = p_id;
821 BEGIN
822 x_return_status := OKL_API.G_RET_STS_ERROR;
823 FOR r IN C1(p_calculation_formula_id)
824 LOOP
825 x_return_status := OKL_API.G_RET_STS_SUCCESS;
826 END LOOP;
827 return;
828
829 EXCEPTION WHEN OTHERS THEN
830 x_return_status := OKL_API.G_RET_STS_ERROR;
831 END validate_calculatio_formula_id;
832 --------------------------------------------------
833 -- Validate_Attributes for: catchup_frequency_code --
834 --------------------------------------------------
835 PROCEDURE validate_catchup_freq_code(
836 x_return_status OUT NOCOPY VARCHAR2,
837 p_lookup_code IN VARCHAR2) IS
838 BEGIN
839 x_return_status := check_lookup_code('OKL_CATCHUP_FREQUENCY_CODE',
840 p_lookup_code);
841 END validate_catchup_freq_code;
842
843 --------------------------------------------------
844 -- Validate_Attributes for: interest_index_id --
845 --------------------------------------------------
846 PROCEDURE validate_interest_index_id(
847 x_return_status OUT NOCOPY VARCHAR2,
848 p_interest_index_id IN NUMBER) IS
849 CURSOR C1(p_id NUMBER) IS
850 SELECT ID from OKL_INDICES
851 WHERE ID = p_id;
852 BEGIN
853 x_return_status := OKL_API.G_RET_STS_ERROR;
854 FOR r IN C1(p_interest_index_id)
855 LOOP
856 x_return_status := OKL_API.G_RET_STS_SUCCESS;
857 END LOOP;
858 return;
859
860 EXCEPTION WHEN OTHERS THEN
861 x_return_status := OKL_API.G_RET_STS_ERROR;
862 END validate_interest_index_id;
863
864 --------------------------------------------------
865 -- Validate_Attributes for: days_in_a_month_code --
866 --------------------------------------------------
867 PROCEDURE validate_days_in_a_month_code(
868 x_return_status OUT NOCOPY VARCHAR2,
869 p_lookup_code IN VARCHAR2) IS
870 BEGIN
871 IF (G_DEBUG_ENABLED = 'Y') THEN
872 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
873 END IF;
874 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
875 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_lookup_code=' || p_lookup_code);
876 END IF;
877 x_return_status := check_lookup_code('OKL_MONTH_TYPE',
878 p_lookup_code);
879 END validate_days_in_a_month_code;
880
881 --------------------------------------------------
882 -- Validate_Attributes for: days_in_a_year_code --
883 --------------------------------------------------
884 PROCEDURE validate_days_in_a_year_code(
885 x_return_status OUT NOCOPY VARCHAR2,
886 p_lookup_code IN VARCHAR2) IS
887 BEGIN
888 x_return_status := check_lookup_code('OKL_YEAR_TYPE',
889 p_lookup_code);
890 END validate_days_in_a_year_code;
891
892 ---------------------------------------------------------------------------
893 -- FUNCTION Validate_Attributes
894 ---------------------------------------------------------------------------
895 -------------------------------------------------
896 -- Validate_Attributes for:OKL_K_RATE_PARAMS_V --
897 -------------------------------------------------
898 FUNCTION Validate_Attributes (
899 p_krpv_rec IN krpv_rec_type
900 ) RETURN VARCHAR2 IS
901 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
902 x_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
903 BEGIN
904 -----------------------------
905 -- Column Level Validation --
906 -----------------------------
907 -- ***
908 -- khr_id
909 -- ***
910 validate_khr_id(x_return_status, p_krpv_rec.khr_id);
911 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
912 l_return_status := x_return_status;
913 RAISE G_EXCEPTION_HALT_VALIDATION;
914 END IF;
915
916 -- ***
917 -- parameter_type_code
918 -- ***
919 validate_parameter_type_code(x_return_status, p_krpv_rec.parameter_type_code);
920 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
921 l_return_status := x_return_status;
922 RAISE G_EXCEPTION_HALT_VALIDATION;
923 END IF;
924
925 -- ***
926 -- effective_from_date
927 -- ***
928 validate_effective_from_date(x_return_status, p_krpv_rec.effective_from_date);
929 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
930 l_return_status := x_return_status;
931 RAISE G_EXCEPTION_HALT_VALIDATION;
932 END IF;
933
934 RETURN(l_return_status);
935 EXCEPTION
936 WHEN G_EXCEPTION_HALT_VALIDATION THEN
937 RETURN(l_return_status);
938 WHEN OTHERS THEN
939 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
940 ,p_msg_name => G_UNEXPECTED_ERROR
941 ,p_token1 => G_SQLCODE_TOKEN
942 ,p_token1_value => SQLCODE
943 ,p_token2 => G_SQLERRM_TOKEN
944 ,p_token2_value => SQLERRM);
945 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
946 RETURN(l_return_status);
947 END Validate_Attributes;
948 ---------------------------------------------------------------------------
949 -- FUNCTION Validate_Attributes, Custom, overloaded
950 ---------------------------------------------------------------------------
951 -------------------------------------------------
952 -- Validate_Attributes for:OKL_K_RATE_PARAMS_V --
953 -------------------------------------------------
954 FUNCTION Validate_Attributes (
955 p_krpv_rec IN krpv_rec_type,
956 p_stack_messages IN VARCHAR2
957 ) RETURN VARCHAR2 IS
958 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
959 x_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
960 BEGIN
961 IF (G_DEBUG_ENABLED = 'Y') THEN
962 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
963 END IF;
964 -----------------------------
965 -- Column Level Validation --
966 -----------------------------
967 -- ***
968 -- khr_id
969 -- ***
970 validate_khr_id(x_return_status, p_krpv_rec.khr_id);
971 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
972 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
973 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
974 ,p_token1 => 'VALUE'
975 ,p_token1_value => p_krpv_rec.khr_id
976 ,p_token2 => 'PARAM'
977 ,p_token2_value => 'KHR_ID');
978 l_return_status := x_return_status;
979 IF (p_stack_messages = 'N') THEN
980 RAISE G_EXCEPTION_HALT_VALIDATION;
981 END IF;
982 END IF;
983 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
984 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_khr_id');
985 END IF;
986
987 -- ***
988 -- parameter_type_code
989 -- ***
990 validate_parameter_type_code(x_return_status, p_krpv_rec.parameter_type_code);
991 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
992 l_return_status := x_return_status;
993 IF (p_stack_messages = 'N') THEN
994 RAISE G_EXCEPTION_HALT_VALIDATION;
995 END IF;
996 END IF;
997 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
998 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_parameter_type_code');
999 END IF;
1000
1001 x_return_status := check_lookup_code('OKL_RATE_PARAM_TYPE_CODE',
1002 p_krpv_rec.parameter_type_code);
1003 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1004 -- AKP Todo: Set message (invalid parameter type code)
1005 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1006 ,p_msg_name => 'OKL_LA_INVALID_PARAM_TYPE_CODE'
1007 ,p_token1 => 'CODE'
1008 ,p_token1_value => p_krpv_rec.parameter_type_code);
1009 l_return_status := x_return_status;
1010 IF (p_stack_messages = 'N') THEN
1011 RAISE G_EXCEPTION_HALT_VALIDATION;
1012 END IF;
1013 END IF;
1014 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1015 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After check_lookup_code');
1016 END IF;
1017
1018 -- ***
1019 -- effective_from_date
1020 -- ***
1021 validate_effective_from_date(x_return_status, p_krpv_rec.effective_from_date);
1022 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1023 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1024 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1025 ,p_token1 => 'VALUE'
1026 ,p_token1_value => p_krpv_rec.effective_from_date
1027 ,p_token2 => 'PARAM'
1028 ,p_token2_value => 'EFFECTIVE_FROM_DATE');
1029 l_return_status := x_return_status;
1030 IF (p_stack_messages = 'N') THEN
1031 RAISE G_EXCEPTION_HALT_VALIDATION;
1032 END IF;
1033 END IF;
1034 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1035 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_effective_from_date');
1036 END IF;
1037
1038 --- Interest_basis_code
1039 IF (p_krpv_rec.interest_basis_code is NOT NULL AND
1040 p_krpv_rec.interest_basis_code <> G_MISS_CHAR) THEN
1041 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1042 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'interest_basis_code=' || p_krpv_rec.interest_basis_code || ':');
1043 END IF;
1044 validate_interest_basis_code( x_return_status,
1045 p_krpv_rec.interest_basis_code);
1046 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1047 l_return_status := x_return_status;
1048 -- AKP Todo: Set message (invalid Interest Calculation basis code)
1049 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1050 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1051 ,p_token1 => 'VALUE'
1052 ,p_token1_value => p_krpv_rec.interest_basis_code
1053 ,p_token2 => 'PARAM'
1054 ,p_token2_value => 'INTEREST_BASIS_CODE');
1055 l_return_status := x_return_status;
1056 IF (p_stack_messages = 'N') THEN
1057 RAISE G_EXCEPTION_HALT_VALIDATION;
1058 END IF;
1059 END IF;
1060 END IF;
1061
1062 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1063 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_interest_basis_code');
1064 END IF;
1065 --- Rate_Delay_Code
1066 IF (p_krpv_rec.Rate_Delay_Code is NOT NULL AND
1067 p_krpv_rec.Rate_Delay_Code <> G_MISS_CHAR) THEN
1068 validate_rate_delay_code( x_return_status,
1069 p_krpv_rec.Rate_Delay_Code);
1070 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1071 l_return_status := x_return_status;
1072 -- AKP Todo: Set message (invalid Rate Delay code)
1073 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1074 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1075 ,p_token1 => 'VALUE'
1076 ,p_token1_value => p_krpv_rec.rate_delay_code
1077 ,p_token2 => 'PARAM'
1078 ,p_token2_value => 'RATE_DELAY_CODE');
1079 l_return_status := x_return_status;
1080 IF (p_stack_messages = 'N') THEN
1081 RAISE G_EXCEPTION_HALT_VALIDATION;
1082 END IF;
1083 END IF;
1084 END IF;
1085 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1086 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_rate_delay_code');
1087 END IF;
1088
1089 --- Compounding_Frequency_Code
1090 IF (p_krpv_rec.Compounding_Frequency_Code is NOT NULL AND
1091 p_krpv_rec.Compounding_Frequency_Code <> G_MISS_CHAR) THEN
1092 validate_compounding_freq_code( x_return_status,
1093 p_krpv_rec.Compounding_Frequency_Code);
1094 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1095 l_return_status := x_return_status;
1096 -- AKP Todo: Set message (invalid Compounding_Frequency_Code)
1097 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1098 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1099 ,p_token1 => 'VALUE'
1100 ,p_token1_value => p_krpv_rec.compounding_frequency_code
1101 ,p_token2 => 'PARAM'
1102 ,p_token2_value => 'COMPOUNDING_FREQUENCY_CODE');
1103 l_return_status := x_return_status;
1104 IF (p_stack_messages = 'N') THEN
1105 RAISE G_EXCEPTION_HALT_VALIDATION;
1106 END IF;
1107 END IF;
1108 END IF;
1109 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1110 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_compounding_freq_code');
1111 END IF;
1112
1113 --- Rate_Change_Frequency
1114 IF (p_krpv_rec.Rate_Change_Frequency_Code is NOT NULL AND
1115 p_krpv_rec.Rate_Change_Frequency_Code <> G_MISS_CHAR) THEN
1116 validate_rate_change_frequency( x_return_status,
1117 p_krpv_rec.Rate_Change_Frequency_Code);
1118 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1119 l_return_status := x_return_status;
1120 -- AKP Todo: Set message (invalid Rate Change Frequency Code)
1121 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1122 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1123 ,p_token1 => 'VALUE'
1124 ,p_token1_value => p_krpv_rec.rate_change_frequency_code
1125 ,p_token2 => 'PARAM'
1126 ,p_token2_value => 'RATE_CHANGE_FREQUENCY_CODE');
1127 l_return_status := x_return_status;
1128 IF (p_stack_messages = 'N') THEN
1129 RAISE G_EXCEPTION_HALT_VALIDATION;
1130 END IF;
1131 END IF;
1132 END IF;
1133 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1134 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_rate_change_freq');
1135 END IF;
1136
1137 --- Principal_Basis_Code
1138 IF (p_krpv_rec.Principal_Basis_Code is NOT NULL AND
1139 p_krpv_rec.Principal_Basis_Code <> G_MISS_CHAR) THEN
1140 validate_Principal_Basis_Code(x_return_status,
1141 p_krpv_rec.Principal_Basis_Code);
1142 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1143 l_return_status := x_return_status;
1144 -- AKP Todo: Set message (invalid Principal_Basis_Code)
1145 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1146 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1147 ,p_token1 => 'VALUE'
1148 ,p_token1_value => p_krpv_rec.principal_basis_code
1149 ,p_token2 => 'PARAM'
1150 ,p_token2_value => 'PRINCIPAL_BASIS_CODE');
1151 l_return_status := x_return_status;
1152 IF (p_stack_messages = 'N') THEN
1153 --print('Invalid Principal_basis_code...');
1154 RAISE G_EXCEPTION_HALT_VALIDATION;
1155 END IF;
1156 END IF;
1157 END IF;
1158 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1159 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_principal_basis_code');
1160 END IF;
1161
1162 --- Catchup_Basis_Code
1163 IF (p_krpv_rec.Catchup_Basis_Code is NOT NULL AND
1164 p_krpv_rec.Catchup_Basis_Code <> G_MISS_CHAR) THEN
1165 validate_Catchup_Basis_Code(x_return_status,
1166 p_krpv_rec.Catchup_Basis_Code);
1167 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1168 l_return_status := x_return_status;
1169 -- AKP Todo: Set message (invalid Catchup_Basis_Code)
1170 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1171 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1172 ,p_token1 => 'VALUE'
1173 ,p_token1_value => p_krpv_rec.catchup_basis_code
1174 ,p_token2 => 'PARAM'
1175 ,p_token2_value => 'CATCHUP_BASIS_CODE');
1176 l_return_status := x_return_status;
1177 IF (p_stack_messages = 'N') THEN
1178 --print('Invalid Catchupl_basis_code...');
1179 RAISE G_EXCEPTION_HALT_VALIDATION;
1180 END IF;
1181 END IF;
1182 END IF;
1183 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1184 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_catchup_basis_code');
1185 END IF;
1186
1187 --- Catchup_Settlement_Code
1188 IF (p_krpv_rec.Catchup_Settlement_Code is NOT NULL AND
1189 p_krpv_rec.Catchup_Settlement_Code <> G_MISS_CHAR) THEN
1190 validate_Catchup_Settleme_Code(x_return_status,
1191 p_krpv_rec.Catchup_Settlement_Code);
1192 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1193 l_return_status := x_return_status;
1194 -- AKP Todo: Set message (invalid Catchup_Settlement_Code)
1195 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1196 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1197 ,p_token1 => 'VALUE'
1198 ,p_token1_value => p_krpv_rec.catchup_settlement_code
1199 ,p_token2 => 'PARAM'
1200 ,p_token2_value => 'CATCHUP_SETTLEMENT_CODE');
1201 l_return_status := x_return_status;
1202 IF (p_stack_messages = 'N') THEN
1203 --print('Invalid Catchup_settlement_code...');
1204 RAISE G_EXCEPTION_HALT_VALIDATION;
1205 END IF;
1206 END IF;
1207 END IF;
1208 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1209 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_catchup_settlement_code');
1210 END IF;
1211
1212 --- Conversion_Option_Code
1213 IF (p_krpv_rec.Conversion_Option_Code is NOT NULL AND
1214 p_krpv_rec.Conversion_Option_Code <> G_MISS_CHAR) THEN
1215 validate_Conversion_Optio_Code(x_return_status,
1216 p_krpv_rec.Conversion_Option_Code);
1217 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1218 l_return_status := x_return_status;
1219 -- AKP Todo: Set message (invalid Conversion_Option_Code)
1220 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1221 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1222 ,p_token1 => 'VALUE'
1223 ,p_token1_value => p_krpv_rec.conversion_option_code
1224 ,p_token2 => 'PARAM'
1225 ,p_token2_value => 'CONVERSION_OPTION_CODE');
1226 l_return_status := x_return_status;
1227 IF (p_stack_messages = 'N') THEN
1228 --print('Invalid Conversion_option_code...');
1229 RAISE G_EXCEPTION_HALT_VALIDATION;
1230 END IF;
1231 END IF;
1232 END IF;
1233 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1234 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_conversion_option_code');
1235 END IF;
1236
1237 --- Conversion_Type_Code
1238 IF (p_krpv_rec.Conversion_Type_Code is NOT NULL AND
1239 p_krpv_rec.Conversion_Type_Code <> G_MISS_CHAR) THEN
1240 validate_Conversion_Type_Code(x_return_status,
1241 p_krpv_rec.Conversion_Type_Code);
1242 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1243 l_return_status := x_return_status;
1244 -- AKP Todo: Set message (invalid Conversion_Type_Code)
1245 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1246 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1247 ,p_token1 => 'VALUE'
1248 ,p_token1_value => p_krpv_rec.conversion_type_code
1249 ,p_token2 => 'PARAM'
1250 ,p_token2_value => 'CONVERSION_TYPE_CODE');
1251 l_return_status := x_return_status;
1252 IF (p_stack_messages = 'N') THEN
1253 --print('Invalid Conversion_type_code...');
1254 RAISE G_EXCEPTION_HALT_VALIDATION;
1255 END IF;
1256 END IF;
1257 END IF;
1258 --print('After validate_conversion_type_code');
1259
1260 --- calculation_formula_id
1261 IF (p_krpv_rec.calculation_formula_id is NOT NULL AND
1262 p_krpv_rec.calculation_formula_id <> G_MISS_NUM) THEN
1263 validate_calculatio_formula_id(x_return_status,
1264 p_krpv_rec.calculation_formula_id);
1265 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1266 l_return_status := x_return_status;
1267 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1268 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1269 ,p_token1 => 'VALUE'
1270 ,p_token1_value => p_krpv_rec.calculation_formula_id
1271 ,p_token2 => 'PARAM'
1272 ,p_token2_value => 'CALCULATION_FORMULA_ID');
1273 l_return_status := x_return_status;
1274 IF (p_stack_messages = 'N') THEN
1275 RAISE G_EXCEPTION_HALT_VALIDATION;
1276 END IF;
1277 END IF;
1278 END IF;
1279 --print('After validate_calculatio_formula_id');
1280
1281 --- catchup_frequency_code
1282 IF (p_krpv_rec.catchup_frequency_code is NOT NULL AND
1283 p_krpv_rec.catchup_frequency_code <> G_MISS_CHAR) THEN
1284 validate_catchup_freq_code(x_return_status,
1285 p_krpv_rec.catchup_frequency_code);
1286 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1287 l_return_status := x_return_status;
1288 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1289 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1290 ,p_token1 => 'VALUE'
1291 ,p_token1_value => p_krpv_rec.catchup_frequency_code
1292 ,p_token2 => 'PARAM'
1293 ,p_token2_value => 'CATCHUP_FREQUENCY_CODE');
1294 l_return_status := x_return_status;
1295 IF (p_stack_messages = 'N') THEN
1296 RAISE G_EXCEPTION_HALT_VALIDATION;
1297 END IF;
1298 END IF;
1299 END IF;
1300 --print('After validate_catchup_freq_code');
1301
1302 --- interest_index_id
1303 IF (p_krpv_rec.interest_index_id is NOT NULL AND
1304 p_krpv_rec.interest_index_id <> G_MISS_NUM) THEN
1305 validate_interest_index_id(x_return_status,
1306 p_krpv_rec.interest_index_id);
1307 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1308 l_return_status := x_return_status;
1309 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1310 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1311 ,p_token1 => 'VALUE'
1312 ,p_token1_value => p_krpv_rec.interest_index_id
1313 ,p_token2 => 'PARAM'
1314 ,p_token2_value => 'INTEREST_INDEX_ID');
1315 l_return_status := x_return_status;
1316 IF (p_stack_messages = 'N') THEN
1317 RAISE G_EXCEPTION_HALT_VALIDATION;
1318 END IF;
1319 END IF;
1320 END IF;
1321 --print('After validate_interest_index_id');
1322
1323 --- days_in_a_month_code
1324 IF (p_krpv_rec.days_in_a_month_code is NOT NULL AND
1325 p_krpv_rec.days_in_a_month_code <> G_MISS_CHAR) THEN
1326 validate_days_in_a_month_code(x_return_status,
1327 p_krpv_rec.days_in_a_month_code);
1328 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1329 l_return_status := x_return_status;
1330 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1331 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1332 ,p_token1 => 'VALUE'
1333 ,p_token1_value => p_krpv_rec.days_in_a_month_code
1334 ,p_token2 => 'PARAM'
1335 ,p_token2_value => 'DAYS_IN_A_MONTH_CODE');
1336 l_return_status := x_return_status;
1337 IF (p_stack_messages = 'N') THEN
1338 RAISE G_EXCEPTION_HALT_VALIDATION;
1339 END IF;
1340 END IF;
1341 END IF;
1342 --print('After validate_days_in_a_month_code');
1343
1344 --- days_in_a_year_code
1345 IF (p_krpv_rec.days_in_a_year_code is NOT NULL AND
1346 p_krpv_rec.days_in_a_year_code <> G_MISS_CHAR) THEN
1347 validate_days_in_a_year_code(x_return_status,
1348 p_krpv_rec.days_in_a_year_code);
1349 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1350 l_return_status := x_return_status;
1351 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1352 ,p_msg_name => 'OKL_LA_VAR_INVALID_PARAM'
1353 ,p_token1 => 'VALUE'
1354 ,p_token1_value => p_krpv_rec.days_in_a_year_code
1355 ,p_token2 => 'PARAM'
1356 ,p_token2_value => 'DAYS_IN_A_YEAR_CODE');
1357 l_return_status := x_return_status;
1358 IF (p_stack_messages = 'N') THEN
1359 RAISE G_EXCEPTION_HALT_VALIDATION;
1360 END IF;
1361 END IF;
1362 END IF;
1363 --print('After validate_days_in_a_year_code');
1364
1365 -- Do extra validation (bug 4722746) here
1366 -- if rate delay code is defined then rate delay frequency is required
1367 IF (p_krpv_rec.Rate_Delay_Code is NOT NULL AND
1368 p_krpv_rec.Rate_Delay_Code <> G_MISS_CHAR) THEN
1369 IF (p_krpv_rec.Rate_Delay_Frequency is NOT NULL AND
1370 p_krpv_rec.Rate_Delay_Frequency <> G_MISS_NUM) THEN
1371 NULL;
1372 ELSE
1373 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1374 p_msg_name => G_REQUIRED_VALUE,
1375 p_token1 => G_COL_NAME_TOKEN,
1376 p_token1_value => 'Rate Delay'); -- changed to rate dealy
1377 l_return_status := OKC_API.G_RET_STS_ERROR;
1378 IF (p_stack_messages = 'N') THEN
1379 RAISE G_EXCEPTION_HALT_VALIDATION;
1380 END IF;
1381 END IF;
1382 ELSE -- Rate delay code is null
1383 IF (p_krpv_rec.Rate_Delay_Frequency is NOT NULL AND p_krpv_rec.Rate_Delay_Frequency <> 0 AND -- added and condition for bug 14701461
1384 p_krpv_rec.Rate_Delay_Frequency <> G_MISS_NUM) THEN
1385 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1386 p_msg_name => G_REQUIRED_VALUE,
1387 p_token1 => G_COL_NAME_TOKEN,
1388 p_token1_value => 'Rate Delay Frequency'); -- changed to rate delay frequency
1389 l_return_status := OKC_API.G_RET_STS_ERROR;
1390 IF (p_stack_messages = 'N') THEN
1391 RAISE G_EXCEPTION_HALT_VALIDATION;
1392 END IF;
1393 END IF;
1394 END IF;
1395
1396 -- if compounding freq code is defined then formula id is required
1397 IF (p_krpv_rec.compounding_frequency_code is NOT NULL AND
1398 p_krpv_rec.compounding_frequency_code <> G_MISS_CHAR) THEN
1399 IF (p_krpv_rec.calculation_formula_id is NOT NULL AND
1400 p_krpv_rec.calculation_formula_id <> G_MISS_NUM) THEN
1401 NULL;
1402 ELSE
1403 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1404 p_msg_name => G_REQUIRED_VALUE,
1405 p_token1 => G_COL_NAME_TOKEN,
1406 p_token1_value => 'Formula Name');
1407 l_return_status := OKC_API.G_RET_STS_ERROR;
1408 IF (p_stack_messages = 'N') THEN
1409 RAISE G_EXCEPTION_HALT_VALIDATION;
1410 END IF;
1411 END IF;
1412 END IF;
1413
1414 -- if rate_change_frequency_code is defined then rate change start date
1415 -- and rate change value are required id is required
1416 IF (p_krpv_rec.rate_change_frequency_code is NOT NULL AND
1417 p_krpv_rec.rate_change_frequency_code <> G_MISS_CHAR) THEN
1418
1419 IF (p_krpv_rec.rate_change_start_date is NOT NULL AND
1420 p_krpv_rec.rate_change_start_date <> G_MISS_DATE) THEN
1421 NULL;
1422 ELSE
1423 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1424 p_msg_name => G_REQUIRED_VALUE,
1425 p_token1 => G_COL_NAME_TOKEN,
1426 p_token1_value => 'Rate Change Start Date');
1427 l_return_status := OKC_API.G_RET_STS_ERROR;
1428 IF (p_stack_messages = 'N') THEN
1429 RAISE G_EXCEPTION_HALT_VALIDATION;
1430 END IF;
1431 END IF;
1432
1433 IF (p_krpv_rec.rate_change_value is NOT NULL AND
1434 p_krpv_rec.rate_change_value <> G_MISS_NUM) THEN
1435 NULL;
1436 ELSE
1437 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1438 p_msg_name => G_REQUIRED_VALUE,
1439 p_token1 => G_COL_NAME_TOKEN,
1440 p_token1_value => 'Rate Change Value');
1441 l_return_status := OKC_API.G_RET_STS_ERROR;
1442 IF (p_stack_messages = 'N') THEN
1443 RAISE G_EXCEPTION_HALT_VALIDATION;
1444 END IF;
1445 END IF;
1446
1447 ELSE -- rate change frequency code is null
1448 IF ((p_krpv_rec.rate_change_value is NOT NULL AND
1449 p_krpv_rec.rate_change_value <> G_MISS_NUM) OR
1450 (p_krpv_rec.rate_change_start_date is NOT NULL AND
1451 p_krpv_rec.rate_change_start_date <> G_MISS_DATE) ) THEN
1452 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1453 p_msg_name => G_REQUIRED_VALUE,
1454 p_token1 => G_COL_NAME_TOKEN,
1455 p_token1_value => 'Rate Change Frequency');
1456 l_return_status := OKC_API.G_RET_STS_ERROR;
1457 IF (p_stack_messages = 'N') THEN
1458 RAISE G_EXCEPTION_HALT_VALIDATION;
1459 END IF;
1460 END IF;
1461
1462 END IF;
1463
1464 -- if compounding freq code is defined then formula id is required
1465 IF (p_krpv_rec.conversion_option_code is NOT NULL AND
1466 p_krpv_rec.conversion_option_code <> G_MISS_CHAR) THEN
1467
1468 IF (p_krpv_rec.next_conversion_date is NOT NULL AND
1469 p_krpv_rec.next_conversion_date <> G_MISS_DATE) THEN
1470 NULL;
1471 ELSE
1472 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1473 p_msg_name => G_REQUIRED_VALUE,
1474 p_token1 => G_COL_NAME_TOKEN,
1475 p_token1_value => 'Next Conversion Date');
1476 l_return_status := OKC_API.G_RET_STS_ERROR;
1477 IF (p_stack_messages = 'N') THEN
1478 RAISE G_EXCEPTION_HALT_VALIDATION;
1479 END IF;
1480 END IF;
1481
1482 IF (p_krpv_rec.conversion_type_code is NOT NULL AND
1483 p_krpv_rec.conversion_type_code <> G_MISS_CHAR) THEN
1484 NULL;
1485 ELSE
1486 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1487 p_msg_name => G_REQUIRED_VALUE,
1488 p_token1 => G_COL_NAME_TOKEN,
1489 p_token1_value => 'Conversion Type');
1490 l_return_status := OKC_API.G_RET_STS_ERROR;
1491 IF (p_stack_messages = 'N') THEN
1492 RAISE G_EXCEPTION_HALT_VALIDATION;
1493 END IF;
1494 END IF;
1495
1496 ELSE -- conversion option code is null
1497 IF ((p_krpv_rec.conversion_type_code is NOT NULL AND
1498 p_krpv_rec.conversion_type_code <> G_MISS_CHAR) OR
1499 (p_krpv_rec.next_conversion_date is NOT NULL AND
1500 p_krpv_rec.next_conversion_date <> G_MISS_DATE)) THEN
1501
1502 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1503 p_msg_name => G_REQUIRED_VALUE,
1504 p_token1 => G_COL_NAME_TOKEN,
1505 p_token1_value => 'Conversion Option Code');
1506 l_return_status := OKC_API.G_RET_STS_ERROR;
1507 IF (p_stack_messages = 'N') THEN
1508 RAISE G_EXCEPTION_HALT_VALIDATION;
1509 END IF;
1510
1511 END IF;
1512
1513 END IF;
1514
1515 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1516 RAISE G_EXCEPTION_HALT_VALIDATION;
1517 END IF;
1518
1519 RETURN(l_return_status);
1520 EXCEPTION
1521 WHEN G_EXCEPTION_HALT_VALIDATION THEN
1522 RETURN(l_return_status);
1523 WHEN OTHERS THEN
1524 OKC_API.SET_MESSAGE( p_app_name => G_APP_NAME
1525 ,p_msg_name => G_UNEXPECTED_ERROR
1526 ,p_token1 => G_SQLCODE_TOKEN
1527 ,p_token1_value => SQLCODE
1528 ,p_token2 => G_SQLERRM_TOKEN
1529 ,p_token2_value => SQLERRM);
1530 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1531 RETURN(l_return_status);
1532 END Validate_Attributes;
1533 ---------------------------------------------------------------------------
1534 -- PROCEDURE Validate_Record
1535 ---------------------------------------------------------------------------
1536 ---------------------------------------------
1537 -- Validate Record for:OKL_K_RATE_PARAMS_V --
1538 ---------------------------------------------
1539 FUNCTION Validate_Record (
1540 p_krpv_rec IN krpv_rec_type,
1541 p_db_krpv_rec IN krpv_rec_type
1542 ) RETURN VARCHAR2 IS
1543 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1544 BEGIN
1545 RETURN (l_return_status);
1546 END Validate_Record;
1547 FUNCTION Validate_Record (
1548 p_krpv_rec IN krpv_rec_type
1549 ) RETURN VARCHAR2 IS
1550 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1551 l_db_krpv_rec krpv_rec_type := get_rec(p_krpv_rec);
1552 BEGIN
1553 l_return_status := Validate_Record(p_krpv_rec => p_krpv_rec,
1554 p_db_krpv_rec => l_db_krpv_rec);
1555 RETURN (l_return_status);
1556 END Validate_Record;
1557
1558 /* Validate_record : Custom, Overloaded */
1559 FUNCTION Validate_Record (
1560 p_krpv_rec IN krpv_rec_type,
1561 p_stack_messages IN VARCHAR2,
1562 p_deal_type IN VARCHAR2,
1563 p_rev_rec_method IN VARCHAR2,
1564 p_int_calc_basis IN VARCHAR2
1565 ) RETURN VARCHAR2 IS
1566 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1567 --l_db_krpv_rec krpv_rec_type := get_rec(p_krpv_rec);
1568 l_principal_payment_defined BOOLEAN := FALSE;
1569 l_msg_count NUMBER;
1570 l_msg_data VARCHAR2(2000);
1571 violated_ref_integrity EXCEPTION;
1572 l_msg1_set BOOLEAN := FALSE;
1573 l_msg2_set BOOLEAN := FALSE;
1574
1575 --Bug# 13002041
1576 l_pricing_engine OKL_ST_GEN_TMPT_SETS.pricing_engine%TYPE;
1577 lx_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1578 l_days_month_yr_concat VARCHAR2(2700);
1579
1580 --Start of Code Bug# 13951493
1581 CURSOR C1(p_khr_id NUMBER) IS
1582 SELECT start_date
1583 from okc_k_headers_all_b
1584 WHERE ID = p_khr_id;
1585 --End of Code Bug# 13951493
1586
1587 BEGIN
1588 IF (G_DEBUG_ENABLED = 'Y') THEN
1589 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1590 END IF;
1591 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1592 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In Validate_Record...');
1593 END IF;
1594 IF (p_deal_type IN ('LEASEDF', 'LEASEOP', 'LEASEST') ) THEN
1595 IF (p_int_calc_basis = 'FIXED' AND p_rev_rec_method = 'STREAMS') THEN
1596
1597 NULL; -- 4736732 No check required
1598 /*print('Checking Conversion_Option_Code...');
1599 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1600 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
1601 p_krpv_rec.Conversion_Option_Code IS NULL)
1602 THEN
1603 print('Conversion_Option_Code is NULL...');
1604 --OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Conversion_Option_Code');
1605 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1606 p_msg_name => G_REQUIRED_VALUE,
1607 p_token1 => G_COL_NAME_TOKEN,
1608 p_token1_value => 'Conversion_Option_Code');
1609 l_return_status := OKC_API.G_RET_STS_ERROR;
1610 IF (p_stack_messages = 'N') THEN
1611 RAISE violated_ref_integrity;
1612 END IF;
1613 END IF;
1614 END IF; */
1615
1616 /*
1617 print('Checking next_Conversion_Date...' ||p_krpv_rec.Next_Conversion_Date);
1618 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1619 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
1620 p_krpv_rec.Next_Conversion_Date IS NULL)
1621 THEN
1622 print('next_Conversion_Date is NULL...');
1623 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Next_Conversion_Date');
1624 l_return_status := OKC_API.G_RET_STS_ERROR;
1625 IF (p_stack_messages = 'N') THEN
1626 RAISE violated_ref_integrity;
1627 END IF;
1628 END IF;
1629 END IF; */
1630
1631 /*print('Checking Conversion_Type_Code...');
1632 --print('G_APP_NAME=' || G_APP_NAME);
1633 --print('G_REQUIRED_VALUE=' || G_REQUIRED_VALUE);
1634 --print('G_COL_NAME_TOKEN=' || G_COL_NAME_TOKEN);
1635 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1636 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
1637 p_krpv_rec.Conversion_Type_Code IS NULL)
1638 THEN
1639 print('Conversion_Type_Code is NULL...');
1640 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Conversion Type Code');
1641 l_return_status := OKC_API.G_RET_STS_ERROR;
1642 IF (p_stack_messages = 'N') THEN
1643 RAISE violated_ref_integrity;
1644 END IF;
1645 END IF;
1646 END IF;*/
1647
1648 ELSIF (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method ='STREAMS') THEN
1649 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
1650 p_krpv_rec.Interest_Index_Id IS NULL)
1651 THEN
1652 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1653 'Interest Index Id');
1654 l_return_status := OKC_API.G_RET_STS_ERROR;
1655 IF (p_stack_messages = 'N') THEN
1656 RAISE violated_ref_integrity;
1657 END IF;
1658 END IF;
1659
1660 -- Bug 4907390
1661 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
1662 p_krpv_rec.Base_Rate IS NULL)
1663 THEN
1664 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1665 'Base Rate');
1666 l_return_status := OKC_API.G_RET_STS_ERROR;
1667 IF (p_stack_messages = 'N') THEN
1668 RAISE violated_ref_integrity;
1669 END IF;
1670 END IF;*/
1671
1672 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
1673 p_krpv_rec.Interest_Start_Date IS NULL)
1674 THEN
1675 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1676 'Interest Start Date');
1677 l_return_status := OKC_API.G_RET_STS_ERROR;
1678 IF (p_stack_messages = 'N') THEN
1679 RAISE violated_ref_integrity;
1680 END IF;
1681 END IF;
1682
1683 -- Start of Code - Bug 13951493
1684 FOR r1 in C1(p_krpv_rec.khr_id)
1685 LOOP
1686
1687 IF ( TRUNC(p_krpv_rec.Interest_Start_Date) <> TRUNC(r1.start_date) )
1688 THEN
1689 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1690 ,p_msg_name => 'OKL_LA_INT_START_DT_REAMORT');
1691 l_return_status := OKC_API.G_RET_STS_ERROR;
1692 IF (p_stack_messages = 'N') THEN
1693 RAISE violated_ref_integrity;
1694 END IF;
1695 END IF;
1696
1697 END LOOP;
1698 -- End of Code - Bug 13951493
1699
1700 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
1701 p_krpv_rec.Adder_Rate IS NULL)
1702 THEN
1703 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1704 'Adder Rate');
1705 l_return_status := OKC_API.G_RET_STS_ERROR;
1706 IF (p_stack_messages = 'N') THEN
1707 RAISE violated_ref_integrity;
1708 END IF;
1709 END IF;
1710
1711 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
1712 p_krpv_rec.Maximum_Rate IS NULL)
1713 THEN
1714 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1715 'Maximum Rate');
1716 l_return_status := OKC_API.G_RET_STS_ERROR;
1717 IF (p_stack_messages = 'N') THEN
1718 RAISE violated_ref_integrity;
1719 END IF;
1720 END IF;
1721
1722 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
1723 p_krpv_rec.Minimum_Rate IS NULL)
1724 THEN
1725 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1726 'Minimum Rate');
1727 l_return_status := OKC_API.G_RET_STS_ERROR;
1728 IF (p_stack_messages = 'N') THEN
1729 RAISE violated_ref_integrity;
1730 END IF;
1731 END IF;
1732
1733 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
1734 p_krpv_rec.Principal_Basis_Code IS NULL)
1735 THEN
1736 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1737 'Principal Basis Code');
1738 l_return_status := OKC_API.G_RET_STS_ERROR;
1739 IF (p_stack_messages = 'N') THEN
1740 RAISE violated_ref_integrity;
1741 END IF;
1742 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
1743 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
1744 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
1745 -- AKP: Todo: Set Proper Message
1746 --(Principal Basis Code is 'SCHEDULED' allowed only)
1747 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1748 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1749 ,p_token1 => 'VALUE'
1750 ,p_token1_value => 'SCHEDULED'
1751 ,p_token2 => 'CODE0'
1752 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
1753 ,p_token3 => 'CODE1'
1754 ,p_token3_value => 'REAMORT'
1755 ,p_token4 => 'CODE2'
1756 ,p_token4_value => 'STREAMS');
1757 l_return_status := OKC_API.G_RET_STS_ERROR;
1758 IF (p_stack_messages = 'N') THEN
1759 RAISE violated_ref_integrity;
1760 END IF;
1761 END IF;
1762 END IF;
1763
1764 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
1765 p_krpv_rec.Days_In_A_Month_Code IS NULL)
1766 THEN
1767 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1768 'Days In A Month Code');
1769 l_return_status := OKC_API.G_RET_STS_ERROR;
1770 IF (p_stack_messages = 'N') THEN
1771 RAISE violated_ref_integrity;
1772 END IF;
1773 ELSIF (p_krpv_rec.Days_In_A_Month_Code <> OKC_API.G_MISS_CHAR AND
1774 p_krpv_rec.Days_In_A_Month_Code IS NOT NULL) THEN
1775 IF (p_krpv_rec.Days_In_A_Month_Code <> '30') THEN
1776 -- AKP: Todo: Set Proper Message
1777 --(Days In A Month Code is '30' allowed only)
1778 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1779 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1780 ,p_token1 => 'VALUE'
1781 ,p_token1_value => '30'
1782 ,p_token2 => 'CODE0'
1783 ,p_token2_value => 'DAYS_IN_A_MONTH_CODE'
1784 ,p_token3 => 'CODE1'
1785 ,p_token3_value => 'REAMORT'
1786 ,p_token4 => 'CODE2'
1787 ,p_token4_value => 'STREAMS');
1788 l_return_status := OKC_API.G_RET_STS_ERROR;
1789 IF (p_stack_messages = 'N') THEN
1790 RAISE violated_ref_integrity;
1791 END IF;
1792 END IF;
1793 END IF;
1794
1795 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
1796 p_krpv_rec.Days_In_A_Year_Code IS NULL)
1797 THEN
1798 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1799 'Days In A Year Code');
1800 l_return_status := OKC_API.G_RET_STS_ERROR;
1801 IF (p_stack_messages = 'N') THEN
1802 RAISE violated_ref_integrity;
1803 END IF;
1804 ELSIF (p_krpv_rec.Days_In_A_Year_Code <> OKC_API.G_MISS_CHAR AND
1805 p_krpv_rec.Days_In_A_Year_Code IS NOT NULL) THEN
1806 IF (p_krpv_rec.Days_In_A_Year_Code <> '360') THEN
1807 -- AKP: Todo: Set Proper Message
1808 --(Days In A Year Code is '360' allowed only)
1809 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1810 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1811 ,p_token1 => 'VALUE'
1812 ,p_token1_value => '360'
1813 ,p_token2 => 'CODE0'
1814 ,p_token2_value => 'DAYS_IN_A_YEAR_CODE'
1815 ,p_token3 => 'CODE1'
1816 ,p_token3_value => 'REAMORT'
1817 ,p_token4 => 'CODE2'
1818 ,p_token4_value => 'STREAMS');
1819 l_return_status := OKC_API.G_RET_STS_ERROR;
1820 IF (p_stack_messages = 'N') THEN
1821 RAISE violated_ref_integrity;
1822 END IF;
1823 END IF;
1824 END IF;
1825
1826 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
1827 p_krpv_rec.Interest_Basis_Code IS NULL)
1828 THEN
1829 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1830 'Interest Basis Code');
1831 l_return_status := OKC_API.G_RET_STS_ERROR;
1832 IF (p_stack_messages = 'N') THEN
1833 RAISE violated_ref_integrity;
1834 END IF;
1835 ELSIF (p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR AND
1836 p_krpv_rec.Interest_Basis_Code IS NOT NULL) THEN
1837 IF (p_krpv_rec.Interest_Basis_Code <> 'SIMPLE') THEN
1838 -- AKP: Todo: Set Proper Message
1839 --(Interest Basis Code is 'SIMPLE' allowed only)
1840 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1841 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1842 ,p_token1 => 'VALUE'
1843 ,p_token1_value => 'SIMPLE'
1844 ,p_token2 => 'CODE0'
1845 ,p_token2_value => 'INTEREST_BASIS_CODE'
1846 ,p_token3 => 'CODE1'
1847 ,p_token3_value => 'REAMORT'
1848 ,p_token4 => 'CODE2'
1849 ,p_token4_value => 'STREAMS');
1850 l_return_status := OKC_API.G_RET_STS_ERROR;
1851 IF (p_stack_messages = 'N') THEN
1852 RAISE violated_ref_integrity;
1853 END IF;
1854 END IF;
1855 END IF;
1856
1857 /* Bug 4862551. Commented out. No need to have these values:
1858 rate_delay_code, rate_delay_frequency, rate_change_start_date,
1859 rate_change_frequency_code, rate_change_value */
1860 /*
1861 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
1862 p_krpv_rec.Rate_Delay_Code IS NULL)
1863 THEN
1864 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1865 'Rate Delay Code');
1866 l_return_status := OKC_API.G_RET_STS_ERROR;
1867 IF (p_stack_messages = 'N') THEN
1868 RAISE violated_ref_integrity;
1869 END IF;
1870 END IF;
1871
1872 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
1873 p_krpv_rec.Rate_Delay_Frequency IS NULL)
1874 THEN
1875 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1876 'Rate Delay Frequency');
1877 l_return_status := OKC_API.G_RET_STS_ERROR;
1878 IF (p_stack_messages = 'N') THEN
1879 RAISE violated_ref_integrity;
1880 END IF;
1881 END IF;
1882
1883 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
1884 p_krpv_rec.Rate_Change_Start_Date IS NULL)
1885 THEN
1886 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1887 'Rate Change Start Date');
1888 l_return_status := OKC_API.G_RET_STS_ERROR;
1889 IF (p_stack_messages = 'N') THEN
1890 RAISE violated_ref_integrity;
1891 END IF;
1892 END IF;
1893 */
1894
1895 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
1896 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
1897 THEN
1898 -- Bug 4862551
1899 /*OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1900 'Rate Change Frequency Code');
1901 l_return_status := OKC_API.G_RET_STS_ERROR;
1902 IF (p_stack_messages = 'N') THEN
1903 RAISE violated_ref_integrity;
1904 END IF;*/
1905 NULL;
1906 ELSIF (p_krpv_rec.Rate_Change_Frequency_Code <> OKC_API.G_MISS_CHAR AND
1907 p_krpv_rec.Rate_Change_Frequency_Code IS NOT NULL) THEN
1908 IF (p_krpv_rec.Rate_Change_Frequency_Code <> 'BILLING_DATE') THEN
1909 -- AKP: Todo: Set Proper Message
1910 --(Rate Change Frequency Code is 'BILLING_DATE' allowed only)
1911 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1912 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1913 ,p_token1 => 'VALUE'
1914 ,p_token1_value => 'BILLING_DATE'
1915 ,p_token2 => 'CODE0'
1916 ,p_token2_value => 'RATE_CHANGE_FREQUENCY_CODE'
1917 ,p_token3 => 'CODE1'
1918 ,p_token3_value => 'REAMORT'
1919 ,p_token4 => 'CODE2'
1920 ,p_token4_value => 'STREAMS');
1921 l_return_status := OKC_API.G_RET_STS_ERROR;
1922 IF (p_stack_messages = 'N') THEN
1923 RAISE violated_ref_integrity;
1924 END IF;
1925 END IF;
1926 END IF;
1927
1928 -- Bug 4862551
1929 /*
1930 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
1931 p_krpv_rec.Rate_Change_Value IS NULL)
1932 THEN
1933 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1934 'Rate Change Value');
1935 l_return_status := OKC_API.G_RET_STS_ERROR;
1936 IF (p_stack_messages = 'N') THEN
1937 RAISE violated_ref_integrity;
1938 END IF;
1939 END IF;
1940 */
1941
1942 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1943 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
1944 p_krpv_rec.Conversion_Option_Code IS NULL)
1945 THEN
1946 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1947 'Conversion Option Code');
1948 l_return_status := OKC_API.G_RET_STS_ERROR;
1949 IF (p_stack_messages = 'N') THEN
1950 RAISE violated_ref_integrity;
1951 END IF;
1952 END IF;
1953 END IF;*/
1954
1955 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1956 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
1957 p_krpv_rec.Next_Conversion_Date IS NULL)
1958 THEN
1959 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1960 'Next Conversion Date');
1961 l_return_status := OKC_API.G_RET_STS_ERROR;
1962 IF (p_stack_messages = 'N') THEN
1963 RAISE violated_ref_integrity;
1964 END IF;
1965 END IF;
1966 END IF;*/
1967
1968 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1969 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
1970 p_krpv_rec.Conversion_Type_Code IS NULL)
1971 THEN
1972 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1973 'Conversion Type Code');
1974 l_return_status := OKC_API.G_RET_STS_ERROR;
1975 IF (p_stack_messages = 'N') THEN
1976 RAISE violated_ref_integrity;
1977 END IF;
1978 END IF;
1979 END IF;*/
1980
1981
1982 ELSIF (p_int_calc_basis = 'FLOAT_FACTORS' AND p_rev_rec_method ='STREAMS') THEN
1983 -- Bug 4907390
1984 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
1985 p_krpv_rec.Base_Rate IS NULL)
1986 THEN
1987 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1988 'Base Rate');
1989 l_return_status := OKC_API.G_RET_STS_ERROR;
1990 IF (p_stack_messages = 'N') THEN
1991 RAISE violated_ref_integrity;
1992 END IF;
1993 END IF; */
1994
1995 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
1996 p_krpv_rec.Interest_Start_Date IS NULL)
1997 THEN
1998 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1999 'Interest Start Date');
2000 l_return_status := OKC_API.G_RET_STS_ERROR;
2001 IF (p_stack_messages = 'N') THEN
2002 RAISE violated_ref_integrity;
2003 END IF;
2004 END IF;
2005
2006 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2007 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2008 p_krpv_rec.Conversion_Option_Code IS NULL)
2009 THEN
2010 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2011 'Conversion Option Code');
2012 l_return_status := OKC_API.G_RET_STS_ERROR;
2013 IF (p_stack_messages = 'N') THEN
2014 RAISE violated_ref_integrity;
2015 END IF;
2016 END IF;
2017 END IF;*/
2018
2019 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2020 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2021 p_krpv_rec.Next_Conversion_Date IS NULL)
2022 THEN
2023 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2024 'Next Conversion Date');
2025 l_return_status := OKC_API.G_RET_STS_ERROR;
2026 IF (p_stack_messages = 'N') THEN
2027 RAISE violated_ref_integrity;
2028 END IF;
2029 END IF;
2030 END IF;*/
2031
2032 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2033 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2034 p_krpv_rec.Conversion_Type_Code IS NULL)
2035 THEN
2036 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2037 'Conversion Type Code');
2038 l_return_status := OKC_API.G_RET_STS_ERROR;
2039 IF (p_stack_messages = 'N') THEN
2040 RAISE violated_ref_integrity;
2041 END IF;
2042 END IF;
2043 END IF;*/
2044
2045 -- Bug 4753087
2046 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2047 p_krpv_rec.Principal_Basis_Code IS NULL)
2048 THEN
2049 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2050 'Principal Basis Code');
2051 l_return_status := OKC_API.G_RET_STS_ERROR;
2052 IF (p_stack_messages = 'N') THEN
2053 RAISE violated_ref_integrity;
2054 END IF;
2055 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2056 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2057 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
2058 -- AKP: Todo: Set Proper Message
2059 --(Principal Basis Code is 'SCHEDULED' allowed only)
2060 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2061 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2062 ,p_token1 => 'VALUE'
2063 ,p_token1_value => 'SCHEDULED'
2064 ,p_token2 => 'CODE0'
2065 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2066 ,p_token3 => 'CODE1'
2067 ,p_token3_value => 'FLOAT_FACTORS'
2068 ,p_token4 => 'CODE2'
2069 ,p_token4_value => 'STREAMS');
2070 l_return_status := OKC_API.G_RET_STS_ERROR;
2071 IF (p_stack_messages = 'N') THEN
2072 RAISE violated_ref_integrity;
2073 END IF;
2074 END IF;
2075 END IF;
2076
2077 -- Bug 4862416: For FLOAT_FACTOR, formula is required
2078 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2079 p_krpv_rec.Calculation_Formula_Id IS NULL)
2080 THEN
2081 l_msg2_set := TRUE;
2082 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2083 'Formula Name');
2084 l_return_status := OKC_API.G_RET_STS_ERROR;
2085 IF (p_stack_messages = 'N') THEN
2086 RAISE violated_ref_integrity;
2087 END IF;
2088 END IF;
2089
2090 END IF; -- For FIXED and STREAMS
2091
2092 END IF; -- For LEASEDF, LEASEOP and LEASEST
2093
2094 IF (p_deal_type IN ('LOAN')) THEN
2095 IF (p_int_calc_basis = 'FIXED' AND p_rev_rec_method = 'STREAMS') THEN
2096 /* AKP: ToDo: Check Base_Rate for Principal payment type only and not
2097 for Rent */
2098 IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2099 p_krpv_rec.Base_Rate IS NULL)
2100 THEN
2101 OKL_K_RATE_PARAMS_PVT.check_principal_payment(
2102 p_api_version => 1,
2103 p_init_msg_list => OKL_API.G_FALSE,
2104 x_return_status => lx_return_status, --Bug# 13002041
2105 x_msg_count => l_msg_count,
2106 x_msg_data => l_msg_data,
2107 p_chr_id => p_krpv_rec.khr_id,
2108 x_principal_payment_defined => l_principal_payment_defined);
2109 --Bug# 13002041
2110 IF (lx_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2111 l_return_status := lx_return_status;
2112 RAISE violated_ref_integrity;
2113 END IF;
2114
2115 IF (l_principal_payment_defined) THEN
2116 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2117 'Base Rate');
2118 l_return_status := OKC_API.G_RET_STS_ERROR;
2119 IF (p_stack_messages = 'N') THEN
2120 RAISE violated_ref_integrity;
2121 END IF;
2122 END IF;
2123 END IF;
2124
2125 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2126 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2127 p_krpv_rec.Conversion_Option_Code IS NULL)
2128 THEN
2129 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2130 'Conversion Option Code');
2131 l_return_status := OKC_API.G_RET_STS_ERROR;
2132 IF (p_stack_messages = 'N') THEN
2133 RAISE violated_ref_integrity;
2134 END IF;
2135 END IF;
2136 END IF;*/
2137
2138 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2139 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2140 p_krpv_rec.Next_Conversion_Date IS NULL)
2141 THEN
2142 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2143 'Next Conversion Date');
2144 l_return_status := OKC_API.G_RET_STS_ERROR;
2145 IF (p_stack_messages = 'N') THEN
2146 RAISE violated_ref_integrity;
2147 END IF;
2148 END IF;
2149 END IF;*/
2150
2151 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2152 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2153 p_krpv_rec.Conversion_Type_Code IS NULL)
2154 THEN
2155 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2156 'Conversion Type Code');
2157 l_return_status := OKC_API.G_RET_STS_ERROR;
2158 IF (p_stack_messages = 'N') THEN
2159 RAISE violated_ref_integrity;
2160 END IF;
2161 END IF;
2162 END IF;*/
2163
2164
2165 /* AKP Todo: To check these lookup values correctness */
2166 ELSIF (p_int_calc_basis IN ('FLOAT')
2167 AND p_rev_rec_method = 'ESTIMATED_AND_BILLED') THEN
2168 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2169 p_krpv_rec.Interest_Index_Id IS NULL)
2170 THEN
2171 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2172 'Interest Index Id');
2173 l_return_status := OKC_API.G_RET_STS_ERROR;
2174 IF (p_stack_messages = 'N') THEN
2175 RAISE violated_ref_integrity;
2176 END IF;
2177 END IF;
2178
2179 -- Bug 4907390
2180 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2181 p_krpv_rec.Base_Rate IS NULL)
2182 THEN
2183 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2184 'Base Rate');
2185 l_return_status := OKC_API.G_RET_STS_ERROR;
2186 IF (p_stack_messages = 'N') THEN
2187 RAISE violated_ref_integrity;
2188 END IF;
2189 END IF;*/
2190
2191 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2192 p_krpv_rec.Interest_Start_Date IS NULL)
2193 THEN
2194 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2195 'Interest Start Date');
2196 l_return_status := OKC_API.G_RET_STS_ERROR;
2197 IF (p_stack_messages = 'N') THEN
2198 RAISE violated_ref_integrity;
2199 END IF;
2200 END IF;
2201
2202 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2203 p_krpv_rec.Adder_Rate IS NULL)
2204 THEN
2205 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2206 'Adder Rate');
2207 l_return_status := OKC_API.G_RET_STS_ERROR;
2208 IF (p_stack_messages = 'N') THEN
2209 RAISE violated_ref_integrity;
2210 END IF;
2211 END IF;
2212
2213 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2214 p_krpv_rec.Maximum_Rate IS NULL)
2215 THEN
2216 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2217 'Maximum Rate');
2218 l_return_status := OKC_API.G_RET_STS_ERROR;
2219 IF (p_stack_messages = 'N') THEN
2220 RAISE violated_ref_integrity;
2221 END IF;
2222 END IF;
2223
2224 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2225 p_krpv_rec.Minimum_Rate IS NULL)
2226 THEN
2227 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2228 'Minimum Rate');
2229 l_return_status := OKC_API.G_RET_STS_ERROR;
2230 IF (p_stack_messages = 'N') THEN
2231 RAISE violated_ref_integrity;
2232 END IF;
2233 END IF;
2234
2235 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2236 p_krpv_rec.Principal_Basis_Code IS NULL)
2237 THEN
2238 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2239 'Principal Basis Code');
2240 l_return_status := OKC_API.G_RET_STS_ERROR;
2241 IF (p_stack_messages = 'N') THEN
2242 RAISE violated_ref_integrity;
2243 END IF;
2244 END IF;
2245
2246 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2247 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2248 THEN
2249 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2250 'Days In A Month Code');
2251 l_return_status := OKC_API.G_RET_STS_ERROR;
2252 IF (p_stack_messages = 'N') THEN
2253 RAISE violated_ref_integrity;
2254 END IF;
2255 END IF;
2256
2257 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2258 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2259 THEN
2260 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2261 'Days In A Year Code');
2262 l_return_status := OKC_API.G_RET_STS_ERROR;
2263 IF (p_stack_messages = 'N') THEN
2264 RAISE violated_ref_integrity;
2265 END IF;
2266 END IF;
2267
2268 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2269 p_krpv_rec.Interest_Basis_Code IS NULL)
2270 THEN
2271 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2272 'Interest Basis Code');
2273 l_return_status := OKC_API.G_RET_STS_ERROR;
2274 IF (p_stack_messages = 'N') THEN
2275 RAISE violated_ref_integrity;
2276 END IF;
2277 END IF;
2278
2279 -- Bug 4862551
2280 /*
2281 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2282 p_krpv_rec.Rate_Delay_Code IS NULL)
2283 THEN
2284 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2285 'Rate Delay Code');
2286 l_return_status := OKC_API.G_RET_STS_ERROR;
2287 IF (p_stack_messages = 'N') THEN
2288 RAISE violated_ref_integrity;
2289 END IF;
2290 END IF;
2291
2292 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2293 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2294 THEN
2295 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2296 'Rate Delay Frequency');
2297 l_return_status := OKC_API.G_RET_STS_ERROR;
2298 IF (p_stack_messages = 'N') THEN
2299 RAISE violated_ref_integrity;
2300 END IF;
2301 END IF;
2302 */
2303
2304 -- Bug 4862416
2305 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
2306 p_krpv_rec.Compounding_Frequency_Code IS NULL)
2307 THEN
2308 l_msg1_set := TRUE;
2309 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2310 'Compounding Frequency CODE');
2311 l_return_status := OKC_API.G_RET_STS_ERROR;
2312 IF (p_stack_messages = 'N') THEN
2313 RAISE violated_ref_integrity;
2314 END IF;
2315 END IF;
2316
2317 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2318 p_krpv_rec.Calculation_Formula_Id IS NULL)
2319 THEN
2320 l_msg2_set := TRUE;
2321 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2322 'Formula Name');
2323 l_return_status := OKC_API.G_RET_STS_ERROR;
2324 IF (p_stack_messages = 'N') THEN
2325 RAISE violated_ref_integrity;
2326 END IF;
2327 END IF; */
2328
2329 -- Bug 4862551
2330 /*
2331 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2332 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2333 THEN
2334 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2335 'Rate Change Start Date');
2336 l_return_status := OKC_API.G_RET_STS_ERROR;
2337 IF (p_stack_messages = 'N') THEN
2338 RAISE violated_ref_integrity;
2339 END IF;
2340 END IF;
2341
2342 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2343 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2344 THEN
2345 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2346 'Rate Change Frequency Code');
2347 l_return_status := OKC_API.G_RET_STS_ERROR;
2348 IF (p_stack_messages = 'N') THEN
2349 RAISE violated_ref_integrity;
2350 END IF;
2351 END IF;
2352
2353 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2354 p_krpv_rec.Rate_Change_Value IS NULL)
2355 THEN
2356 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2357 'Rate Change Value');
2358 l_return_status := OKC_API.G_RET_STS_ERROR;
2359 IF (p_stack_messages = 'N') THEN
2360 RAISE violated_ref_integrity;
2361 END IF;
2362 END IF;
2363 */
2364
2365 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2366 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2367 p_krpv_rec.Conversion_Option_Code IS NULL)
2368 THEN
2369 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2370 'Conversion Option Code');
2371 l_return_status := OKC_API.G_RET_STS_ERROR;
2372 IF (p_stack_messages = 'N') THEN
2373 RAISE violated_ref_integrity;
2374 END IF;
2375 END IF;
2376 END IF;*/
2377
2378 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2379 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2380 p_krpv_rec.Next_Conversion_Date IS NULL)
2381 THEN
2382 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2383 'Next Conversion Date');
2384 l_return_status := OKC_API.G_RET_STS_ERROR;
2385 IF (p_stack_messages = 'N') THEN
2386 RAISE violated_ref_integrity;
2387 END IF;
2388 END IF;
2389 END IF;*/
2390
2391 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2392 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2393 p_krpv_rec.Conversion_Type_Code IS NULL)
2394 THEN
2395 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2396 'Conversion Type Code');
2397 l_return_status := OKC_API.G_RET_STS_ERROR;
2398 IF (p_stack_messages = 'N') THEN
2399 RAISE violated_ref_integrity;
2400 END IF;
2401 END IF;
2402 END IF;*/
2403
2404 ELSIF (p_int_calc_basis IN ('FLOAT', 'FIXED')
2405 AND p_rev_rec_method = 'ACTUAL') THEN
2406 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2407 p_krpv_rec.Interest_Index_Id IS NULL)
2408 THEN
2409 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2410 'Interest Index Id');
2411 l_return_status := OKC_API.G_RET_STS_ERROR;
2412 IF (p_stack_messages = 'N') THEN
2413 RAISE violated_ref_integrity;
2414 END IF;
2415 END IF;
2416
2417 -- Bug 4907390
2418 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2419 p_krpv_rec.Base_Rate IS NULL)
2420 THEN
2421 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2422 'Base Rate');
2423 l_return_status := OKC_API.G_RET_STS_ERROR;
2424 IF (p_stack_messages = 'N') THEN
2425 RAISE violated_ref_integrity;
2426 END IF;
2427 END IF;*/
2428
2429 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2430 p_krpv_rec.Interest_Start_Date IS NULL)
2431 THEN
2432 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2433 'Interest Start Date');
2434 l_return_status := OKC_API.G_RET_STS_ERROR;
2435 IF (p_stack_messages = 'N') THEN
2436 RAISE violated_ref_integrity;
2437 END IF;
2438 END IF;
2439
2440 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2441 p_krpv_rec.Adder_Rate IS NULL)
2442 THEN
2443 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2444 'Adder Rate');
2445 l_return_status := OKC_API.G_RET_STS_ERROR;
2446 IF (p_stack_messages = 'N') THEN
2447 RAISE violated_ref_integrity;
2448 END IF;
2449 END IF;
2450
2451 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2452 p_krpv_rec.Maximum_Rate IS NULL)
2453 THEN
2454 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2455 'Maximum Rate');
2456 l_return_status := OKC_API.G_RET_STS_ERROR;
2457 IF (p_stack_messages = 'N') THEN
2458 RAISE violated_ref_integrity;
2459 END IF;
2460 END IF;
2461
2462 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2463 p_krpv_rec.Minimum_Rate IS NULL)
2464 THEN
2465 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2466 'Minimum Rate');
2467 l_return_status := OKC_API.G_RET_STS_ERROR;
2468 IF (p_stack_messages = 'N') THEN
2469 RAISE violated_ref_integrity;
2470 END IF;
2471 END IF;
2472
2473 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2474 p_krpv_rec.Principal_Basis_Code IS NULL)
2475 THEN
2476 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2477 'Principal Basis Code');
2478 l_return_status := OKC_API.G_RET_STS_ERROR;
2479 IF (p_stack_messages = 'N') THEN
2480 RAISE violated_ref_integrity;
2481 END IF;
2482 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2483 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2484 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
2485 -- AKP: Todo: Set Proper Message
2486 --(Principal Basis Code is 'ACTUAL' allowed only)
2487 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2488 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2489 ,p_token1 => 'VALUE'
2490 ,p_token1_value => 'ACTUAL'
2491 ,p_token2 => 'CODE0'
2492 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2493 ,p_token3 => 'CODE1'
2494 ,p_token3_value => 'FLOAT'
2495 ,p_token4 => 'CODE2'
2496 ,p_token4_value => 'ACTUAL');
2497 l_return_status := OKC_API.G_RET_STS_ERROR;
2498 IF (p_stack_messages = 'N') THEN
2499 RAISE violated_ref_integrity;
2500 END IF;
2501 END IF;
2502 END IF;
2503
2504 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2505 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2506 THEN
2507 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2508 'Days In A Month Code');
2509 l_return_status := OKC_API.G_RET_STS_ERROR;
2510 IF (p_stack_messages = 'N') THEN
2511 RAISE violated_ref_integrity;
2512 END IF;
2513 END IF;
2514
2515 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2516 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2517 THEN
2518 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2519 'Days In A Year Code');
2520 l_return_status := OKC_API.G_RET_STS_ERROR;
2521 IF (p_stack_messages = 'N') THEN
2522 RAISE violated_ref_integrity;
2523 END IF;
2524 END IF;
2525
2526 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2527 p_krpv_rec.Interest_Basis_Code IS NULL)
2528 THEN
2529 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2530 'Interest Basis Code');
2531 l_return_status := OKC_API.G_RET_STS_ERROR;
2532 IF (p_stack_messages = 'N') THEN
2533 RAISE violated_ref_integrity;
2534 END IF;
2535 END IF;
2536
2537 -- Bug 4862551
2538 /*
2539 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2540 p_krpv_rec.Rate_Delay_Code IS NULL)
2541 THEN
2542 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2543 'Rate Delay Code');
2544 l_return_status := OKC_API.G_RET_STS_ERROR;
2545 IF (p_stack_messages = 'N') THEN
2546 RAISE violated_ref_integrity;
2547 END IF;
2548 END IF;
2549
2550 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2551 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2552 THEN
2553 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2554 'Rate Delay Frequency');
2555 l_return_status := OKC_API.G_RET_STS_ERROR;
2556 IF (p_stack_messages = 'N') THEN
2557 RAISE violated_ref_integrity;
2558 END IF;
2559 END IF;
2560 */
2561
2562 -- Bug 4862416
2563 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
2564 p_krpv_rec.Compounding_Frequency_Code IS NULL)
2565 THEN
2566 l_msg1_set := TRUE;
2567 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2568 'Compounding Frequency CODE');
2569 l_return_status := OKC_API.G_RET_STS_ERROR;
2570 IF (p_stack_messages = 'N') THEN
2571 RAISE violated_ref_integrity;
2572 END IF;
2573 END IF;
2574
2575 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2576 p_krpv_rec.Calculation_Formula_Id IS NULL)
2577 THEN
2578 l_msg2_set := TRUE;
2579 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2580 'Formula Name');
2581 l_return_status := OKC_API.G_RET_STS_ERROR;
2582 IF (p_stack_messages = 'N') THEN
2583 RAISE violated_ref_integrity;
2584 END IF;
2585 END IF;*/
2586
2587 -- Bug 4862551
2588 /*
2589 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2590 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2591 THEN
2592 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2593 'Rate Change Start Date');
2594 l_return_status := OKC_API.G_RET_STS_ERROR;
2595 IF (p_stack_messages = 'N') THEN
2596 RAISE violated_ref_integrity;
2597 END IF;
2598 END IF;
2599
2600 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2601 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2602 THEN
2603 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2604 'Rate Change Frequency Code');
2605 l_return_status := OKC_API.G_RET_STS_ERROR;
2606 IF (p_stack_messages = 'N') THEN
2607 RAISE violated_ref_integrity;
2608 END IF;
2609 END IF;
2610
2611 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2612 p_krpv_rec.Rate_Change_Value IS NULL)
2613 THEN
2614 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2615 'Rate Change Value');
2616 l_return_status := OKC_API.G_RET_STS_ERROR;
2617 IF (p_stack_messages = 'N') THEN
2618 RAISE violated_ref_integrity;
2619 END IF;
2620 END IF;
2621 */
2622
2623 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2624 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2625 p_krpv_rec.Conversion_Option_Code IS NULL)
2626 THEN
2627 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2628 'Conversion Option Code');
2629 l_return_status := OKC_API.G_RET_STS_ERROR;
2630 IF (p_stack_messages = 'N') THEN
2631 RAISE violated_ref_integrity;
2632 END IF;
2633 END IF;
2634 END IF;*/
2635
2636 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2637 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2638 p_krpv_rec.Next_Conversion_Date IS NULL)
2639 THEN
2640 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2641 'Next Conversion Date');
2642 l_return_status := OKC_API.G_RET_STS_ERROR;
2643 IF (p_stack_messages = 'N') THEN
2644 RAISE violated_ref_integrity;
2645 END IF;
2646 END IF;
2647 END IF;*/
2648
2649 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2650 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2651 p_krpv_rec.Conversion_Type_Code IS NULL)
2652 THEN
2653 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2654 'Conversion Type Code');
2655 l_return_status := OKC_API.G_RET_STS_ERROR;
2656 IF (p_stack_messages = 'N') THEN
2657 RAISE violated_ref_integrity;
2658 END IF;
2659 END IF;
2660 END IF;*/
2661
2662 ELSIF (p_int_calc_basis = 'REAMORT'
2663 AND p_rev_rec_method = 'STREAMS') THEN
2664 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2665 p_krpv_rec.Interest_Index_Id IS NULL)
2666 THEN
2667 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2668 'Interest Index Id');
2669 l_return_status := OKC_API.G_RET_STS_ERROR;
2670 IF (p_stack_messages = 'N') THEN
2671 RAISE violated_ref_integrity;
2672 END IF;
2673 END IF;
2674
2675 -- Bug 4907390
2676 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2677 p_krpv_rec.Base_Rate IS NULL)
2678 THEN
2679 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2680 'Base Rate');
2681 l_return_status := OKC_API.G_RET_STS_ERROR;
2682 IF (p_stack_messages = 'N') THEN
2683 RAISE violated_ref_integrity;
2684 END IF;
2685 END IF;*/
2686
2687 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2688 p_krpv_rec.Interest_Start_Date IS NULL)
2689 THEN
2690 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2691 'Interest Start Date');
2692 l_return_status := OKC_API.G_RET_STS_ERROR;
2693 IF (p_stack_messages = 'N') THEN
2694 RAISE violated_ref_integrity;
2695 END IF;
2696 END IF;
2697
2698 -- Start of Code - Bug 13951493
2699 FOR r1 in C1(p_krpv_rec.khr_id)
2700 LOOP
2701
2702 IF ( TRUNC(p_krpv_rec.Interest_Start_Date) <> TRUNC(r1.start_date) )
2703 THEN
2704 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2705 ,p_msg_name => 'OKL_LA_INT_START_DT_REAMORT');
2706 l_return_status := OKC_API.G_RET_STS_ERROR;
2707 IF (p_stack_messages = 'N') THEN
2708 RAISE violated_ref_integrity;
2709 END IF;
2710 END IF;
2711
2712 END LOOP;
2713 -- End of Code - Bug 13951493
2714
2715
2716 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2717 p_krpv_rec.Adder_Rate IS NULL)
2718 THEN
2719 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2720 'Adder Rate');
2721 l_return_status := OKC_API.G_RET_STS_ERROR;
2722 IF (p_stack_messages = 'N') THEN
2723 RAISE violated_ref_integrity;
2724 END IF;
2725 END IF;
2726
2727 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2728 p_krpv_rec.Maximum_Rate IS NULL)
2729 THEN
2730 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2731 'Maximum Rate');
2732 l_return_status := OKC_API.G_RET_STS_ERROR;
2733 IF (p_stack_messages = 'N') THEN
2734 RAISE violated_ref_integrity;
2735 END IF;
2736 END IF;
2737
2738 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2739 p_krpv_rec.Minimum_Rate IS NULL)
2740 THEN
2741 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2742 'Minimum Rate');
2743 l_return_status := OKC_API.G_RET_STS_ERROR;
2744 IF (p_stack_messages = 'N') THEN
2745 RAISE violated_ref_integrity;
2746 END IF;
2747 END IF;
2748
2749 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2750 p_krpv_rec.Principal_Basis_Code IS NULL)
2751 THEN
2752 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2753 'Principal Basis Code');
2754 l_return_status := OKC_API.G_RET_STS_ERROR;
2755 IF (p_stack_messages = 'N') THEN
2756 RAISE violated_ref_integrity;
2757 END IF;
2758 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2759 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2760 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
2761 -- AKP: Todo: Set Proper Message
2762 --(Principal Basis Code is 'SCHEDULED' allowed only)
2763 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2764 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2765 ,p_token1 => 'VALUE'
2766 ,p_token1_value => 'SCHEDULED'
2767 ,p_token2 => 'CODE0'
2768 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2769 ,p_token3 => 'CODE1'
2770 ,p_token3_value => 'REAMORT'
2771 ,p_token4 => 'CODE2'
2772 ,p_token4_value => 'STREAMS');
2773 l_return_status := OKC_API.G_RET_STS_ERROR;
2774 IF (p_stack_messages = 'N') THEN
2775 RAISE violated_ref_integrity;
2776 END IF;
2777 END IF;
2778 END IF;
2779
2780 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2781 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2782 THEN
2783 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2784 'Days In A Month Code');
2785 l_return_status := OKC_API.G_RET_STS_ERROR;
2786 IF (p_stack_messages = 'N') THEN
2787 RAISE violated_ref_integrity;
2788 END IF;
2789 ELSIF (p_krpv_rec.Days_In_A_Month_Code <> OKC_API.G_MISS_CHAR AND
2790 p_krpv_rec.Days_In_A_Month_Code IS NOT NULL) THEN
2791 IF (p_krpv_rec.Days_In_A_Month_Code <> '30') THEN
2792 -- AKP: Todo: Set Proper Message
2793 --(Days In A Month Code is '30' allowed only)
2794 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2795 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2796 ,p_token1 => 'VALUE'
2797 ,p_token1_value => '30'
2798 ,p_token2 => 'CODE0'
2799 ,p_token2_value => 'DAYS_IN_A_MONTH_CODE'
2800 ,p_token3 => 'CODE1'
2801 ,p_token3_value => 'REAMORT'
2802 ,p_token4 => 'CODE2'
2803 ,p_token4_value => 'STREAMS');
2804 l_return_status := OKC_API.G_RET_STS_ERROR;
2805 IF (p_stack_messages = 'N') THEN
2806 RAISE violated_ref_integrity;
2807 END IF;
2808 END IF;
2809 END IF;
2810
2811 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2812 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2813 THEN
2814 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2815 'Days In A Year Code');
2816 l_return_status := OKC_API.G_RET_STS_ERROR;
2817 IF (p_stack_messages = 'N') THEN
2818 RAISE violated_ref_integrity;
2819 END IF;
2820 ELSIF (p_krpv_rec.Days_In_A_Year_Code <> OKC_API.G_MISS_CHAR AND
2821 p_krpv_rec.Days_In_A_Year_Code IS NOT NULL) THEN
2822 IF (p_krpv_rec.Days_In_A_Year_Code <> '360') THEN
2823 -- AKP: Todo: Set Proper Message
2824 --(Days In A Year Code is '360' allowed only)
2825 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2826 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2827 ,p_token1 => 'VALUE'
2828 ,p_token1_value => '360'
2829 ,p_token2 => 'CODE0'
2830 ,p_token2_value => 'DAYS_IN_A_YEAR_CODE'
2831 ,p_token3 => 'CODE1'
2832 ,p_token3_value => 'REAMORT'
2833 ,p_token4 => 'CODE2'
2834 ,p_token4_value => 'STREAMS');
2835 l_return_status := OKC_API.G_RET_STS_ERROR;
2836 IF (p_stack_messages = 'N') THEN
2837 RAISE violated_ref_integrity;
2838 END IF;
2839 END IF;
2840 END IF;
2841
2842 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2843 p_krpv_rec.Interest_Basis_Code IS NULL)
2844 THEN
2845 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2846 'Interest Basis Code');
2847 l_return_status := OKC_API.G_RET_STS_ERROR;
2848 IF (p_stack_messages = 'N') THEN
2849 RAISE violated_ref_integrity;
2850 END IF;
2851 ELSIF (p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR AND
2852 p_krpv_rec.Interest_Basis_Code IS NOT NULL) THEN
2853 IF (p_krpv_rec.Interest_Basis_Code <> 'SIMPLE') THEN
2854 -- AKP: Todo: Set Proper Message
2855 --(Interest Basis Code is 'SIMPLE' allowed only)
2856 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2857 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2858 ,p_token1 => 'VALUE'
2859 ,p_token1_value => 'SIMPLE'
2860 ,p_token2 => 'CODE0'
2861 ,p_token2_value => 'INTEREST_BASIS_CODE'
2862 ,p_token3 => 'CODE1'
2863 ,p_token3_value => 'REAMORT'
2864 ,p_token4 => 'CODE2'
2865 ,p_token4_value => 'STREAMS');
2866 l_return_status := OKC_API.G_RET_STS_ERROR;
2867 IF (p_stack_messages = 'N') THEN
2868 RAISE violated_ref_integrity;
2869 END IF;
2870 END IF;
2871 END IF;
2872
2873 -- Bug 4862551
2874 /*
2875 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2876 p_krpv_rec.Rate_Delay_Code IS NULL)
2877 THEN
2878 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2879 'Rate Delay Code');
2880 l_return_status := OKC_API.G_RET_STS_ERROR;
2881 IF (p_stack_messages = 'N') THEN
2882 RAISE violated_ref_integrity;
2883 END IF;
2884 END IF;
2885
2886 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2887 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2888 THEN
2889 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2890 'Rate Delay Frequency');
2891 l_return_status := OKC_API.G_RET_STS_ERROR;
2892 IF (p_stack_messages = 'N') THEN
2893 RAISE violated_ref_integrity;
2894 END IF;
2895 END IF;
2896
2897 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2898 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2899 THEN
2900 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2901 'Rate Change Start Date');
2902 l_return_status := OKC_API.G_RET_STS_ERROR;
2903 IF (p_stack_messages = 'N') THEN
2904 RAISE violated_ref_integrity;
2905 END IF;
2906 END IF;
2907 */
2908
2909 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2910 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2911 THEN
2912 -- Bug 4862551
2913 NULL;
2914 /*OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2915 'Rate Change Frequency Code');
2916 l_return_status := OKC_API.G_RET_STS_ERROR;
2917 IF (p_stack_messages = 'N') THEN
2918 RAISE violated_ref_integrity;
2919 END IF;*/
2920 ELSIF (p_krpv_rec.Rate_Change_Frequency_Code <> OKC_API.G_MISS_CHAR AND
2921 p_krpv_rec.Rate_Change_Frequency_Code IS NOT NULL) THEN
2922 IF (p_krpv_rec.Rate_Change_Frequency_Code <> 'BILLING_DATE') THEN
2923 -- AKP: Todo: Set Proper Message
2924 --(Rate Change Frequency Code is 'BILLING_DATE' allowed only)
2925 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2926 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2927 ,p_token1 => 'VALUE'
2928 ,p_token1_value => 'BILLING_DATE'
2929 ,p_token2 => 'CODE0'
2930 ,p_token2_value => 'RATE_CHANGE_FREQUENCY_CODE'
2931 ,p_token3 => 'CODE1'
2932 ,p_token3_value => 'REAMORT'
2933 ,p_token4 => 'CODE2'
2934 ,p_token4_value => 'STREAMS');
2935 l_return_status := OKC_API.G_RET_STS_ERROR;
2936 IF (p_stack_messages = 'N') THEN
2937 RAISE violated_ref_integrity;
2938 END IF;
2939 END IF;
2940 END IF;
2941
2942 -- Bug 4862551
2943 /*
2944 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2945 p_krpv_rec.Rate_Change_Value IS NULL)
2946 THEN
2947 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2948 'Rate Change Value');
2949 l_return_status := OKC_API.G_RET_STS_ERROR;
2950 IF (p_stack_messages = 'N') THEN
2951 RAISE violated_ref_integrity;
2952 END IF;
2953 END IF;
2954 */
2955
2956 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2957 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2958 p_krpv_rec.Conversion_Option_Code IS NULL)
2959 THEN
2960 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2961 'Conversion Option Code');
2962 l_return_status := OKC_API.G_RET_STS_ERROR;
2963 IF (p_stack_messages = 'N') THEN
2964 RAISE violated_ref_integrity;
2965 END IF;
2966 END IF;
2967 END IF;*/
2968
2969 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2970 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2971 p_krpv_rec.Next_Conversion_Date IS NULL)
2972 THEN
2973 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2974 'Next Conversion Date');
2975 l_return_status := OKC_API.G_RET_STS_ERROR;
2976 IF (p_stack_messages = 'N') THEN
2977 RAISE violated_ref_integrity;
2978 END IF;
2979 END IF;
2980 END IF;*/
2981
2982 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2983 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2984 p_krpv_rec.Conversion_Type_Code IS NULL)
2985 THEN
2986 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2987 'Conversion Type Code');
2988 l_return_status := OKC_API.G_RET_STS_ERROR;
2989 IF (p_stack_messages = 'N') THEN
2990 RAISE violated_ref_integrity;
2991 END IF;
2992 END IF;
2993 END IF;*/
2994
2995 ELSIF (p_int_calc_basis = 'REAMORT'
2996 AND p_rev_rec_method = 'ACTUAL') THEN
2997 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2998 p_krpv_rec.Interest_Index_Id IS NULL)
2999 THEN
3000 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3001 'Interest Index Id');
3002 l_return_status := OKC_API.G_RET_STS_ERROR;
3003 IF (p_stack_messages = 'N') THEN
3004 RAISE violated_ref_integrity;
3005 END IF;
3006 END IF;
3007
3008 -- Bug 4907390
3009 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
3010 p_krpv_rec.Base_Rate IS NULL)
3011 THEN
3012 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3013 'Base Rate');
3014 l_return_status := OKC_API.G_RET_STS_ERROR;
3015 IF (p_stack_messages = 'N') THEN
3016 RAISE violated_ref_integrity;
3017 END IF;
3018 END IF;*/
3019
3020 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
3021 p_krpv_rec.Interest_Start_Date IS NULL)
3022 THEN
3023 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3024 'Interest Start Date');
3025 l_return_status := OKC_API.G_RET_STS_ERROR;
3026 IF (p_stack_messages = 'N') THEN
3027 RAISE violated_ref_integrity;
3028 END IF;
3029 END IF;
3030
3031 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
3032 p_krpv_rec.Adder_Rate IS NULL)
3033 THEN
3034 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3035 'Adder Rate');
3036 l_return_status := OKC_API.G_RET_STS_ERROR;
3037 IF (p_stack_messages = 'N') THEN
3038 RAISE violated_ref_integrity;
3039 END IF;
3040 END IF;
3041
3042 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
3043 p_krpv_rec.Maximum_Rate IS NULL)
3044 THEN
3045 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3046 'Maximum Rate');
3047 l_return_status := OKC_API.G_RET_STS_ERROR;
3048 IF (p_stack_messages = 'N') THEN
3049 RAISE violated_ref_integrity;
3050 END IF;
3051 END IF;
3052
3053 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3054 p_krpv_rec.Minimum_Rate IS NULL)
3055 THEN
3056 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3057 'Minimum Rate');
3058 l_return_status := OKC_API.G_RET_STS_ERROR;
3059 IF (p_stack_messages = 'N') THEN
3060 RAISE violated_ref_integrity;
3061 END IF;
3062 END IF;
3063
3064 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3065 p_krpv_rec.Principal_Basis_Code IS NULL)
3066 THEN
3067 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3068 'Principal Basis Code');
3069 l_return_status := OKC_API.G_RET_STS_ERROR;
3070 IF (p_stack_messages = 'N') THEN
3071 RAISE violated_ref_integrity;
3072 END IF;
3073 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3074 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3075 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN -- 4896751
3076 --IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN -- 4753087
3077 -- AKP: Todo: Set Proper Message
3078 --(Principal Basis Code is 'ACTUAL' allowed only) -- 4753087
3079 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3080 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3081 ,p_token1 => 'VALUE'
3082 --,p_token1_value => 'ACTUAL' -- 4753087
3083 ,p_token1_value => 'SCHEDULED' -- 4896751
3084 ,p_token2 => 'CODE0'
3085 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3086 ,p_token3 => 'CODE1'
3087 ,p_token3_value => 'REAMORT'
3088 ,p_token4 => 'CODE2'
3089 ,p_token4_value => 'ACTUAL');
3090 l_return_status := OKC_API.G_RET_STS_ERROR;
3091 IF (p_stack_messages = 'N') THEN
3092 RAISE violated_ref_integrity;
3093 END IF;
3094 END IF;
3095 END IF;
3096
3097 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3098 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3099 THEN
3100 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3101 'Days In A Month Code');
3102 l_return_status := OKC_API.G_RET_STS_ERROR;
3103 IF (p_stack_messages = 'N') THEN
3104 RAISE violated_ref_integrity;
3105 END IF;
3106 END IF;
3107
3108 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3109 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3110 THEN
3111 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3112 'Days In A Year Code');
3113 l_return_status := OKC_API.G_RET_STS_ERROR;
3114 IF (p_stack_messages = 'N') THEN
3115 RAISE violated_ref_integrity;
3116 END IF;
3117 END IF;
3118
3119 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3120 p_krpv_rec.Interest_Basis_Code IS NULL)
3121 THEN
3122 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3123 'Interest Basis Code');
3124 l_return_status := OKC_API.G_RET_STS_ERROR;
3125 IF (p_stack_messages = 'N') THEN
3126 RAISE violated_ref_integrity;
3127 END IF;
3128 END IF;
3129
3130 -- Bug 4862551
3131 /*
3132 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3133 p_krpv_rec.Rate_Delay_Code IS NULL)
3134 THEN
3135 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3136 'Rate Delay Code');
3137 l_return_status := OKC_API.G_RET_STS_ERROR;
3138 IF (p_stack_messages = 'N') THEN
3139 RAISE violated_ref_integrity;
3140 END IF;
3141 END IF;
3142
3143 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3144 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3145 THEN
3146 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3147 'Rate Delay Frequency');
3148 l_return_status := OKC_API.G_RET_STS_ERROR;
3149 IF (p_stack_messages = 'N') THEN
3150 RAISE violated_ref_integrity;
3151 END IF;
3152 END IF;
3153 */
3154
3155 -- Bug 4862416
3156 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3157 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3158 THEN
3159 l_msg1_set := TRUE;
3160 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3161 'Compounding Frequency Code');
3162 l_return_status := OKC_API.G_RET_STS_ERROR;
3163 IF (p_stack_messages = 'N') THEN
3164 RAISE violated_ref_integrity;
3165 END IF;
3166 END IF;
3167
3168 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3169 p_krpv_rec.Calculation_Formula_Id IS NULL)
3170 THEN
3171 l_msg2_set := TRUE;
3172 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3173 'Formula Name');
3174 l_return_status := OKC_API.G_RET_STS_ERROR;
3175 IF (p_stack_messages = 'N') THEN
3176 RAISE violated_ref_integrity;
3177 END IF;
3178 END IF;*/
3179
3180 /*
3181 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
3182 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3183 THEN
3184 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3185 'Rate Change Start Date');
3186 l_return_status := OKC_API.G_RET_STS_ERROR;
3187 IF (p_stack_messages = 'N') THEN
3188 RAISE violated_ref_integrity;
3189 END IF;
3190 END IF;
3191
3192 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3193 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3194 THEN
3195 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3196 'Rate Change Frequency Code');
3197 l_return_status := OKC_API.G_RET_STS_ERROR;
3198 IF (p_stack_messages = 'N') THEN
3199 RAISE violated_ref_integrity;
3200 END IF;
3201 END IF;
3202
3203 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3204 p_krpv_rec.Rate_Change_Value IS NULL)
3205 THEN
3206 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3207 'Rate Change Value');
3208 l_return_status := OKC_API.G_RET_STS_ERROR;
3209 IF (p_stack_messages = 'N') THEN
3210 RAISE violated_ref_integrity;
3211 END IF;
3212 END IF;
3213 */
3214
3215 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3216 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3217 p_krpv_rec.Conversion_Option_Code IS NULL)
3218 THEN
3219 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3220 'Conversion Option Code');
3221 l_return_status := OKC_API.G_RET_STS_ERROR;
3222 IF (p_stack_messages = 'N') THEN
3223 RAISE violated_ref_integrity;
3224 END IF;
3225 END IF;
3226 END IF;*/
3227
3228 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3229 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3230 p_krpv_rec.Next_Conversion_Date IS NULL)
3231 THEN
3232 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3233 'Next Conversion Date');
3234 l_return_status := OKC_API.G_RET_STS_ERROR;
3235 IF (p_stack_messages = 'N') THEN
3236 RAISE violated_ref_integrity;
3237 END IF;
3238 END IF;
3239 END IF;*/
3240
3241 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3242 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3243 p_krpv_rec.Conversion_Type_Code IS NULL)
3244 THEN
3245 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3246 'Conversion Type Code');
3247 l_return_status := OKC_API.G_RET_STS_ERROR;
3248 IF (p_stack_messages = 'N') THEN
3249 RAISE violated_ref_integrity;
3250 END IF;
3251 END IF;
3252 END IF;*/
3253
3254 ELSIF (p_int_calc_basis = 'CATCHUP/CLEANUP'
3255 AND p_rev_rec_method = 'STREAMS') THEN
3256 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
3257 p_krpv_rec.Interest_Index_Id IS NULL)
3258 THEN
3259 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3260 'Interest Index Id');
3261 l_return_status := OKC_API.G_RET_STS_ERROR;
3262 IF (p_stack_messages = 'N') THEN
3263 RAISE violated_ref_integrity;
3264 END IF;
3265 END IF;
3266
3267 -- Bug 4907390
3268 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
3269 p_krpv_rec.Base_Rate IS NULL)
3270 THEN
3271 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3272 'Base Rate');
3273 l_return_status := OKC_API.G_RET_STS_ERROR;
3274 IF (p_stack_messages = 'N') THEN
3275 RAISE violated_ref_integrity;
3276 END IF;
3277 END IF;*/
3278
3279 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
3280 p_krpv_rec.Interest_Start_Date IS NULL)
3281 THEN
3282 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3283 'Interest Start Date');
3284 l_return_status := OKC_API.G_RET_STS_ERROR;
3285 IF (p_stack_messages = 'N') THEN
3286 RAISE violated_ref_integrity;
3287 END IF;
3288 END IF;
3289
3290 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
3291 p_krpv_rec.Adder_Rate IS NULL)
3292 THEN
3293 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3294 'Adder Rate');
3295 l_return_status := OKC_API.G_RET_STS_ERROR;
3296 IF (p_stack_messages = 'N') THEN
3297 RAISE violated_ref_integrity;
3298 END IF;
3299 END IF;
3300
3301 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
3302 p_krpv_rec.Maximum_Rate IS NULL)
3303 THEN
3304 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3305 'Maximum Rate');
3306 l_return_status := OKC_API.G_RET_STS_ERROR;
3307 IF (p_stack_messages = 'N') THEN
3308 RAISE violated_ref_integrity;
3309 END IF;
3310 END IF;
3311
3312 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3313 p_krpv_rec.Minimum_Rate IS NULL)
3314 THEN
3315 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3316 'Minimum Rate');
3317 l_return_status := OKC_API.G_RET_STS_ERROR;
3318 IF (p_stack_messages = 'N') THEN
3319 RAISE violated_ref_integrity;
3320 END IF;
3321 END IF;
3322
3323 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3324 p_krpv_rec.Principal_Basis_Code IS NULL)
3325 THEN
3326 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3327 'Principal Basis Code');
3328 l_return_status := OKC_API.G_RET_STS_ERROR;
3329 IF (p_stack_messages = 'N') THEN
3330 RAISE violated_ref_integrity;
3331 END IF;
3332 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3333 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3334 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
3335 -- AKP: Todo: Set Proper Message
3336 --(Principal Basis Code is 'ACTUAL' allowed only)
3337 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3338 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3339 ,p_token1 => 'VALUE'
3340 ,p_token1_value => 'ACTUAL'
3341 ,p_token2 => 'CODE0'
3342 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3343 ,p_token3 => 'CODE1'
3344 ,p_token3_value => 'CATCHUP/CLEANUP'
3345 ,p_token4 => 'CODE2'
3346 ,p_token4_value => 'STREAMS');
3347 l_return_status := OKC_API.G_RET_STS_ERROR;
3348 IF (p_stack_messages = 'N') THEN
3349 RAISE violated_ref_integrity;
3350 END IF;
3351 END IF;
3352 END IF;
3353
3354 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3355 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3356 THEN
3357 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3358 'Days In A Month Code');
3359 l_return_status := OKC_API.G_RET_STS_ERROR;
3360 IF (p_stack_messages = 'N') THEN
3361 RAISE violated_ref_integrity;
3362 END IF;
3363 END IF;
3364
3365 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3366 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3367 THEN
3368 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3369 'Days In A Year Code');
3370 l_return_status := OKC_API.G_RET_STS_ERROR;
3371 IF (p_stack_messages = 'N') THEN
3372 RAISE violated_ref_integrity;
3373 END IF;
3374 END IF;
3375
3376 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3377 p_krpv_rec.Interest_Basis_Code IS NULL)
3378 THEN
3379 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3380 'Interest Basis Code');
3381 l_return_status := OKC_API.G_RET_STS_ERROR;
3382 IF (p_stack_messages = 'N') THEN
3383 RAISE violated_ref_integrity;
3384 END IF;
3385 END IF;
3386
3387 -- Bug 4862551
3388 /*
3389 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3390 p_krpv_rec.Rate_Delay_Code IS NULL)
3391 THEN
3392 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3393 'Rate Delay Code');
3394 l_return_status := OKC_API.G_RET_STS_ERROR;
3395 IF (p_stack_messages = 'N') THEN
3396 RAISE violated_ref_integrity;
3397 END IF;
3398 END IF;
3399
3400 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3401 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3402 THEN
3403 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3404 'Rate Delay Frequency');
3405 l_return_status := OKC_API.G_RET_STS_ERROR;
3406 IF (p_stack_messages = 'N') THEN
3407 RAISE violated_ref_integrity;
3408 END IF;
3409 END IF;
3410 */
3411
3412 -- Bug 4862416
3413 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3414 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3415 THEN
3416 l_msg1_set := TRUE;
3417 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3418 'Compounding Frequency Code');
3419 l_return_status := OKC_API.G_RET_STS_ERROR;
3420 IF (p_stack_messages = 'N') THEN
3421 RAISE violated_ref_integrity;
3422 END IF;
3423 END IF;
3424
3425 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3426 p_krpv_rec.Calculation_Formula_Id IS NULL)
3427 THEN
3428 l_msg2_set := TRUE;
3429 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3430 'Formula Name');
3431 l_return_status := OKC_API.G_RET_STS_ERROR;
3432 IF (p_stack_messages = 'N') THEN
3433 RAISE violated_ref_integrity;
3434 END IF;
3435 END IF;*/
3436
3437 IF (p_krpv_rec.Catchup_Basis_Code = OKC_API.G_MISS_CHAR OR
3438 p_krpv_rec.Catchup_Basis_Code IS NULL)
3439 THEN
3440 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3441 'Catchup Basis Code');
3442 l_return_status := OKC_API.G_RET_STS_ERROR;
3443 IF (p_stack_messages = 'N') THEN
3444 RAISE violated_ref_integrity;
3445 END IF;
3446 ELSIF (p_krpv_rec.Catchup_Basis_Code <> OKC_API.G_MISS_CHAR AND
3447 p_krpv_rec.Catchup_Basis_Code IS NOT NULL) THEN
3448 IF (p_krpv_rec.Catchup_Basis_Code <> 'ACTUAL') THEN
3449 -- AKP: Todo: Set Proper Message
3450 --(Catchup Basis Code is 'ACTUAL' allowed only)
3451 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3452 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3453 ,p_token1 => 'VALUE'
3454 ,p_token1_value => 'ACTUAL'
3455 ,p_token2 => 'CODE0'
3456 ,p_token2_value => 'CATCHUP_BASIS_CODE'
3457 ,p_token3 => 'CODE1'
3458 ,p_token3_value => 'CATCHUP/CLEANUP'
3459 ,p_token4 => 'CODE2'
3460 ,p_token4_value => 'STREAMS');
3461 l_return_status := OKC_API.G_RET_STS_ERROR;
3462 IF (p_stack_messages = 'N') THEN
3463 RAISE violated_ref_integrity;
3464 END IF;
3465 END IF;
3466 END IF;
3467
3468 IF (p_krpv_rec.Catchup_Start_Date = OKC_API.G_MISS_DATE OR
3469 p_krpv_rec.Catchup_Start_Date IS NULL)
3470 THEN
3471 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3472 'Catchup Start Date');
3473 l_return_status := OKC_API.G_RET_STS_ERROR;
3474 IF (p_stack_messages = 'N') THEN
3475 RAISE violated_ref_integrity;
3476 END IF;
3477 END IF;
3478
3479 IF (p_krpv_rec.Catchup_Settlement_Code = OKC_API.G_MISS_CHAR OR
3480 p_krpv_rec.Catchup_Settlement_Code IS NULL)
3481 THEN
3482 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3483 'Catchup Settlement Code');
3484 l_return_status := OKC_API.G_RET_STS_ERROR;
3485 IF (p_stack_messages = 'N') THEN
3486 RAISE violated_ref_integrity;
3487 END IF;
3488 END IF;
3489
3490 -- Bug 4862551
3491 /*
3492 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
3493 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3494 THEN
3495 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3496 'Rate Change Start Date');
3497 l_return_status := OKC_API.G_RET_STS_ERROR;
3498 IF (p_stack_messages = 'N') THEN
3499 RAISE violated_ref_integrity;
3500 END IF;
3501 END IF;
3502
3503 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3504 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3505 THEN
3506 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3507 'Rate Change Frequency Code');
3508 l_return_status := OKC_API.G_RET_STS_ERROR;
3509 IF (p_stack_messages = 'N') THEN
3510 RAISE violated_ref_integrity;
3511 END IF;
3512 END IF;
3513
3514 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3515 p_krpv_rec.Rate_Change_Value IS NULL)
3516 THEN
3517 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3518 'Rate Change Value');
3519 l_return_status := OKC_API.G_RET_STS_ERROR;
3520 IF (p_stack_messages = 'N') THEN
3521 RAISE violated_ref_integrity;
3522 END IF;
3523 END IF;
3524 */
3525
3526 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3527 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3528 p_krpv_rec.Conversion_Option_Code IS NULL)
3529 THEN
3530 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3531 'Conversion Option Code');
3532 l_return_status := OKC_API.G_RET_STS_ERROR;
3533 IF (p_stack_messages = 'N') THEN
3534 RAISE violated_ref_integrity;
3535 END IF;
3536 END IF;
3537 END IF;*/
3538
3539 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3540 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3541 p_krpv_rec.Next_Conversion_Date IS NULL)
3542 THEN
3543 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3544 'Next Conversion Date');
3545 l_return_status := OKC_API.G_RET_STS_ERROR;
3546 IF (p_stack_messages = 'N') THEN
3547 RAISE violated_ref_integrity;
3548 END IF;
3549 END IF;
3550 END IF;*/
3551
3552 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3553 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3554 p_krpv_rec.Conversion_Type_Code IS NULL)
3555 THEN
3556 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3557 'Conversion Type Code');
3558 l_return_status := OKC_API.G_RET_STS_ERROR;
3559 IF (p_stack_messages = 'N') THEN
3560 RAISE violated_ref_integrity;
3561 END IF;
3562 END IF;
3563 END IF;*/
3564
3565 END IF; /* FIXED and STREAMS */
3566 END IF; /* LOAN */
3567
3568 IF (p_deal_type IN ('LOAN-REVOLVING')) THEN
3569 IF (p_int_calc_basis IN ('FLOAT') AND
3570 p_rev_rec_method IN ('ESTIMATED_AND_BILLED', 'ACTUAL')) THEN
3571 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
3572 p_krpv_rec.Interest_Index_Id IS NULL)
3573 THEN
3574 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3575 'Interest Index Id');
3576 l_return_status := OKC_API.G_RET_STS_ERROR;
3577 IF (p_stack_messages = 'N') THEN
3578 RAISE violated_ref_integrity;
3579 END IF;
3580 END IF;
3581
3582 -- Bug 4907390
3583 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
3584 p_krpv_rec.Base_Rate IS NULL)
3585 THEN
3586 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3587 'Base Rate');
3588 l_return_status := OKC_API.G_RET_STS_ERROR;
3589 IF (p_stack_messages = 'N') THEN
3590 RAISE violated_ref_integrity;
3591 END IF;
3592 END IF;*/
3593
3594 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
3595 p_krpv_rec.Interest_Start_Date IS NULL)
3596 THEN
3597 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3598 'Interest Start Date');
3599 l_return_status := OKC_API.G_RET_STS_ERROR;
3600 IF (p_stack_messages = 'N') THEN
3601 RAISE violated_ref_integrity;
3602 END IF;
3603 END IF;
3604
3605 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
3606 p_krpv_rec.Adder_Rate IS NULL)
3607 THEN
3608 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3609 'Adder Rate');
3610 l_return_status := OKC_API.G_RET_STS_ERROR;
3611 IF (p_stack_messages = 'N') THEN
3612 RAISE violated_ref_integrity;
3613 END IF;
3614 END IF;
3615
3616 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
3617 p_krpv_rec.Maximum_Rate IS NULL)
3618 THEN
3619 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3620 'Maximum Rate');
3621 l_return_status := OKC_API.G_RET_STS_ERROR;
3622 IF (p_stack_messages = 'N') THEN
3623 RAISE violated_ref_integrity;
3624 END IF;
3625 END IF;
3626
3627 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3628 p_krpv_rec.Minimum_Rate IS NULL)
3629 THEN
3630 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3631 'Minimum Rate');
3632 l_return_status := OKC_API.G_RET_STS_ERROR;
3633 IF (p_stack_messages = 'N') THEN
3634 RAISE violated_ref_integrity;
3635 END IF;
3636 END IF;
3637
3638 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3639 p_krpv_rec.Principal_Basis_Code IS NULL)
3640 THEN
3641 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3642 'Principal Basis Code');
3643 l_return_status := OKC_API.G_RET_STS_ERROR;
3644 IF (p_stack_messages = 'N') THEN
3645 RAISE violated_ref_integrity;
3646 END IF;
3647 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3648 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3649 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
3650 -- AKP: Todo: Set Proper Message
3651 --(Principal Basis Code is 'ACTUAL' allowed only)
3652 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3653 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3654 ,p_token1 => 'VALUE'
3655 ,p_token1_value => 'ACTUAL'
3656 ,p_token2 => 'CODE0'
3657 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3658 ,p_token3 => 'CODE1'
3659 ,p_token3_value => 'LOAN-REVOLVING'
3660 ,p_token4 => 'CODE2'
3661 ,p_token4_value => 'FLOAT');
3662 l_return_status := OKC_API.G_RET_STS_ERROR;
3663 IF (p_stack_messages = 'N') THEN
3664 RAISE violated_ref_integrity;
3665 END IF;
3666 END IF;
3667 END IF;
3668
3669 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3670 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3671 THEN
3672 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3673 'Days In A Month Code');
3674 l_return_status := OKC_API.G_RET_STS_ERROR;
3675 IF (p_stack_messages = 'N') THEN
3676 RAISE violated_ref_integrity;
3677 END IF;
3678 END IF;
3679
3680 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3681 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3682 THEN
3683 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3684 'Days In A Year Code');
3685 l_return_status := OKC_API.G_RET_STS_ERROR;
3686 IF (p_stack_messages = 'N') THEN
3687 RAISE violated_ref_integrity;
3688 END IF;
3689 END IF;
3690
3691 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3692 p_krpv_rec.Interest_Basis_Code IS NULL)
3693 THEN
3694 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3695 'Interest Basis Code');
3696 l_return_status := OKC_API.G_RET_STS_ERROR;
3697 IF (p_stack_messages = 'N') THEN
3698 RAISE violated_ref_integrity;
3699 END IF;
3700 END IF;
3701
3702 -- Bug 4862551
3703 /*
3704 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3705 p_krpv_rec.Rate_Delay_Code IS NULL)
3706 THEN
3707 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3708 'Rate Delay Code');
3709 l_return_status := OKC_API.G_RET_STS_ERROR;
3710 IF (p_stack_messages = 'N') THEN
3711 RAISE violated_ref_integrity;
3712 END IF;
3713 END IF;
3714
3715 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3716 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3717 THEN
3718 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3719 'Rate Delay Frequency');
3720 l_return_status := OKC_API.G_RET_STS_ERROR;
3721 IF (p_stack_messages = 'N') THEN
3722 RAISE violated_ref_integrity;
3723 END IF;
3724 END IF;
3725 */
3726
3727 -- Bug 4862416
3728 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3729 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3730 THEN
3731 l_msg1_set := TRUE;
3732 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3733 'Compounding Frequency Code');
3734 l_return_status := OKC_API.G_RET_STS_ERROR;
3735 IF (p_stack_messages = 'N') THEN
3736 RAISE violated_ref_integrity;
3737 END IF;
3738 END IF;
3739
3740 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3741 p_krpv_rec.Calculation_Formula_Id IS NULL)
3742 THEN
3743 l_msg2_set := TRUE;
3744 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3745 'Formula Name');
3746 l_return_status := OKC_API.G_RET_STS_ERROR;
3747 IF (p_stack_messages = 'N') THEN
3748 RAISE violated_ref_integrity;
3749 END IF;
3750 END IF;*/
3751
3752 -- Bug 4862551
3753 /*
3754 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
3755 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3756 THEN
3757 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3758 'Rate Change Start Date');
3759 l_return_status := OKC_API.G_RET_STS_ERROR;
3760 IF (p_stack_messages = 'N') THEN
3761 RAISE violated_ref_integrity;
3762 END IF;
3763 END IF;
3764
3765 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3766 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3767 THEN
3768 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3769 'Rate Change Frequency Code');
3770 l_return_status := OKC_API.G_RET_STS_ERROR;
3771 IF (p_stack_messages = 'N') THEN
3772 RAISE violated_ref_integrity;
3773 END IF;
3774 END IF;
3775
3776 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3777 p_krpv_rec.Rate_Change_Value IS NULL)
3778 THEN
3779 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3780 'Rate Change Value');
3781 l_return_status := OKC_API.G_RET_STS_ERROR;
3782 IF (p_stack_messages = 'N') THEN
3783 RAISE violated_ref_integrity;
3784 END IF;
3785 END IF;
3786 */
3787
3788 /*IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3789 p_krpv_rec.Conversion_Option_Code IS NULL)
3790 THEN
3791 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3792 'Conversion Option Code');
3793 l_return_status := OKC_API.G_RET_STS_ERROR;
3794 IF (p_stack_messages = 'N') THEN
3795 RAISE violated_ref_integrity;
3796 END IF;
3797 END IF;*/
3798
3799 /*IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3800 p_krpv_rec.Next_Conversion_Date IS NULL)
3801 THEN
3802 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3803 'Next Conversion Date');
3804 l_return_status := OKC_API.G_RET_STS_ERROR;
3805 IF (p_stack_messages = 'N') THEN
3806 RAISE violated_ref_integrity;
3807 END IF;
3808 END IF;*/
3809
3810 /*IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3811 p_krpv_rec.Conversion_Type_Code IS NULL)
3812 THEN
3813 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3814 'Conversion Type Code');
3815 l_return_status := OKC_API.G_RET_STS_ERROR;
3816 IF (p_stack_messages = 'N') THEN
3817 RAISE violated_ref_integrity;
3818 END IF;
3819 END IF;*/
3820
3821 END IF;
3822 END IF;
3823
3824 -- Bug 4862416: For interest basis code 'COMPOUND', formula is required
3825 -- and compounding_frqeuency_code is required.
3826 IF (p_krpv_rec.Interest_Basis_Code IS NOT NULL AND
3827 p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR) THEN
3828
3829 IF (p_krpv_rec.Interest_Basis_Code = 'COMPOUND') THEN
3830
3831 IF NOT(l_msg1_set) THEN
3832 IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3833 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3834 THEN
3835 l_msg1_set := TRUE;
3836 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3837 'Compounding Frequency Code');
3838 l_return_status := OKC_API.G_RET_STS_ERROR;
3839 IF (p_stack_messages = 'N') THEN
3840 RAISE violated_ref_integrity;
3841 END IF;
3842 END IF;
3843 END IF;
3844
3845 IF NOT(l_msg2_set) THEN
3846 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3847 p_krpv_rec.Calculation_Formula_Id IS NULL)
3848 THEN
3849 l_msg2_set := TRUE;
3850 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3851 'Formula Name');
3852 l_return_status := OKC_API.G_RET_STS_ERROR;
3853 IF (p_stack_messages = 'N') THEN
3854 RAISE violated_ref_integrity;
3855 END IF;
3856 END IF;
3857 END IF;
3858
3859 END IF;
3860
3861 END IF;
3862
3863 --Bug# 13002041
3864 IF (p_krpv_rec.days_in_a_month_code IS NOT NULL AND
3865 p_krpv_rec.days_in_a_month_code <> OKC_API.G_MISS_CHAR) AND
3866 (p_krpv_rec.days_in_a_year_code IS NOT NULL AND
3867 p_krpv_rec.days_in_a_year_code <> OKC_API.G_MISS_CHAR) THEN
3868
3869 Okl_Streams_Util.get_pricing_engine(p_khr_id => p_krpv_rec.khr_id,
3870 x_pricing_engine => l_pricing_engine,
3871 x_return_status => lx_return_status);
3872 IF (lx_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
3873 l_return_status := lx_return_status;
3874 IF (p_stack_messages = 'N') THEN
3875 RAISE violated_ref_integrity;
3876 END IF;
3877 END IF;
3878
3879 l_days_month_yr_concat := p_krpv_rec.days_in_a_month_code ||'*'|| p_krpv_rec.days_in_a_year_code;
3880
3881 IF NVL(l_pricing_engine,'XXX') = 'EXTERNAL' THEN
3882
3883 IF (l_days_month_yr_concat <> '30*360')
3884 AND (l_days_month_yr_concat <> 'ACTUAL*365')
3885 AND (l_days_month_yr_concat <> 'ACTUAL*360')
3886 AND (l_days_month_yr_concat <> '30*365')
3887 AND (l_days_month_yr_concat <> 'ACTUAL*ACTUAL')
3888 THEN
3889 OKC_API.set_message(OKL_API.G_APP_NAME,
3890 'OKL_DAY_CONVEN_VAL_EXT');
3891 l_return_status := OKC_API.G_RET_STS_ERROR;
3892 IF (p_stack_messages = 'N') THEN
3893 RAISE violated_ref_integrity;
3894 END IF;
3895 END IF;
3896
3897 ELSIF NVL(l_pricing_engine,'XXX') = 'INTERNAL' THEN
3898
3899 IF (l_days_month_yr_concat <> '30*360')
3900 AND (l_days_month_yr_concat <> 'ACTUAL*365')
3901 AND (l_days_month_yr_concat <> 'ACTUAL*ACTUAL')
3902 THEN
3903 OKC_API.set_message(OKL_API.G_APP_NAME,
3904 'OKL_DAY_CONVEN_VAL_INT');
3905 l_return_status := OKC_API.G_RET_STS_ERROR;
3906 IF (p_stack_messages = 'N') THEN
3907 RAISE violated_ref_integrity;
3908 END IF;
3909 END IF;
3910
3911 END IF;
3912 END IF;
3913 --Bug# 13002041
3914
3915 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) AND
3916 (p_stack_messages = 'N') THEN
3917 RAISE violated_ref_integrity;
3918 END IF;
3919
3920 /* AKP: Todo: IF Payments are in 'Advance' the rate delay should be more
3921 than print lead days. Done in OKLRKRPB.pls */
3922
3923 RETURN (l_return_status);
3924
3925 EXCEPTION
3926 WHEN violated_ref_integrity THEN
3927 l_return_status := OKL_API.G_RET_STS_ERROR;
3928 RETURN (l_return_status);
3929 END Validate_Record;
3930
3931 ---------------------------------------------------------------------------
3932 -- PROCEDURE Migrate
3933 ---------------------------------------------------------------------------
3934 PROCEDURE migrate (
3935 p_from IN krpv_rec_type,
3936 p_to IN OUT NOCOPY krp_rec_type
3937 ) IS
3938 BEGIN
3939 p_to.khr_id := p_from.khr_id;
3940 p_to.parameter_type_code := p_from.parameter_type_code;
3941 p_to.effective_from_date := p_from.effective_from_date;
3942 p_to.effective_to_date := p_from.effective_to_date;
3943 p_to.interest_index_id := p_from.interest_index_id;
3944 p_to.base_rate := p_from.base_rate;
3945 p_to.interest_start_date := p_from.interest_start_date;
3946 p_to.adder_rate := p_from.adder_rate;
3947 p_to.maximum_rate := p_from.maximum_rate;
3948 p_to.minimum_rate := p_from.minimum_rate;
3949 p_to.principal_basis_code := p_from.principal_basis_code;
3950 p_to.days_in_a_month_code := p_from.days_in_a_month_code;
3951 p_to.days_in_a_year_code := p_from.days_in_a_year_code;
3952 p_to.interest_basis_code := p_from.interest_basis_code;
3953 p_to.rate_delay_code := p_from.rate_delay_code;
3954 p_to.rate_delay_frequency := p_from.rate_delay_frequency;
3955 p_to.compounding_frequency_code := p_from.compounding_frequency_code;
3956 p_to.calculation_formula_id := p_from.calculation_formula_id;
3957 p_to.catchup_basis_code := p_from.catchup_basis_code;
3958 p_to.catchup_start_date := p_from.catchup_start_date;
3959 p_to.catchup_settlement_code := p_from.catchup_settlement_code;
3960 p_to.rate_change_start_date := p_from.rate_change_start_date;
3961 p_to.rate_change_frequency_code := p_from.rate_change_frequency_code;
3962 p_to.rate_change_value := p_from.rate_change_value;
3963 p_to.conversion_option_code := p_from.conversion_option_code;
3964 p_to.next_conversion_date := p_from.next_conversion_date;
3965 p_to.conversion_type_code := p_from.conversion_type_code;
3966 p_to.attribute_category := p_from.attribute_category;
3967 p_to.attribute1 := p_from.attribute1;
3968 p_to.attribute2 := p_from.attribute2;
3969 p_to.attribute3 := p_from.attribute3;
3970 p_to.attribute4 := p_from.attribute4;
3971 p_to.attribute5 := p_from.attribute5;
3972 p_to.attribute6 := p_from.attribute6;
3973 p_to.attribute7 := p_from.attribute7;
3974 p_to.attribute8 := p_from.attribute8;
3975 p_to.attribute9 := p_from.attribute9;
3976 p_to.attribute10 := p_from.attribute10;
3977 p_to.attribute11 := p_from.attribute11;
3978 p_to.attribute12 := p_from.attribute12;
3979 p_to.attribute13 := p_from.attribute13;
3980 p_to.attribute14 := p_from.attribute14;
3981 p_to.attribute15 := p_from.attribute15;
3982 p_to.created_by := p_from.created_by;
3983 p_to.creation_date := p_from.creation_date;
3984 p_to.last_updated_by := p_from.last_updated_by;
3985 p_to.last_update_date := p_from.last_update_date;
3986 p_to.last_update_login := p_from.last_update_login;
3987 p_to.catchup_frequency_code := p_from.catchup_frequency_code;
3988 END migrate;
3989 PROCEDURE migrate (
3990 p_from IN krp_rec_type,
3991 p_to IN OUT NOCOPY krpv_rec_type
3992 ) IS
3993 BEGIN
3994 p_to.khr_id := p_from.khr_id;
3995 p_to.parameter_type_code := p_from.parameter_type_code;
3996 p_to.effective_from_date := p_from.effective_from_date;
3997 p_to.effective_to_date := p_from.effective_to_date;
3998 p_to.interest_index_id := p_from.interest_index_id;
3999 p_to.base_rate := p_from.base_rate;
4000 p_to.interest_start_date := p_from.interest_start_date;
4001 p_to.adder_rate := p_from.adder_rate;
4002 p_to.maximum_rate := p_from.maximum_rate;
4003 p_to.minimum_rate := p_from.minimum_rate;
4004 p_to.principal_basis_code := p_from.principal_basis_code;
4005 p_to.days_in_a_month_code := p_from.days_in_a_month_code;
4006 p_to.days_in_a_year_code := p_from.days_in_a_year_code;
4007 p_to.interest_basis_code := p_from.interest_basis_code;
4008 p_to.rate_delay_code := p_from.rate_delay_code;
4009 p_to.rate_delay_frequency := p_from.rate_delay_frequency;
4010 p_to.compounding_frequency_code := p_from.compounding_frequency_code;
4011 p_to.calculation_formula_id := p_from.calculation_formula_id;
4012 p_to.catchup_basis_code := p_from.catchup_basis_code;
4013 p_to.catchup_start_date := p_from.catchup_start_date;
4014 p_to.catchup_settlement_code := p_from.catchup_settlement_code;
4015 p_to.rate_change_start_date := p_from.rate_change_start_date;
4016 p_to.rate_change_frequency_code := p_from.rate_change_frequency_code;
4017 p_to.rate_change_value := p_from.rate_change_value;
4018 p_to.conversion_option_code := p_from.conversion_option_code;
4019 p_to.next_conversion_date := p_from.next_conversion_date;
4020 p_to.conversion_type_code := p_from.conversion_type_code;
4021 p_to.attribute_category := p_from.attribute_category;
4022 p_to.attribute1 := p_from.attribute1;
4023 p_to.attribute2 := p_from.attribute2;
4024 p_to.attribute3 := p_from.attribute3;
4025 p_to.attribute4 := p_from.attribute4;
4026 p_to.attribute5 := p_from.attribute5;
4027 p_to.attribute6 := p_from.attribute6;
4028 p_to.attribute7 := p_from.attribute7;
4029 p_to.attribute8 := p_from.attribute8;
4030 p_to.attribute9 := p_from.attribute9;
4031 p_to.attribute10 := p_from.attribute10;
4032 p_to.attribute11 := p_from.attribute11;
4033 p_to.attribute12 := p_from.attribute12;
4034 p_to.attribute13 := p_from.attribute13;
4035 p_to.attribute14 := p_from.attribute14;
4036 p_to.attribute15 := p_from.attribute15;
4037 p_to.created_by := p_from.created_by;
4038 p_to.creation_date := p_from.creation_date;
4039 p_to.last_updated_by := p_from.last_updated_by;
4040 p_to.last_update_date := p_from.last_update_date;
4041 p_to.last_update_login := p_from.last_update_login;
4042 p_to.catchup_frequency_code := p_from.catchup_frequency_code;
4043 END migrate;
4044 ---------------------------------------------------------------------------
4045 -- PROCEDURE validate_row
4046 ---------------------------------------------------------------------------
4047 ------------------------------------------
4048 -- validate_row for:OKL_K_RATE_PARAMS_V --
4049 ------------------------------------------
4050 PROCEDURE validate_row(
4051 p_api_version IN NUMBER,
4052 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4053 x_return_status OUT NOCOPY VARCHAR2,
4054 x_msg_count OUT NOCOPY NUMBER,
4055 x_msg_data OUT NOCOPY VARCHAR2,
4056 p_krpv_rec IN krpv_rec_type) IS
4057
4058 l_api_version CONSTANT NUMBER := 1;
4059 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
4060 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4061 l_krpv_rec krpv_rec_type := p_krpv_rec;
4062 l_krp_rec krp_rec_type;
4063 l_krp_rec krp_rec_type;
4064 BEGIN
4065 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4066 G_PKG_NAME,
4067 p_init_msg_list,
4068 l_api_version,
4069 p_api_version,
4070 '_PVT',
4071 x_return_status);
4072 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4073 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4074 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4075 RAISE OKC_API.G_EXCEPTION_ERROR;
4076 END IF;
4077 --- Validate all non-missing attributes (Item Level Validation)
4078 l_return_status := Validate_Attributes(l_krpv_rec);
4079 --- If any errors happen abort API
4080 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4081 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4082 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4083 RAISE OKC_API.G_EXCEPTION_ERROR;
4084 END IF;
4085 l_return_status := Validate_Record(l_krpv_rec);
4086 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4087 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4088 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4089 RAISE OKC_API.G_EXCEPTION_ERROR;
4090 END IF;
4091 x_return_status := l_return_status;
4092 EXCEPTION
4093 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4094 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4095 (
4096 l_api_name,
4097 G_PKG_NAME,
4098 'OKC_API.G_RET_STS_ERROR',
4099 x_msg_count,
4100 x_msg_data,
4101 '_PVT'
4102 );
4103 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4104 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4105 (
4106 l_api_name,
4107 G_PKG_NAME,
4108 'OKC_API.G_RET_STS_UNEXP_ERROR',
4109 x_msg_count,
4110 x_msg_data,
4111 '_PVT'
4112 );
4113 WHEN OTHERS THEN
4114 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4115 (
4116 l_api_name,
4117 G_PKG_NAME,
4118 'OTHERS',
4119 x_msg_count,
4120 x_msg_data,
4121 '_PVT'
4122 );
4123 END validate_row;
4124 -----------------------------------------------------
4125 -- PL/SQL TBL validate_row for:OKL_K_RATE_PARAMS_V --
4126 -----------------------------------------------------
4127 PROCEDURE validate_row(
4128 p_api_version IN NUMBER,
4129 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4130 x_return_status OUT NOCOPY VARCHAR2,
4131 x_msg_count OUT NOCOPY NUMBER,
4132 x_msg_data OUT NOCOPY VARCHAR2,
4133 p_krpv_tbl IN krpv_tbl_type,
4134 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4135
4136 l_api_version CONSTANT NUMBER := 1;
4137 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
4138 i NUMBER := 0;
4139 BEGIN
4140 OKC_API.init_msg_list(p_init_msg_list);
4141 -- Make sure PL/SQL table has records in it before passing
4142 IF (p_krpv_tbl.COUNT > 0) THEN
4143 i := p_krpv_tbl.FIRST;
4144 LOOP
4145 DECLARE
4146 l_error_rec OKC_API.ERROR_REC_TYPE;
4147 BEGIN
4148 l_error_rec.api_name := l_api_name;
4149 l_error_rec.api_package := G_PKG_NAME;
4150 l_error_rec.idx := i;
4151 validate_row (
4152 p_api_version => p_api_version,
4153 p_init_msg_list => OKC_API.G_FALSE,
4154 x_return_status => l_error_rec.error_type,
4155 x_msg_count => l_error_rec.msg_count,
4156 x_msg_data => l_error_rec.msg_data,
4157 p_krpv_rec => p_krpv_tbl(i));
4158 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4159 l_error_rec.sqlcode := SQLCODE;
4160 load_error_tbl(l_error_rec, px_error_tbl);
4161 ELSE
4162 x_msg_count := l_error_rec.msg_count;
4163 x_msg_data := l_error_rec.msg_data;
4164 END IF;
4165 EXCEPTION
4166 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4167 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4168 l_error_rec.sqlcode := SQLCODE;
4169 load_error_tbl(l_error_rec, px_error_tbl);
4170 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4171 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4172 l_error_rec.sqlcode := SQLCODE;
4173 load_error_tbl(l_error_rec, px_error_tbl);
4174 WHEN OTHERS THEN
4175 l_error_rec.error_type := 'OTHERS';
4176 l_error_rec.sqlcode := SQLCODE;
4177 load_error_tbl(l_error_rec, px_error_tbl);
4178 END;
4179 EXIT WHEN (i = p_krpv_tbl.LAST);
4180 i := p_krpv_tbl.NEXT(i);
4181 END LOOP;
4182 END IF;
4183 -- Loop through the error_tbl to find the error with the highest severity
4184 -- and return it.
4185 x_return_status := find_highest_exception(px_error_tbl);
4186 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4187 EXCEPTION
4188 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4189 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4190 (
4191 l_api_name,
4192 G_PKG_NAME,
4193 'OKC_API.G_RET_STS_ERROR',
4194 x_msg_count,
4195 x_msg_data,
4196 '_PVT'
4197 );
4198 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4199 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4200 (
4201 l_api_name,
4202 G_PKG_NAME,
4203 'OKC_API.G_RET_STS_UNEXP_ERROR',
4204 x_msg_count,
4205 x_msg_data,
4206 '_PVT'
4207 );
4208 WHEN OTHERS THEN
4209 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4210 (
4211 l_api_name,
4212 G_PKG_NAME,
4213 'OTHERS',
4214 x_msg_count,
4215 x_msg_data,
4216 '_PVT'
4217 );
4218 END validate_row;
4219
4220 -----------------------------------------------------
4221 -- PL/SQL TBL validate_row for:OKL_K_RATE_PARAMS_V --
4222 -----------------------------------------------------
4223 PROCEDURE validate_row(
4224 p_api_version IN NUMBER,
4225 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4226 x_return_status OUT NOCOPY VARCHAR2,
4227 x_msg_count OUT NOCOPY NUMBER,
4228 x_msg_data OUT NOCOPY VARCHAR2,
4229 p_krpv_tbl IN krpv_tbl_type) IS
4230
4231 l_api_version CONSTANT NUMBER := 1;
4232 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
4233 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4234 l_error_tbl OKC_API.ERROR_TBL_TYPE;
4235 BEGIN
4236 OKC_API.init_msg_list(p_init_msg_list);
4237 -- Make sure PL/SQL table has records in it before passing
4238 IF (p_krpv_tbl.COUNT > 0) THEN
4239 validate_row (
4240 p_api_version => p_api_version,
4241 p_init_msg_list => OKC_API.G_FALSE,
4242 x_return_status => x_return_status,
4243 x_msg_count => x_msg_count,
4244 x_msg_data => x_msg_data,
4245 p_krpv_tbl => p_krpv_tbl,
4246 px_error_tbl => l_error_tbl);
4247 END IF;
4248 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4249 EXCEPTION
4250 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4251 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4252 (
4253 l_api_name,
4254 G_PKG_NAME,
4255 'OKC_API.G_RET_STS_ERROR',
4256 x_msg_count,
4257 x_msg_data,
4258 '_PVT'
4259 );
4260 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4261 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4262 (
4263 l_api_name,
4264 G_PKG_NAME,
4265 'OKC_API.G_RET_STS_UNEXP_ERROR',
4266 x_msg_count,
4267 x_msg_data,
4268 '_PVT'
4269 );
4270 WHEN OTHERS THEN
4271 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4272 (
4273 l_api_name,
4274 G_PKG_NAME,
4275 'OTHERS',
4276 x_msg_count,
4277 x_msg_data,
4278 '_PVT'
4279 );
4280 END validate_row;
4281
4282 /* Custom validation routine, overloaded */
4283 PROCEDURE validate_row(
4284 p_api_version IN NUMBER,
4285 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4286 x_return_status OUT NOCOPY VARCHAR2,
4287 x_msg_count OUT NOCOPY NUMBER,
4288 x_msg_data OUT NOCOPY VARCHAR2,
4289 p_deal_type IN VARCHAR2,
4290 p_rev_rec_method IN VARCHAR2,
4291 p_int_calc_basis IN VARCHAR2,
4292 p_krpv_tbl IN krpv_tbl_type,
4293 p_stack_messages IN VARCHAR2 DEFAULT 'N',
4294 p_validate_flag IN VARCHAR2 DEFAULT 'Y') IS
4295
4296 l_api_version CONSTANT NUMBER := 1;
4297 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
4298 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4299 --l_krpv_rec krpv_rec_type := p_krpv_rec;
4300 l_krpv_rec krpv_rec_type;
4301 l_krp_rec krp_rec_type;
4302 l_krp_rec krp_rec_type;
4303
4304 i NUMBER;
4305
4306 --Bug# 13002041
4307 lx_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4308
4309 BEGIN
4310 IF (G_DEBUG_ENABLED = 'Y') THEN
4311 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4312 END IF;
4313 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4314 G_PKG_NAME,
4315 p_init_msg_list,
4316 l_api_version,
4317 p_api_version,
4318 '_PVT',
4319 x_return_status);
4320 IF (p_stack_messages = 'N') THEN
4321 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4322 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4323 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4324 RAISE OKC_API.G_EXCEPTION_ERROR;
4325 END IF;
4326 END IF;
4327 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4328 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In validate_row... p_krpv_tbl.count=' || p_krpv_tbl.count);
4329 END IF;
4330 IF (p_krpv_tbl.COUNT > 0) THEN
4331 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4332 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Inside ...');
4333 END IF;
4334 i := p_krpv_tbl.FIRST;
4335 LOOP
4336 l_krpv_rec := p_krpv_tbl(i);
4337
4338 --- Validate all non-missing attributes (Item Level Validation)
4339 l_return_status := Validate_Attributes(l_krpv_rec, p_stack_messages);
4340 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4341 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_attributes...l_return_status='||l_return_status);
4342 END IF;
4343 IF (p_stack_messages = 'N') THEN
4344 --- If any errors happen abort API
4345 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4346 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4347 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4348 RAISE OKC_API.G_EXCEPTION_ERROR;
4349 END IF;
4350 END IF;
4351 IF (nvl(p_validate_flag, 'Y') = 'F') THEN
4352 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4353 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Calling validate_record...');
4354 END IF;
4355 lx_return_status := Validate_Record(l_krpv_rec,
4356 p_stack_messages,
4357 p_deal_type,
4358 p_rev_rec_method,
4359 p_int_calc_basis);
4360 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4361 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_record l_return_status=' || lx_return_status);
4362 END IF;
4363
4364 --Bug# 13002041
4365 IF lx_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4366 l_return_status := lx_return_status;
4367 END IF;
4368
4369 IF (p_stack_messages = 'N') THEN
4370 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4371 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4372 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4373 RAISE OKC_API.G_EXCEPTION_ERROR;
4374 END IF;
4375 END IF;
4376 END IF;
4377 x_return_status := l_return_status;
4378 EXIT WHEN ( i = p_krpv_tbl.LAST);
4379 i := p_krpv_tbl.NEXT(i);
4380 END LOOP;
4381 END IF;
4382 x_return_status := l_return_status;
4383 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4384 EXCEPTION
4385 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4386 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4387 (
4388 l_api_name,
4389 G_PKG_NAME,
4390 'OKC_API.G_RET_STS_ERROR',
4391 x_msg_count,
4392 x_msg_data,
4393 '_PVT'
4394 );
4395 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4396 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4397 (
4398 l_api_name,
4399 G_PKG_NAME,
4400 'OKC_API.G_RET_STS_UNEXP_ERROR',
4401 x_msg_count,
4402 x_msg_data,
4403 '_PVT'
4404 );
4405 WHEN OTHERS THEN
4406 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4407 (
4408 l_api_name,
4409 G_PKG_NAME,
4410 'OTHERS',
4411 x_msg_count,
4412 x_msg_data,
4413 '_PVT'
4414 );
4415 END validate_row;
4416
4417 ---------------------------------------------------------------------------
4418 -- PROCEDURE insert_row
4419 ---------------------------------------------------------------------------
4420 --------------------------------------
4421 -- insert_row for:OKL_K_RATE_PARAMS --
4422 --------------------------------------
4423 PROCEDURE insert_row(
4424 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4425 x_return_status OUT NOCOPY VARCHAR2,
4426 x_msg_count OUT NOCOPY NUMBER,
4427 x_msg_data OUT NOCOPY VARCHAR2,
4428 p_krp_rec IN krp_rec_type,
4429 x_krp_rec OUT NOCOPY krp_rec_type) IS
4430
4431 l_api_version CONSTANT NUMBER := 1;
4432 l_api_name CONSTANT VARCHAR2(30) := 'B_insert_row';
4433 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4434 l_krp_rec krp_rec_type := p_krp_rec;
4435 l_def_krp_rec krp_rec_type;
4436 ------------------------------------------
4437 -- Set_Attributes for:OKL_K_RATE_PARAMS --
4438 ------------------------------------------
4439 FUNCTION Set_Attributes (
4440 p_krp_rec IN krp_rec_type,
4441 x_krp_rec OUT NOCOPY krp_rec_type
4442 ) RETURN VARCHAR2 IS
4443 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4444 BEGIN
4445 x_krp_rec := p_krp_rec;
4446 RETURN(l_return_status);
4447 END Set_Attributes;
4448 BEGIN
4449 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4450 p_init_msg_list,
4451 '_PVT',
4452 x_return_status);
4453 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4454 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4455 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4456 RAISE OKC_API.G_EXCEPTION_ERROR;
4457 END IF;
4458 --- Setting item atributes
4459 l_return_status := Set_Attributes(
4460 p_krp_rec, -- IN
4461 l_krp_rec); -- OUT
4462 --- If any errors happen abort API
4463 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4464 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4465 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4466 RAISE OKC_API.G_EXCEPTION_ERROR;
4467 END IF;
4468 INSERT INTO OKL_K_RATE_PARAMS(
4469 khr_id,
4470 parameter_type_code,
4471 effective_from_date,
4472 effective_to_date,
4473 interest_index_id,
4474 base_rate,
4475 interest_start_date,
4476 adder_rate,
4477 maximum_rate,
4478 minimum_rate,
4479 principal_basis_code,
4480 days_in_a_month_code,
4481 days_in_a_year_code,
4482 interest_basis_code,
4483 rate_delay_code,
4484 rate_delay_frequency,
4485 compounding_frequency_code,
4486 calculation_formula_id,
4487 catchup_basis_code,
4488 catchup_start_date,
4489 catchup_settlement_code,
4490 rate_change_start_date,
4491 rate_change_frequency_code,
4492 rate_change_value,
4493 conversion_option_code,
4494 next_conversion_date,
4495 conversion_type_code,
4496 attribute_category,
4497 attribute1,
4498 attribute2,
4499 attribute3,
4500 attribute4,
4501 attribute5,
4502 attribute6,
4503 attribute7,
4504 attribute8,
4505 attribute9,
4506 attribute10,
4507 attribute11,
4508 attribute12,
4509 attribute13,
4510 attribute14,
4511 attribute15,
4512 created_by,
4513 creation_date,
4514 last_updated_by,
4515 last_update_date,
4516 last_update_login,
4517 catchup_frequency_code)
4518 VALUES (
4519 l_krp_rec.khr_id,
4520 l_krp_rec.parameter_type_code,
4521 l_krp_rec.effective_from_date,
4522 l_krp_rec.effective_to_date,
4523 l_krp_rec.interest_index_id,
4524 l_krp_rec.base_rate,
4525 l_krp_rec.interest_start_date,
4526 l_krp_rec.adder_rate,
4527 l_krp_rec.maximum_rate,
4528 l_krp_rec.minimum_rate,
4529 l_krp_rec.principal_basis_code,
4530 l_krp_rec.days_in_a_month_code,
4531 l_krp_rec.days_in_a_year_code,
4532 l_krp_rec.interest_basis_code,
4533 l_krp_rec.rate_delay_code,
4534 l_krp_rec.rate_delay_frequency,
4535 l_krp_rec.compounding_frequency_code,
4536 l_krp_rec.calculation_formula_id,
4537 l_krp_rec.catchup_basis_code,
4538 l_krp_rec.catchup_start_date,
4539 l_krp_rec.catchup_settlement_code,
4540 l_krp_rec.rate_change_start_date,
4541 l_krp_rec.rate_change_frequency_code,
4542 l_krp_rec.rate_change_value,
4543 l_krp_rec.conversion_option_code,
4544 l_krp_rec.next_conversion_date,
4545 l_krp_rec.conversion_type_code,
4546 l_krp_rec.attribute_category,
4547 l_krp_rec.attribute1,
4548 l_krp_rec.attribute2,
4549 l_krp_rec.attribute3,
4550 l_krp_rec.attribute4,
4551 l_krp_rec.attribute5,
4552 l_krp_rec.attribute6,
4553 l_krp_rec.attribute7,
4554 l_krp_rec.attribute8,
4555 l_krp_rec.attribute9,
4556 l_krp_rec.attribute10,
4557 l_krp_rec.attribute11,
4558 l_krp_rec.attribute12,
4559 l_krp_rec.attribute13,
4560 l_krp_rec.attribute14,
4561 l_krp_rec.attribute15,
4562 l_krp_rec.created_by,
4563 l_krp_rec.creation_date,
4564 l_krp_rec.last_updated_by,
4565 l_krp_rec.last_update_date,
4566 l_krp_rec.last_update_login,
4567 l_krp_rec.catchup_frequency_code);
4568 -- Set OUT values
4569 x_krp_rec := l_krp_rec;
4570 x_return_status := l_return_status;
4571 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4572 EXCEPTION
4573 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4574 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4575 (
4576 l_api_name,
4577 G_PKG_NAME,
4578 'OKC_API.G_RET_STS_ERROR',
4579 x_msg_count,
4580 x_msg_data,
4581 '_PVT'
4582 );
4583 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4584 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4585 (
4586 l_api_name,
4587 G_PKG_NAME,
4588 'OKC_API.G_RET_STS_UNEXP_ERROR',
4589 x_msg_count,
4590 x_msg_data,
4591 '_PVT'
4592 );
4593 WHEN OTHERS THEN
4594 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4595 (
4596 l_api_name,
4597 G_PKG_NAME,
4598 'OTHERS',
4599 x_msg_count,
4600 x_msg_data,
4601 '_PVT'
4602 );
4603 END insert_row;
4604 -----------------------------------------
4605 -- insert_row for :OKL_K_RATE_PARAMS_V --
4606 -----------------------------------------
4607 PROCEDURE insert_row(
4608 p_api_version IN NUMBER,
4609 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4610 x_return_status OUT NOCOPY VARCHAR2,
4611 x_msg_count OUT NOCOPY NUMBER,
4612 x_msg_data OUT NOCOPY VARCHAR2,
4613 p_krpv_rec IN krpv_rec_type,
4614 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
4615
4616 l_api_version CONSTANT NUMBER := 1;
4617 l_api_name CONSTANT VARCHAR2(30) := 'V_insert_row';
4618 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4619 l_krpv_rec krpv_rec_type := p_krpv_rec;
4620 l_def_krpv_rec krpv_rec_type;
4621 l_krp_rec krp_rec_type;
4622 lx_krp_rec krp_rec_type;
4623 -------------------------------
4624 -- FUNCTION fill_who_columns --
4625 -------------------------------
4626 FUNCTION fill_who_columns (
4627 p_krpv_rec IN krpv_rec_type
4628 ) RETURN krpv_rec_type IS
4629 l_krpv_rec krpv_rec_type := p_krpv_rec;
4630 BEGIN
4631 l_krpv_rec.CREATION_DATE := SYSDATE;
4632 l_krpv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
4633 l_krpv_rec.LAST_UPDATE_DATE := l_krpv_rec.CREATION_DATE;
4634 l_krpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4635 l_krpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4636 RETURN(l_krpv_rec);
4637 END fill_who_columns;
4638 --------------------------------------------
4639 -- Set_Attributes for:OKL_K_RATE_PARAMS_V --
4640 --------------------------------------------
4641 FUNCTION Set_Attributes (
4642 p_krpv_rec IN krpv_rec_type,
4643 x_krpv_rec OUT NOCOPY krpv_rec_type
4644 ) RETURN VARCHAR2 IS
4645 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4646 BEGIN
4647 x_krpv_rec := p_krpv_rec;
4648 RETURN(l_return_status);
4649 END Set_Attributes;
4650 BEGIN
4651 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4652 G_PKG_NAME,
4653 p_init_msg_list,
4654 l_api_version,
4655 p_api_version,
4656 '_PVT',
4657 x_return_status);
4658 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4659 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4660 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4661 RAISE OKC_API.G_EXCEPTION_ERROR;
4662 END IF;
4663 l_krpv_rec := null_out_defaults(p_krpv_rec);
4664 -- Set primary key value
4665 -- Error: Multiple columns make up the Primary Key
4666 -- Cannot assign get_seq_id
4667 -- Setting item attributes
4668 l_return_Status := Set_Attributes(
4669 l_krpv_rec, -- IN
4670 l_def_krpv_rec); -- OUT
4671 --- If any errors happen abort API
4672 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4673 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4674 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4675 RAISE OKC_API.G_EXCEPTION_ERROR;
4676 END IF;
4677 l_def_krpv_rec := fill_who_columns(l_def_krpv_rec);
4678 --- Validate all non-missing attributes (Item Level Validation)
4679 l_return_status := Validate_Attributes(l_def_krpv_rec);
4680 --- If any errors happen abort API
4681 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4682 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4683 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4684 RAISE OKC_API.G_EXCEPTION_ERROR;
4685 END IF;
4686 l_return_status := Validate_Record(l_def_krpv_rec);
4687 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4688 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4689 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4690 RAISE OKC_API.G_EXCEPTION_ERROR;
4691 END IF;
4692 -----------------------------------------
4693 -- Move VIEW record to "Child" records --
4694 -----------------------------------------
4695 migrate(l_def_krpv_rec, l_krp_rec);
4696 -----------------------------------------------
4697 -- Call the INSERT_ROW for each child record --
4698 -----------------------------------------------
4699 insert_row(
4700 p_init_msg_list,
4701 l_return_status,
4702 x_msg_count,
4703 x_msg_data,
4704 l_krp_rec,
4705 lx_krp_rec
4706 );
4707 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4708 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4709 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4710 RAISE OKC_API.G_EXCEPTION_ERROR;
4711 END IF;
4712 migrate(lx_krp_rec, l_def_krpv_rec);
4713 -- Set OUT values
4714 x_krpv_rec := l_def_krpv_rec;
4715 x_return_status := l_return_status;
4716 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4717 EXCEPTION
4718 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4719 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4720 (
4721 l_api_name,
4722 G_PKG_NAME,
4723 'OKC_API.G_RET_STS_ERROR',
4724 x_msg_count,
4725 x_msg_data,
4726 '_PVT'
4727 );
4728 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4729 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4730 (
4731 l_api_name,
4732 G_PKG_NAME,
4733 'OKC_API.G_RET_STS_UNEXP_ERROR',
4734 x_msg_count,
4735 x_msg_data,
4736 '_PVT'
4737 );
4738 WHEN OTHERS THEN
4739 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4740 (
4741 l_api_name,
4742 G_PKG_NAME,
4743 'OTHERS',
4744 x_msg_count,
4745 x_msg_data,
4746 '_PVT'
4747 );
4748 END insert_row;
4749 ----------------------------------------
4750 -- PL/SQL TBL insert_row for:KRPV_TBL --
4751 ----------------------------------------
4752 PROCEDURE insert_row(
4753 p_api_version IN NUMBER,
4754 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4755 x_return_status OUT NOCOPY VARCHAR2,
4756 x_msg_count OUT NOCOPY NUMBER,
4757 x_msg_data OUT NOCOPY VARCHAR2,
4758 p_krpv_tbl IN krpv_tbl_type,
4759 x_krpv_tbl OUT NOCOPY krpv_tbl_type,
4760 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4761
4762 l_api_version CONSTANT NUMBER := 1;
4763 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
4764 i NUMBER := 0;
4765 BEGIN
4766 OKC_API.init_msg_list(p_init_msg_list);
4767 -- Make sure PL/SQL table has records in it before passing
4768 IF (p_krpv_tbl.COUNT > 0) THEN
4769 i := p_krpv_tbl.FIRST;
4770 LOOP
4771 DECLARE
4772 l_error_rec OKC_API.ERROR_REC_TYPE;
4773 BEGIN
4774 l_error_rec.api_name := l_api_name;
4775 l_error_rec.api_package := G_PKG_NAME;
4776 l_error_rec.idx := i;
4777 insert_row (
4778 p_api_version => p_api_version,
4779 p_init_msg_list => OKC_API.G_FALSE,
4780 x_return_status => l_error_rec.error_type,
4781 x_msg_count => l_error_rec.msg_count,
4782 x_msg_data => l_error_rec.msg_data,
4783 p_krpv_rec => p_krpv_tbl(i),
4784 x_krpv_rec => x_krpv_tbl(i));
4785 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4786 l_error_rec.sqlcode := SQLCODE;
4787 load_error_tbl(l_error_rec, px_error_tbl);
4788 ELSE
4789 x_msg_count := l_error_rec.msg_count;
4790 x_msg_data := l_error_rec.msg_data;
4791 END IF;
4792 EXCEPTION
4793 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4794 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4795 l_error_rec.sqlcode := SQLCODE;
4796 load_error_tbl(l_error_rec, px_error_tbl);
4797 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4798 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4799 l_error_rec.sqlcode := SQLCODE;
4800 load_error_tbl(l_error_rec, px_error_tbl);
4801 WHEN OTHERS THEN
4802 l_error_rec.error_type := 'OTHERS';
4803 l_error_rec.sqlcode := SQLCODE;
4804 load_error_tbl(l_error_rec, px_error_tbl);
4805 END;
4806 EXIT WHEN (i = p_krpv_tbl.LAST);
4807 i := p_krpv_tbl.NEXT(i);
4808 END LOOP;
4809 END IF;
4810 -- Loop through the error_tbl to find the error with the highest severity
4811 -- and return it.
4812 x_return_status := find_highest_exception(px_error_tbl);
4813 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4814 EXCEPTION
4815 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4816 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4817 (
4818 l_api_name,
4819 G_PKG_NAME,
4820 'OKC_API.G_RET_STS_ERROR',
4821 x_msg_count,
4822 x_msg_data,
4823 '_PVT'
4824 );
4825 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4826 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4827 (
4828 l_api_name,
4829 G_PKG_NAME,
4830 'OKC_API.G_RET_STS_UNEXP_ERROR',
4831 x_msg_count,
4832 x_msg_data,
4833 '_PVT'
4834 );
4835 WHEN OTHERS THEN
4836 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4837 (
4838 l_api_name,
4839 G_PKG_NAME,
4840 'OTHERS',
4841 x_msg_count,
4842 x_msg_data,
4843 '_PVT'
4844 );
4845 END insert_row;
4846
4847 ----------------------------------------
4848 -- PL/SQL TBL insert_row for:KRPV_TBL --
4849 ----------------------------------------
4850 PROCEDURE insert_row(
4851 p_api_version IN NUMBER,
4852 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4853 x_return_status OUT NOCOPY VARCHAR2,
4854 x_msg_count OUT NOCOPY NUMBER,
4855 x_msg_data OUT NOCOPY VARCHAR2,
4856 p_krpv_tbl IN krpv_tbl_type,
4857 x_krpv_tbl OUT NOCOPY krpv_tbl_type) IS
4858
4859 l_api_version CONSTANT NUMBER := 1;
4860 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
4861 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4862 l_error_tbl OKC_API.ERROR_TBL_TYPE;
4863 BEGIN
4864 OKC_API.init_msg_list(p_init_msg_list);
4865 -- Make sure PL/SQL table has records in it before passing
4866 IF (p_krpv_tbl.COUNT > 0) THEN
4867 insert_row (
4868 p_api_version => p_api_version,
4869 p_init_msg_list => OKC_API.G_FALSE,
4870 x_return_status => x_return_status,
4871 x_msg_count => x_msg_count,
4872 x_msg_data => x_msg_data,
4873 p_krpv_tbl => p_krpv_tbl,
4874 x_krpv_tbl => x_krpv_tbl,
4875 px_error_tbl => l_error_tbl);
4876 END IF;
4877 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4878 EXCEPTION
4879 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4880 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4881 (
4882 l_api_name,
4883 G_PKG_NAME,
4884 'OKC_API.G_RET_STS_ERROR',
4885 x_msg_count,
4886 x_msg_data,
4887 '_PVT'
4888 );
4889 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4890 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4891 (
4892 l_api_name,
4893 G_PKG_NAME,
4894 'OKC_API.G_RET_STS_UNEXP_ERROR',
4895 x_msg_count,
4896 x_msg_data,
4897 '_PVT'
4898 );
4899 WHEN OTHERS THEN
4900 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4901 (
4902 l_api_name,
4903 G_PKG_NAME,
4904 'OTHERS',
4905 x_msg_count,
4906 x_msg_data,
4907 '_PVT'
4908 );
4909 END insert_row;
4910
4911 ---------------------------------------------------------------------------
4912 -- PROCEDURE lock_row
4913 ---------------------------------------------------------------------------
4914 ------------------------------------
4915 -- lock_row for:OKL_K_RATE_PARAMS --
4916 ------------------------------------
4917 PROCEDURE lock_row(
4918 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4919 x_return_status OUT NOCOPY VARCHAR2,
4920 x_msg_count OUT NOCOPY NUMBER,
4921 x_msg_data OUT NOCOPY VARCHAR2,
4922 p_krp_rec IN krp_rec_type) IS
4923
4924 E_Resource_Busy EXCEPTION;
4925 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
4926 CURSOR lock_csr (p_krp_rec IN krp_rec_type) IS
4927 SELECT *
4928 FROM OKL_K_RATE_PARAMS
4929 WHERE PARAMETER_TYPE_CODE = p_krp_rec.parameter_type_code
4930 AND EFFECTIVE_FROM_DATE = p_krp_rec.effective_from_date
4931 AND KHR_ID = p_krp_rec.khr_id
4932 FOR UPDATE NOWAIT;
4933
4934 l_api_version CONSTANT NUMBER := 1;
4935 l_api_name CONSTANT VARCHAR2(30) := 'B_lock_row';
4936 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4937 l_lock_var lock_csr%ROWTYPE;
4938 l_row_notfound BOOLEAN := FALSE;
4939 lc_row_notfound BOOLEAN := FALSE;
4940 BEGIN
4941 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4942 p_init_msg_list,
4943 '_PVT',
4944 x_return_status);
4945 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4946 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4947 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4948 RAISE OKC_API.G_EXCEPTION_ERROR;
4949 END IF;
4950 BEGIN
4951 OPEN lock_csr(p_krp_rec);
4952 FETCH lock_csr INTO l_lock_var;
4953 l_row_notfound := lock_csr%NOTFOUND;
4954 CLOSE lock_csr;
4955 EXCEPTION
4956 WHEN E_Resource_Busy THEN
4957 IF (lock_csr%ISOPEN) THEN
4958 CLOSE lock_csr;
4959 END IF;
4960 OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
4961 RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
4962 END;
4963
4964 IF ( l_row_notfound ) THEN
4965 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
4966 RAISE OKC_API.G_EXCEPTION_ERROR;
4967 ELSE
4968 IF (l_lock_var.khr_id <> p_krp_rec.khr_id) THEN
4969 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4970 RAISE OKC_API.G_EXCEPTION_ERROR;
4971 END IF;
4972 IF (l_lock_var.parameter_type_code <> p_krp_rec.parameter_type_code) THEN
4973 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4974 RAISE OKC_API.G_EXCEPTION_ERROR;
4975 END IF;
4976 IF (l_lock_var.effective_from_date <> p_krp_rec.effective_from_date) THEN
4977 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4978 RAISE OKC_API.G_EXCEPTION_ERROR;
4979 END IF;
4980 IF (l_lock_var.effective_to_date <> p_krp_rec.effective_to_date) THEN
4981 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4982 RAISE OKC_API.G_EXCEPTION_ERROR;
4983 END IF;
4984 IF (l_lock_var.interest_index_id <> p_krp_rec.interest_index_id) THEN
4985 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4986 RAISE OKC_API.G_EXCEPTION_ERROR;
4987 END IF;
4988 IF (l_lock_var.base_rate <> p_krp_rec.base_rate) THEN
4989 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4990 RAISE OKC_API.G_EXCEPTION_ERROR;
4991 END IF;
4992 IF (l_lock_var.interest_start_date <> p_krp_rec.interest_start_date) THEN
4993 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4994 RAISE OKC_API.G_EXCEPTION_ERROR;
4995 END IF;
4996 IF (l_lock_var.adder_rate <> p_krp_rec.adder_rate) THEN
4997 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4998 RAISE OKC_API.G_EXCEPTION_ERROR;
4999 END IF;
5000 IF (l_lock_var.maximum_rate <> p_krp_rec.maximum_rate) THEN
5001 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5002 RAISE OKC_API.G_EXCEPTION_ERROR;
5003 END IF;
5004 IF (l_lock_var.minimum_rate <> p_krp_rec.minimum_rate) THEN
5005 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5006 RAISE OKC_API.G_EXCEPTION_ERROR;
5007 END IF;
5008 IF (l_lock_var.principal_basis_code <> p_krp_rec.principal_basis_code) THEN
5009 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5010 RAISE OKC_API.G_EXCEPTION_ERROR;
5011 END IF;
5012 IF (l_lock_var.days_in_a_month_code <> p_krp_rec.days_in_a_month_code) THEN
5013 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5014 RAISE OKC_API.G_EXCEPTION_ERROR;
5015 END IF;
5016 IF (l_lock_var.days_in_a_year_code <> p_krp_rec.days_in_a_year_code) THEN
5017 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5018 RAISE OKC_API.G_EXCEPTION_ERROR;
5019 END IF;
5020 IF (l_lock_var.interest_basis_code <> p_krp_rec.interest_basis_code) THEN
5021 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5022 RAISE OKC_API.G_EXCEPTION_ERROR;
5023 END IF;
5024 IF (l_lock_var.rate_delay_code <> p_krp_rec.rate_delay_code) THEN
5025 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5026 RAISE OKC_API.G_EXCEPTION_ERROR;
5027 END IF;
5028 IF (l_lock_var.rate_delay_frequency <> p_krp_rec.rate_delay_frequency) THEN
5029 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5030 RAISE OKC_API.G_EXCEPTION_ERROR;
5031 END IF;
5032 IF (l_lock_var.compounding_frequency_code <> p_krp_rec.compounding_frequency_code) THEN
5033 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5034 RAISE OKC_API.G_EXCEPTION_ERROR;
5035 END IF;
5036 IF (l_lock_var.calculation_formula_id <> p_krp_rec.calculation_formula_id) THEN
5037 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5038 RAISE OKC_API.G_EXCEPTION_ERROR;
5039 END IF;
5040 IF (l_lock_var.catchup_basis_code <> p_krp_rec.catchup_basis_code) THEN
5041 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5042 RAISE OKC_API.G_EXCEPTION_ERROR;
5043 END IF;
5044 IF (l_lock_var.catchup_start_date <> p_krp_rec.catchup_start_date) THEN
5045 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5046 RAISE OKC_API.G_EXCEPTION_ERROR;
5047 END IF;
5048 IF (l_lock_var.catchup_settlement_code <> p_krp_rec.catchup_settlement_code) THEN
5049 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5050 RAISE OKC_API.G_EXCEPTION_ERROR;
5051 END IF;
5052 IF (l_lock_var.rate_change_start_date <> p_krp_rec.rate_change_start_date) THEN
5053 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5054 RAISE OKC_API.G_EXCEPTION_ERROR;
5055 END IF;
5056 IF (l_lock_var.rate_change_frequency_code <> p_krp_rec.rate_change_frequency_code) THEN
5057 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5058 RAISE OKC_API.G_EXCEPTION_ERROR;
5059 END IF;
5060 IF (l_lock_var.rate_change_value <> p_krp_rec.rate_change_value) THEN
5061 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5062 RAISE OKC_API.G_EXCEPTION_ERROR;
5063 END IF;
5064 IF (l_lock_var.conversion_option_code <> p_krp_rec.conversion_option_code) THEN
5065 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5066 RAISE OKC_API.G_EXCEPTION_ERROR;
5067 END IF;
5068 IF (l_lock_var.next_conversion_date <> p_krp_rec.next_conversion_date) THEN
5069 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5070 RAISE OKC_API.G_EXCEPTION_ERROR;
5071 END IF;
5072 IF (l_lock_var.conversion_type_code <> p_krp_rec.conversion_type_code) THEN
5073 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5074 RAISE OKC_API.G_EXCEPTION_ERROR;
5075 END IF;
5076 IF (l_lock_var.attribute_category <> p_krp_rec.attribute_category) THEN
5077 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5078 RAISE OKC_API.G_EXCEPTION_ERROR;
5079 END IF;
5080 IF (l_lock_var.attribute1 <> p_krp_rec.attribute1) THEN
5081 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5082 RAISE OKC_API.G_EXCEPTION_ERROR;
5083 END IF;
5084 IF (l_lock_var.attribute2 <> p_krp_rec.attribute2) THEN
5085 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5086 RAISE OKC_API.G_EXCEPTION_ERROR;
5087 END IF;
5088 IF (l_lock_var.attribute3 <> p_krp_rec.attribute3) THEN
5089 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5090 RAISE OKC_API.G_EXCEPTION_ERROR;
5091 END IF;
5092 IF (l_lock_var.attribute4 <> p_krp_rec.attribute4) THEN
5093 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5094 RAISE OKC_API.G_EXCEPTION_ERROR;
5095 END IF;
5096 IF (l_lock_var.attribute5 <> p_krp_rec.attribute5) THEN
5097 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5098 RAISE OKC_API.G_EXCEPTION_ERROR;
5099 END IF;
5100 IF (l_lock_var.attribute6 <> p_krp_rec.attribute6) THEN
5101 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5102 RAISE OKC_API.G_EXCEPTION_ERROR;
5103 END IF;
5104 IF (l_lock_var.attribute7 <> p_krp_rec.attribute7) THEN
5105 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5106 RAISE OKC_API.G_EXCEPTION_ERROR;
5107 END IF;
5108 IF (l_lock_var.attribute8 <> p_krp_rec.attribute8) THEN
5109 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5110 RAISE OKC_API.G_EXCEPTION_ERROR;
5111 END IF;
5112 IF (l_lock_var.attribute9 <> p_krp_rec.attribute9) THEN
5113 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5114 RAISE OKC_API.G_EXCEPTION_ERROR;
5115 END IF;
5116 IF (l_lock_var.attribute10 <> p_krp_rec.attribute10) THEN
5117 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5118 RAISE OKC_API.G_EXCEPTION_ERROR;
5119 END IF;
5120 IF (l_lock_var.attribute11 <> p_krp_rec.attribute11) THEN
5121 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5122 RAISE OKC_API.G_EXCEPTION_ERROR;
5123 END IF;
5124 IF (l_lock_var.attribute12 <> p_krp_rec.attribute12) THEN
5125 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5126 RAISE OKC_API.G_EXCEPTION_ERROR;
5127 END IF;
5128 IF (l_lock_var.attribute13 <> p_krp_rec.attribute13) THEN
5129 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5130 RAISE OKC_API.G_EXCEPTION_ERROR;
5131 END IF;
5132 IF (l_lock_var.attribute14 <> p_krp_rec.attribute14) THEN
5133 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5134 RAISE OKC_API.G_EXCEPTION_ERROR;
5135 END IF;
5136 IF (l_lock_var.attribute15 <> p_krp_rec.attribute15) THEN
5137 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5138 RAISE OKC_API.G_EXCEPTION_ERROR;
5139 END IF;
5140 IF (l_lock_var.created_by <> p_krp_rec.created_by) THEN
5141 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5142 RAISE OKC_API.G_EXCEPTION_ERROR;
5143 END IF;
5144 IF (l_lock_var.creation_date <> p_krp_rec.creation_date) THEN
5145 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5146 RAISE OKC_API.G_EXCEPTION_ERROR;
5147 END IF;
5148 IF (l_lock_var.last_updated_by <> p_krp_rec.last_updated_by) THEN
5149 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5150 RAISE OKC_API.G_EXCEPTION_ERROR;
5151 END IF;
5152 IF (l_lock_var.last_update_date <> p_krp_rec.last_update_date) THEN
5153 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5154 RAISE OKC_API.G_EXCEPTION_ERROR;
5155 END IF;
5156 IF (l_lock_var.last_update_login <> p_krp_rec.last_update_login) THEN
5157 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5158 RAISE OKC_API.G_EXCEPTION_ERROR;
5159 END IF;
5160 IF (l_lock_var.catchup_frequency_code <> p_krp_rec.catchup_frequency_code) THEN
5161 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5162 RAISE OKC_API.G_EXCEPTION_ERROR;
5163 END IF;
5164 END IF;
5165 x_return_status := l_return_status;
5166 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5167 EXCEPTION
5168 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5169 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5170 (
5171 l_api_name,
5172 G_PKG_NAME,
5173 'OKC_API.G_RET_STS_ERROR',
5174 x_msg_count,
5175 x_msg_data,
5176 '_PVT'
5177 );
5178 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5179 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5180 (
5181 l_api_name,
5182 G_PKG_NAME,
5183 'OKC_API.G_RET_STS_UNEXP_ERROR',
5184 x_msg_count,
5185 x_msg_data,
5186 '_PVT'
5187 );
5188 WHEN OTHERS THEN
5189 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5190 (
5191 l_api_name,
5192 G_PKG_NAME,
5193 'OTHERS',
5194 x_msg_count,
5195 x_msg_data,
5196 '_PVT'
5197 );
5198 END lock_row;
5199 ---------------------------------------
5200 -- lock_row for: OKL_K_RATE_PARAMS_V --
5201 ---------------------------------------
5202 PROCEDURE lock_row(
5203 p_api_version IN NUMBER,
5204 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5205 x_return_status OUT NOCOPY VARCHAR2,
5206 x_msg_count OUT NOCOPY NUMBER,
5207 x_msg_data OUT NOCOPY VARCHAR2,
5208 p_krpv_rec IN krpv_rec_type) IS
5209
5210 l_api_version CONSTANT NUMBER := 1;
5211 l_api_name CONSTANT VARCHAR2(30) := 'V_lock_row';
5212 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5213 l_krp_rec krp_rec_type;
5214 BEGIN
5215 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5216 G_PKG_NAME,
5217 p_init_msg_list,
5218 l_api_version,
5219 p_api_version,
5220 '_PVT',
5221 x_return_status);
5222 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5223 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5224 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5225 RAISE OKC_API.G_EXCEPTION_ERROR;
5226 END IF;
5227 -----------------------------------------
5228 -- Move VIEW record to "Child" records --
5229 -----------------------------------------
5230 migrate(p_krpv_rec, l_krp_rec);
5231 ---------------------------------------------
5232 -- Call the LOCK_ROW for each child record --
5233 ---------------------------------------------
5234 lock_row(
5235 p_init_msg_list,
5236 l_return_status,
5237 x_msg_count,
5238 x_msg_data,
5239 l_krp_rec
5240 );
5241 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5242 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5243 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5244 RAISE OKC_API.G_EXCEPTION_ERROR;
5245 END IF;
5246 x_return_status := l_return_status;
5247 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5248 EXCEPTION
5249 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5250 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5251 (
5252 l_api_name,
5253 G_PKG_NAME,
5254 'OKC_API.G_RET_STS_ERROR',
5255 x_msg_count,
5256 x_msg_data,
5257 '_PVT'
5258 );
5259 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5260 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5261 (
5262 l_api_name,
5263 G_PKG_NAME,
5264 'OKC_API.G_RET_STS_UNEXP_ERROR',
5265 x_msg_count,
5266 x_msg_data,
5267 '_PVT'
5268 );
5269 WHEN OTHERS THEN
5270 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5271 (
5272 l_api_name,
5273 G_PKG_NAME,
5274 'OTHERS',
5275 x_msg_count,
5276 x_msg_data,
5277 '_PVT'
5278 );
5279 END lock_row;
5280 --------------------------------------
5281 -- PL/SQL TBL lock_row for:KRPV_TBL --
5282 --------------------------------------
5283 PROCEDURE lock_row(
5284 p_api_version IN NUMBER,
5285 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5286 x_return_status OUT NOCOPY VARCHAR2,
5287 x_msg_count OUT NOCOPY NUMBER,
5288 x_msg_data OUT NOCOPY VARCHAR2,
5289 p_krpv_tbl IN krpv_tbl_type,
5290 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
5291
5292 l_api_version CONSTANT NUMBER := 1;
5293 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
5294 i NUMBER := 0;
5295 BEGIN
5296 OKC_API.init_msg_list(p_init_msg_list);
5297 -- Make sure PL/SQL table has recrods in it before passing
5298 IF (p_krpv_tbl.COUNT > 0) THEN
5299 i := p_krpv_tbl.FIRST;
5300 LOOP
5301 DECLARE
5302 l_error_rec OKC_API.ERROR_REC_TYPE;
5303 BEGIN
5304 l_error_rec.api_name := l_api_name;
5305 l_error_rec.api_package := G_PKG_NAME;
5306 l_error_rec.idx := i;
5307 lock_row(
5308 p_api_version => p_api_version,
5309 p_init_msg_list => OKC_API.G_FALSE,
5310 x_return_status => l_error_rec.error_type,
5311 x_msg_count => l_error_rec.msg_count,
5312 x_msg_data => l_error_rec.msg_data,
5313 p_krpv_rec => p_krpv_tbl(i));
5314 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
5315 l_error_rec.sqlcode := SQLCODE;
5316 load_error_tbl(l_error_rec, px_error_tbl);
5317 ELSE
5318 x_msg_count := l_error_rec.msg_count;
5319 x_msg_data := l_error_rec.msg_data;
5320 END IF;
5321 EXCEPTION
5322 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5323 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
5324 l_error_rec.sqlcode := SQLCODE;
5325 load_error_tbl(l_error_rec, px_error_tbl);
5326 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5327 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
5328 l_error_rec.sqlcode := SQLCODE;
5329 load_error_tbl(l_error_rec, px_error_tbl);
5330 WHEN OTHERS THEN
5331 l_error_rec.error_type := 'OTHERS';
5332 l_error_rec.sqlcode := SQLCODE;
5333 load_error_tbl(l_error_rec, px_error_tbl);
5334 END;
5335 EXIT WHEN (i = p_krpv_tbl.LAST);
5336 i := p_krpv_tbl.NEXT(i);
5337 END LOOP;
5338 END IF;
5339 -- Loop through the error_tbl to find the error with the highest severity
5340 -- and return it.
5341 x_return_status := find_highest_exception(px_error_tbl);
5342 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5343 EXCEPTION
5344 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5345 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5346 (
5347 l_api_name,
5348 G_PKG_NAME,
5349 'OKC_API.G_RET_STS_ERROR',
5350 x_msg_count,
5351 x_msg_data,
5352 '_PVT'
5353 );
5354 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5355 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5356 (
5357 l_api_name,
5358 G_PKG_NAME,
5359 'OKC_API.G_RET_STS_UNEXP_ERROR',
5360 x_msg_count,
5361 x_msg_data,
5362 '_PVT'
5363 );
5364 WHEN OTHERS THEN
5365 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5366 (
5367 l_api_name,
5368 G_PKG_NAME,
5369 'OTHERS',
5370 x_msg_count,
5371 x_msg_data,
5372 '_PVT'
5373 );
5374 END lock_row;
5375 --------------------------------------
5376 -- PL/SQL TBL lock_row for:KRPV_TBL --
5377 --------------------------------------
5378 PROCEDURE lock_row(
5379 p_api_version IN NUMBER,
5380 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5381 x_return_status OUT NOCOPY VARCHAR2,
5382 x_msg_count OUT NOCOPY NUMBER,
5383 x_msg_data OUT NOCOPY VARCHAR2,
5384 p_krpv_tbl IN krpv_tbl_type) IS
5385
5386 l_api_version CONSTANT NUMBER := 1;
5387 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
5388 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5389 l_error_tbl OKC_API.ERROR_TBL_TYPE;
5390 BEGIN
5391 OKC_API.init_msg_list(p_init_msg_list);
5392 -- Make sure PL/SQL table has recrods in it before passing
5393 IF (p_krpv_tbl.COUNT > 0) THEN
5394 lock_row(
5395 p_api_version => p_api_version,
5396 p_init_msg_list => OKC_API.G_FALSE,
5397 x_return_status => x_return_status,
5398 x_msg_count => x_msg_count,
5399 x_msg_data => x_msg_data,
5400 p_krpv_tbl => p_krpv_tbl,
5401 px_error_tbl => l_error_tbl);
5402 END IF;
5403 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5404 EXCEPTION
5405 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5406 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5407 (
5408 l_api_name,
5409 G_PKG_NAME,
5410 'OKC_API.G_RET_STS_ERROR',
5411 x_msg_count,
5412 x_msg_data,
5413 '_PVT'
5414 );
5415 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5416 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5417 (
5418 l_api_name,
5419 G_PKG_NAME,
5420 'OKC_API.G_RET_STS_UNEXP_ERROR',
5421 x_msg_count,
5422 x_msg_data,
5423 '_PVT'
5424 );
5425 WHEN OTHERS THEN
5426 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5427 (
5428 l_api_name,
5429 G_PKG_NAME,
5430 'OTHERS',
5431 x_msg_count,
5432 x_msg_data,
5433 '_PVT'
5434 );
5435 END lock_row;
5436 ---------------------------------------------------------------------------
5437 -- PROCEDURE update_row
5438 ---------------------------------------------------------------------------
5439 --------------------------------------
5440 -- update_row for:OKL_K_RATE_PARAMS --
5441 --------------------------------------
5442 PROCEDURE update_row(
5443 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5444 x_return_status OUT NOCOPY VARCHAR2,
5445 x_msg_count OUT NOCOPY NUMBER,
5446 x_msg_data OUT NOCOPY VARCHAR2,
5447 p_krp_rec IN krp_rec_type,
5448 x_krp_rec OUT NOCOPY krp_rec_type) IS
5449
5450 l_api_version CONSTANT NUMBER := 1;
5451 l_api_name CONSTANT VARCHAR2(30) := 'B_update_row';
5452 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5453 l_krp_rec krp_rec_type := p_krp_rec;
5454 l_def_krp_rec krp_rec_type;
5455 l_row_notfound BOOLEAN := TRUE;
5456 ----------------------------------
5457 -- FUNCTION populate_new_record --
5458 ----------------------------------
5459 FUNCTION populate_new_record (
5460 p_krp_rec IN krp_rec_type,
5461 x_krp_rec OUT NOCOPY krp_rec_type
5462 ) RETURN VARCHAR2 IS
5463 l_krp_rec krp_rec_type;
5464 l_row_notfound BOOLEAN := TRUE;
5465 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5466 BEGIN
5467 x_krp_rec := p_krp_rec;
5468 -- Get current database values
5469 l_krp_rec := get_rec(p_krp_rec, l_return_status);
5470 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
5471 IF (x_krp_rec.khr_id = OKC_API.G_MISS_NUM)
5472 THEN
5473 x_krp_rec.khr_id := l_krp_rec.khr_id;
5474 END IF;
5475 IF (x_krp_rec.parameter_type_code = OKC_API.G_MISS_CHAR)
5476 THEN
5477 x_krp_rec.parameter_type_code := l_krp_rec.parameter_type_code;
5478 END IF;
5479 IF (x_krp_rec.effective_from_date = OKC_API.G_MISS_DATE)
5480 THEN
5481 x_krp_rec.effective_from_date := l_krp_rec.effective_from_date;
5482 END IF;
5483 IF (x_krp_rec.effective_to_date = OKC_API.G_MISS_DATE)
5484 THEN
5485 x_krp_rec.effective_to_date := l_krp_rec.effective_to_date;
5486 END IF;
5487 IF (x_krp_rec.interest_index_id = OKC_API.G_MISS_NUM)
5488 THEN
5489 x_krp_rec.interest_index_id := l_krp_rec.interest_index_id;
5490 END IF;
5491 IF (x_krp_rec.base_rate = OKC_API.G_MISS_NUM)
5492 THEN
5493 x_krp_rec.base_rate := l_krp_rec.base_rate;
5494 END IF;
5495 IF (x_krp_rec.interest_start_date = OKC_API.G_MISS_DATE)
5496 THEN
5497 x_krp_rec.interest_start_date := l_krp_rec.interest_start_date;
5498 END IF;
5499 IF (x_krp_rec.adder_rate = OKC_API.G_MISS_NUM)
5500 THEN
5501 x_krp_rec.adder_rate := l_krp_rec.adder_rate;
5502 END IF;
5503 IF (x_krp_rec.maximum_rate = OKC_API.G_MISS_NUM)
5504 THEN
5505 x_krp_rec.maximum_rate := l_krp_rec.maximum_rate;
5506 END IF;
5507 IF (x_krp_rec.minimum_rate = OKC_API.G_MISS_NUM)
5508 THEN
5509 x_krp_rec.minimum_rate := l_krp_rec.minimum_rate;
5510 END IF;
5511 IF (x_krp_rec.principal_basis_code = OKC_API.G_MISS_CHAR)
5512 THEN
5513 x_krp_rec.principal_basis_code := l_krp_rec.principal_basis_code;
5514 END IF;
5515 IF (x_krp_rec.days_in_a_month_code = OKC_API.G_MISS_CHAR)
5516 THEN
5517 x_krp_rec.days_in_a_month_code := l_krp_rec.days_in_a_month_code;
5518 END IF;
5519 IF (x_krp_rec.days_in_a_year_code = OKC_API.G_MISS_CHAR)
5520 THEN
5521 x_krp_rec.days_in_a_year_code := l_krp_rec.days_in_a_year_code;
5522 END IF;
5523 IF (x_krp_rec.interest_basis_code = OKC_API.G_MISS_CHAR)
5524 THEN
5525 x_krp_rec.interest_basis_code := l_krp_rec.interest_basis_code;
5526 END IF;
5527 IF (x_krp_rec.rate_delay_code = OKC_API.G_MISS_CHAR)
5528 THEN
5529 x_krp_rec.rate_delay_code := l_krp_rec.rate_delay_code;
5530 END IF;
5531 IF (x_krp_rec.rate_delay_frequency = OKC_API.G_MISS_NUM)
5532 THEN
5533 x_krp_rec.rate_delay_frequency := l_krp_rec.rate_delay_frequency;
5534 END IF;
5535 IF (x_krp_rec.compounding_frequency_code = OKC_API.G_MISS_CHAR)
5536 THEN
5537 x_krp_rec.compounding_frequency_code := l_krp_rec.compounding_frequency_code;
5538 END IF;
5539 IF (x_krp_rec.calculation_formula_id = OKC_API.G_MISS_NUM)
5540 THEN
5541 x_krp_rec.calculation_formula_id := l_krp_rec.calculation_formula_id;
5542 END IF;
5543 IF (x_krp_rec.catchup_basis_code = OKC_API.G_MISS_CHAR)
5544 THEN
5545 x_krp_rec.catchup_basis_code := l_krp_rec.catchup_basis_code;
5546 END IF;
5547 IF (x_krp_rec.catchup_start_date = OKC_API.G_MISS_DATE)
5548 THEN
5549 x_krp_rec.catchup_start_date := l_krp_rec.catchup_start_date;
5550 END IF;
5551 IF (x_krp_rec.catchup_settlement_code = OKC_API.G_MISS_CHAR)
5552 THEN
5553 x_krp_rec.catchup_settlement_code := l_krp_rec.catchup_settlement_code;
5554 END IF;
5555 IF (x_krp_rec.rate_change_start_date = OKC_API.G_MISS_DATE)
5556 THEN
5557 x_krp_rec.rate_change_start_date := l_krp_rec.rate_change_start_date;
5558 END IF;
5559 IF (x_krp_rec.rate_change_frequency_code = OKC_API.G_MISS_CHAR)
5560 THEN
5561 x_krp_rec.rate_change_frequency_code := l_krp_rec.rate_change_frequency_code;
5562 END IF;
5563 IF (x_krp_rec.rate_change_value = OKC_API.G_MISS_NUM)
5564 THEN
5565 x_krp_rec.rate_change_value := l_krp_rec.rate_change_value;
5566 END IF;
5567 IF (x_krp_rec.conversion_option_code = OKC_API.G_MISS_CHAR)
5568 THEN
5569 x_krp_rec.conversion_option_code := l_krp_rec.conversion_option_code;
5570 END IF;
5571 IF (x_krp_rec.next_conversion_date = OKC_API.G_MISS_DATE)
5572 THEN
5573 x_krp_rec.next_conversion_date := l_krp_rec.next_conversion_date;
5574 END IF;
5575 IF (x_krp_rec.conversion_type_code = OKC_API.G_MISS_CHAR)
5576 THEN
5577 x_krp_rec.conversion_type_code := l_krp_rec.conversion_type_code;
5578 END IF;
5579 IF (x_krp_rec.attribute_category = OKC_API.G_MISS_CHAR)
5580 THEN
5581 x_krp_rec.attribute_category := l_krp_rec.attribute_category;
5582 END IF;
5583 IF (x_krp_rec.attribute1 = OKC_API.G_MISS_CHAR)
5584 THEN
5585 x_krp_rec.attribute1 := l_krp_rec.attribute1;
5586 END IF;
5587 IF (x_krp_rec.attribute2 = OKC_API.G_MISS_CHAR)
5588 THEN
5589 x_krp_rec.attribute2 := l_krp_rec.attribute2;
5590 END IF;
5591 IF (x_krp_rec.attribute3 = OKC_API.G_MISS_CHAR)
5592 THEN
5593 x_krp_rec.attribute3 := l_krp_rec.attribute3;
5594 END IF;
5595 IF (x_krp_rec.attribute4 = OKC_API.G_MISS_CHAR)
5596 THEN
5597 x_krp_rec.attribute4 := l_krp_rec.attribute4;
5598 END IF;
5599 IF (x_krp_rec.attribute5 = OKC_API.G_MISS_CHAR)
5600 THEN
5601 x_krp_rec.attribute5 := l_krp_rec.attribute5;
5602 END IF;
5603 IF (x_krp_rec.attribute6 = OKC_API.G_MISS_CHAR)
5604 THEN
5605 x_krp_rec.attribute6 := l_krp_rec.attribute6;
5606 END IF;
5607 IF (x_krp_rec.attribute7 = OKC_API.G_MISS_CHAR)
5608 THEN
5609 x_krp_rec.attribute7 := l_krp_rec.attribute7;
5610 END IF;
5611 IF (x_krp_rec.attribute8 = OKC_API.G_MISS_CHAR)
5612 THEN
5613 x_krp_rec.attribute8 := l_krp_rec.attribute8;
5614 END IF;
5615 IF (x_krp_rec.attribute9 = OKC_API.G_MISS_CHAR)
5616 THEN
5617 x_krp_rec.attribute9 := l_krp_rec.attribute9;
5618 END IF;
5619 IF (x_krp_rec.attribute10 = OKC_API.G_MISS_CHAR)
5620 THEN
5621 x_krp_rec.attribute10 := l_krp_rec.attribute10;
5622 END IF;
5623 IF (x_krp_rec.attribute11 = OKC_API.G_MISS_CHAR)
5624 THEN
5625 x_krp_rec.attribute11 := l_krp_rec.attribute11;
5626 END IF;
5627 IF (x_krp_rec.attribute12 = OKC_API.G_MISS_CHAR)
5628 THEN
5629 x_krp_rec.attribute12 := l_krp_rec.attribute12;
5630 END IF;
5631 IF (x_krp_rec.attribute13 = OKC_API.G_MISS_CHAR)
5632 THEN
5633 x_krp_rec.attribute13 := l_krp_rec.attribute13;
5634 END IF;
5635 IF (x_krp_rec.attribute14 = OKC_API.G_MISS_CHAR)
5636 THEN
5637 x_krp_rec.attribute14 := l_krp_rec.attribute14;
5638 END IF;
5639 IF (x_krp_rec.attribute15 = OKC_API.G_MISS_CHAR)
5640 THEN
5641 x_krp_rec.attribute15 := l_krp_rec.attribute15;
5642 END IF;
5643 IF (x_krp_rec.created_by = OKC_API.G_MISS_NUM)
5644 THEN
5645 x_krp_rec.created_by := l_krp_rec.created_by;
5646 END IF;
5647 IF (x_krp_rec.creation_date = OKC_API.G_MISS_DATE)
5648 THEN
5649 x_krp_rec.creation_date := l_krp_rec.creation_date;
5650 END IF;
5651 IF (x_krp_rec.last_updated_by = OKC_API.G_MISS_NUM)
5652 THEN
5653 x_krp_rec.last_updated_by := l_krp_rec.last_updated_by;
5654 END IF;
5655 IF (x_krp_rec.last_update_date = OKC_API.G_MISS_DATE)
5656 THEN
5657 x_krp_rec.last_update_date := l_krp_rec.last_update_date;
5658 END IF;
5659 IF (x_krp_rec.last_update_login = OKC_API.G_MISS_NUM)
5660 THEN
5661 x_krp_rec.last_update_login := l_krp_rec.last_update_login;
5662 END IF;
5663 IF (x_krp_rec.catchup_frequency_code = OKC_API.G_MISS_CHAR)
5664 THEN
5665 x_krp_rec.catchup_frequency_code := l_krp_rec.catchup_frequency_code;
5666 END IF;
5667 END IF;
5668 RETURN(l_return_status);
5669 END populate_new_record;
5670 ------------------------------------------
5671 -- Set_Attributes for:OKL_K_RATE_PARAMS --
5672 ------------------------------------------
5673 FUNCTION Set_Attributes (
5674 p_krp_rec IN krp_rec_type,
5675 x_krp_rec OUT NOCOPY krp_rec_type
5676 ) RETURN VARCHAR2 IS
5677 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5678 BEGIN
5679 x_krp_rec := p_krp_rec;
5680 RETURN(l_return_status);
5681 END Set_Attributes;
5682 BEGIN
5683 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5684 p_init_msg_list,
5685 '_PVT',
5686 x_return_status);
5687 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5688 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5689 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5690 RAISE OKC_API.G_EXCEPTION_ERROR;
5691 END IF;
5692 --- Setting item attributes
5693 l_return_status := Set_Attributes(
5694 p_krp_rec, -- IN
5695 l_krp_rec); -- OUT
5696 --- If any errors happen abort API
5697 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5698 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5699 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5700 RAISE OKC_API.G_EXCEPTION_ERROR;
5701 END IF;
5702 l_return_status := populate_new_record(l_krp_rec, l_def_krp_rec);
5703 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5704 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5705 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5706 RAISE OKC_API.G_EXCEPTION_ERROR;
5707 END IF;
5708 UPDATE OKL_K_RATE_PARAMS
5709 SET EFFECTIVE_TO_DATE = l_def_krp_rec.effective_to_date,
5710 INTEREST_INDEX_ID = l_def_krp_rec.interest_index_id,
5711 BASE_RATE = l_def_krp_rec.base_rate,
5712 INTEREST_START_DATE = l_def_krp_rec.interest_start_date,
5713 ADDER_RATE = l_def_krp_rec.adder_rate,
5714 MAXIMUM_RATE = l_def_krp_rec.maximum_rate,
5715 MINIMUM_RATE = l_def_krp_rec.minimum_rate,
5716 PRINCIPAL_BASIS_CODE = l_def_krp_rec.principal_basis_code,
5717 DAYS_IN_A_MONTH_CODE = l_def_krp_rec.days_in_a_month_code,
5718 DAYS_IN_A_YEAR_CODE = l_def_krp_rec.days_in_a_year_code,
5719 INTEREST_BASIS_CODE = l_def_krp_rec.interest_basis_code,
5720 RATE_DELAY_CODE = l_def_krp_rec.rate_delay_code,
5721 RATE_DELAY_FREQUENCY = l_def_krp_rec.rate_delay_frequency,
5722 COMPOUNDING_FREQUENCY_CODE = l_def_krp_rec.compounding_frequency_code,
5723 CALCULATION_FORMULA_ID = l_def_krp_rec.calculation_formula_id,
5724 CATCHUP_BASIS_CODE = l_def_krp_rec.catchup_basis_code,
5725 CATCHUP_START_DATE = l_def_krp_rec.catchup_start_date,
5726 CATCHUP_SETTLEMENT_CODE = l_def_krp_rec.catchup_settlement_code,
5727 RATE_CHANGE_START_DATE = l_def_krp_rec.rate_change_start_date,
5728 RATE_CHANGE_FREQUENCY_CODE = l_def_krp_rec.rate_change_frequency_code,
5729 RATE_CHANGE_VALUE = l_def_krp_rec.rate_change_value,
5730 CONVERSION_OPTION_CODE = l_def_krp_rec.conversion_option_code,
5731 NEXT_CONVERSION_DATE = l_def_krp_rec.next_conversion_date,
5732 CONVERSION_TYPE_CODE = l_def_krp_rec.conversion_type_code,
5733 ATTRIBUTE_CATEGORY = l_def_krp_rec.attribute_category,
5734 ATTRIBUTE1 = l_def_krp_rec.attribute1,
5735 ATTRIBUTE2 = l_def_krp_rec.attribute2,
5736 ATTRIBUTE3 = l_def_krp_rec.attribute3,
5737 ATTRIBUTE4 = l_def_krp_rec.attribute4,
5738 ATTRIBUTE5 = l_def_krp_rec.attribute5,
5739 ATTRIBUTE6 = l_def_krp_rec.attribute6,
5740 ATTRIBUTE7 = l_def_krp_rec.attribute7,
5741 ATTRIBUTE8 = l_def_krp_rec.attribute8,
5742 ATTRIBUTE9 = l_def_krp_rec.attribute9,
5743 ATTRIBUTE10 = l_def_krp_rec.attribute10,
5744 ATTRIBUTE11 = l_def_krp_rec.attribute11,
5745 ATTRIBUTE12 = l_def_krp_rec.attribute12,
5746 ATTRIBUTE13 = l_def_krp_rec.attribute13,
5747 ATTRIBUTE14 = l_def_krp_rec.attribute14,
5748 ATTRIBUTE15 = l_def_krp_rec.attribute15,
5749 CREATED_BY = l_def_krp_rec.created_by,
5750 CREATION_DATE = l_def_krp_rec.creation_date,
5751 LAST_UPDATED_BY = l_def_krp_rec.last_updated_by,
5752 LAST_UPDATE_DATE = l_def_krp_rec.last_update_date,
5753 LAST_UPDATE_LOGIN = l_def_krp_rec.last_update_login,
5754 CATCHUP_FREQUENCY_CODE = l_def_krp_rec.catchup_frequency_code
5755 WHERE PARAMETER_TYPE_CODE = l_def_krp_rec.parameter_type_code AND EFFECTIVE_FROM_DATE = l_def_krp_rec.effective_from_date AND KHR_ID = l_def_krp_rec.khr_id;
5756
5757 x_krp_rec := l_krp_rec;
5758 x_return_status := l_return_status;
5759 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5760 EXCEPTION
5761 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5762 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5763 (
5764 l_api_name,
5765 G_PKG_NAME,
5766 'OKC_API.G_RET_STS_ERROR',
5767 x_msg_count,
5768 x_msg_data,
5769 '_PVT'
5770 );
5771 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5772 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5773 (
5774 l_api_name,
5775 G_PKG_NAME,
5776 'OKC_API.G_RET_STS_UNEXP_ERROR',
5777 x_msg_count,
5778 x_msg_data,
5779 '_PVT'
5780 );
5781 WHEN OTHERS THEN
5782 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5783 (
5784 l_api_name,
5785 G_PKG_NAME,
5786 'OTHERS',
5787 x_msg_count,
5788 x_msg_data,
5789 '_PVT'
5790 );
5791 END update_row;
5792 ----------------------------------------
5793 -- update_row for:OKL_K_RATE_PARAMS_V --
5794 ----------------------------------------
5795 PROCEDURE update_row(
5796 p_api_version IN NUMBER,
5797 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5798 x_return_status OUT NOCOPY VARCHAR2,
5799 x_msg_count OUT NOCOPY NUMBER,
5800 x_msg_data OUT NOCOPY VARCHAR2,
5801 p_krpv_rec IN krpv_rec_type,
5802 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
5803
5804 l_api_version CONSTANT NUMBER := 1;
5805 l_api_name CONSTANT VARCHAR2(30) := 'V_update_row';
5806 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5807 l_krpv_rec krpv_rec_type := p_krpv_rec;
5808 l_def_krpv_rec krpv_rec_type;
5809 l_db_krpv_rec krpv_rec_type;
5810 l_krp_rec krp_rec_type;
5811 lx_krp_rec krp_rec_type;
5812 -------------------------------
5813 -- FUNCTION fill_who_columns --
5814 -------------------------------
5815 FUNCTION fill_who_columns (
5816 p_krpv_rec IN krpv_rec_type
5817 ) RETURN krpv_rec_type IS
5818 l_krpv_rec krpv_rec_type := p_krpv_rec;
5819 BEGIN
5820 l_krpv_rec.LAST_UPDATE_DATE := SYSDATE;
5821 l_krpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
5822 l_krpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
5823 RETURN(l_krpv_rec);
5824 END fill_who_columns;
5825 ----------------------------------
5826 -- FUNCTION populate_new_record --
5827 ----------------------------------
5828 FUNCTION populate_new_record (
5829 p_krpv_rec IN krpv_rec_type,
5830 x_krpv_rec OUT NOCOPY krpv_rec_type
5831 ) RETURN VARCHAR2 IS
5832 l_row_notfound BOOLEAN := TRUE;
5833 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5834 BEGIN
5835 x_krpv_rec := p_krpv_rec;
5836 -- Get current database values
5837 -- NOTE: Never assign the OBJECT_VERSION_NUMBER. Force the user to pass it
5838 -- so it may be verified through LOCK_ROW.
5839 l_db_krpv_rec := get_rec(p_krpv_rec, l_return_status);
5840 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
5841 IF (x_krpv_rec.khr_id = OKC_API.G_MISS_NUM)
5842 THEN
5843 x_krpv_rec.khr_id := l_db_krpv_rec.khr_id;
5844 END IF;
5845 IF (x_krpv_rec.parameter_type_code = OKC_API.G_MISS_CHAR)
5846 THEN
5847 x_krpv_rec.parameter_type_code := l_db_krpv_rec.parameter_type_code;
5848 END IF;
5849 IF (x_krpv_rec.effective_from_date = OKC_API.G_MISS_DATE)
5850 THEN
5851 x_krpv_rec.effective_from_date := l_db_krpv_rec.effective_from_date;
5852 END IF;
5853 IF (x_krpv_rec.effective_to_date = OKC_API.G_MISS_DATE)
5854 THEN
5855 x_krpv_rec.effective_to_date := l_db_krpv_rec.effective_to_date;
5856 END IF;
5857 IF (x_krpv_rec.interest_index_id = OKC_API.G_MISS_NUM)
5858 THEN
5859 x_krpv_rec.interest_index_id := l_db_krpv_rec.interest_index_id;
5860 END IF;
5861 IF (x_krpv_rec.base_rate = OKC_API.G_MISS_NUM)
5862 THEN
5863 x_krpv_rec.base_rate := l_db_krpv_rec.base_rate;
5864 END IF;
5865 IF (x_krpv_rec.interest_start_date = OKC_API.G_MISS_DATE)
5866 THEN
5867 x_krpv_rec.interest_start_date := l_db_krpv_rec.interest_start_date;
5868 END IF;
5869 IF (x_krpv_rec.adder_rate = OKC_API.G_MISS_NUM)
5870 THEN
5871 x_krpv_rec.adder_rate := l_db_krpv_rec.adder_rate;
5872 END IF;
5873 IF (x_krpv_rec.maximum_rate = OKC_API.G_MISS_NUM)
5874 THEN
5875 x_krpv_rec.maximum_rate := l_db_krpv_rec.maximum_rate;
5876 END IF;
5877 IF (x_krpv_rec.minimum_rate = OKC_API.G_MISS_NUM)
5878 THEN
5879 x_krpv_rec.minimum_rate := l_db_krpv_rec.minimum_rate;
5880 END IF;
5881 IF (x_krpv_rec.principal_basis_code = OKC_API.G_MISS_CHAR)
5882 THEN
5883 x_krpv_rec.principal_basis_code := l_db_krpv_rec.principal_basis_code;
5884 END IF;
5885 IF (x_krpv_rec.days_in_a_month_code = OKC_API.G_MISS_CHAR)
5886 THEN
5887 x_krpv_rec.days_in_a_month_code := l_db_krpv_rec.days_in_a_month_code;
5888 END IF;
5889 IF (x_krpv_rec.days_in_a_year_code = OKC_API.G_MISS_CHAR)
5890 THEN
5891 x_krpv_rec.days_in_a_year_code := l_db_krpv_rec.days_in_a_year_code;
5892 END IF;
5893 IF (x_krpv_rec.interest_basis_code = OKC_API.G_MISS_CHAR)
5894 THEN
5895 x_krpv_rec.interest_basis_code := l_db_krpv_rec.interest_basis_code;
5896 END IF;
5897 IF (x_krpv_rec.rate_delay_code = OKC_API.G_MISS_CHAR)
5898 THEN
5899 x_krpv_rec.rate_delay_code := l_db_krpv_rec.rate_delay_code;
5900 END IF;
5901 IF (x_krpv_rec.rate_delay_frequency = OKC_API.G_MISS_NUM)
5902 THEN
5903 x_krpv_rec.rate_delay_frequency := l_db_krpv_rec.rate_delay_frequency;
5904 END IF;
5905 IF (x_krpv_rec.compounding_frequency_code = OKC_API.G_MISS_CHAR)
5906 THEN
5907 x_krpv_rec.compounding_frequency_code := l_db_krpv_rec.compounding_frequency_code;
5908 END IF;
5909 IF (x_krpv_rec.calculation_formula_id = OKC_API.G_MISS_NUM)
5910 THEN
5911 x_krpv_rec.calculation_formula_id := l_db_krpv_rec.calculation_formula_id;
5912 END IF;
5913 IF (x_krpv_rec.catchup_basis_code = OKC_API.G_MISS_CHAR)
5914 THEN
5915 x_krpv_rec.catchup_basis_code := l_db_krpv_rec.catchup_basis_code;
5916 END IF;
5917 IF (x_krpv_rec.catchup_start_date = OKC_API.G_MISS_DATE)
5918 THEN
5919 x_krpv_rec.catchup_start_date := l_db_krpv_rec.catchup_start_date;
5920 END IF;
5921 IF (x_krpv_rec.catchup_settlement_code = OKC_API.G_MISS_CHAR)
5922 THEN
5923 x_krpv_rec.catchup_settlement_code := l_db_krpv_rec.catchup_settlement_code;
5924 END IF;
5925 IF (x_krpv_rec.rate_change_start_date = OKC_API.G_MISS_DATE)
5926 THEN
5927 x_krpv_rec.rate_change_start_date := l_db_krpv_rec.rate_change_start_date;
5928 END IF;
5929 IF (x_krpv_rec.rate_change_frequency_code = OKC_API.G_MISS_CHAR)
5930 THEN
5931 x_krpv_rec.rate_change_frequency_code := l_db_krpv_rec.rate_change_frequency_code;
5932 END IF;
5933 IF (x_krpv_rec.rate_change_value = OKC_API.G_MISS_NUM)
5934 THEN
5935 x_krpv_rec.rate_change_value := l_db_krpv_rec.rate_change_value;
5936 END IF;
5937 IF (x_krpv_rec.conversion_option_code = OKC_API.G_MISS_CHAR)
5938 THEN
5939 x_krpv_rec.conversion_option_code := l_db_krpv_rec.conversion_option_code;
5940 END IF;
5941 IF (x_krpv_rec.next_conversion_date = OKC_API.G_MISS_DATE)
5942 THEN
5943 x_krpv_rec.next_conversion_date := l_db_krpv_rec.next_conversion_date;
5944 END IF;
5945 IF (x_krpv_rec.conversion_type_code = OKC_API.G_MISS_CHAR)
5946 THEN
5947 x_krpv_rec.conversion_type_code := l_db_krpv_rec.conversion_type_code;
5948 END IF;
5949 IF (x_krpv_rec.attribute_category = OKC_API.G_MISS_CHAR)
5950 THEN
5951 x_krpv_rec.attribute_category := l_db_krpv_rec.attribute_category;
5952 END IF;
5953 IF (x_krpv_rec.attribute1 = OKC_API.G_MISS_CHAR)
5954 THEN
5955 x_krpv_rec.attribute1 := l_db_krpv_rec.attribute1;
5956 END IF;
5957 IF (x_krpv_rec.attribute2 = OKC_API.G_MISS_CHAR)
5958 THEN
5959 x_krpv_rec.attribute2 := l_db_krpv_rec.attribute2;
5960 END IF;
5961 IF (x_krpv_rec.attribute3 = OKC_API.G_MISS_CHAR)
5962 THEN
5963 x_krpv_rec.attribute3 := l_db_krpv_rec.attribute3;
5964 END IF;
5965 IF (x_krpv_rec.attribute4 = OKC_API.G_MISS_CHAR)
5966 THEN
5967 x_krpv_rec.attribute4 := l_db_krpv_rec.attribute4;
5968 END IF;
5969 IF (x_krpv_rec.attribute5 = OKC_API.G_MISS_CHAR)
5970 THEN
5971 x_krpv_rec.attribute5 := l_db_krpv_rec.attribute5;
5972 END IF;
5973 IF (x_krpv_rec.attribute6 = OKC_API.G_MISS_CHAR)
5974 THEN
5975 x_krpv_rec.attribute6 := l_db_krpv_rec.attribute6;
5976 END IF;
5977 IF (x_krpv_rec.attribute7 = OKC_API.G_MISS_CHAR)
5978 THEN
5979 x_krpv_rec.attribute7 := l_db_krpv_rec.attribute7;
5980 END IF;
5981 IF (x_krpv_rec.attribute8 = OKC_API.G_MISS_CHAR)
5982 THEN
5983 x_krpv_rec.attribute8 := l_db_krpv_rec.attribute8;
5984 END IF;
5985 IF (x_krpv_rec.attribute9 = OKC_API.G_MISS_CHAR)
5986 THEN
5987 x_krpv_rec.attribute9 := l_db_krpv_rec.attribute9;
5988 END IF;
5989 IF (x_krpv_rec.attribute10 = OKC_API.G_MISS_CHAR)
5990 THEN
5991 x_krpv_rec.attribute10 := l_db_krpv_rec.attribute10;
5992 END IF;
5993 IF (x_krpv_rec.attribute11 = OKC_API.G_MISS_CHAR)
5994 THEN
5995 x_krpv_rec.attribute11 := l_db_krpv_rec.attribute11;
5996 END IF;
5997 IF (x_krpv_rec.attribute12 = OKC_API.G_MISS_CHAR)
5998 THEN
5999 x_krpv_rec.attribute12 := l_db_krpv_rec.attribute12;
6000 END IF;
6001 IF (x_krpv_rec.attribute13 = OKC_API.G_MISS_CHAR)
6002 THEN
6003 x_krpv_rec.attribute13 := l_db_krpv_rec.attribute13;
6004 END IF;
6005 IF (x_krpv_rec.attribute14 = OKC_API.G_MISS_CHAR)
6006 THEN
6007 x_krpv_rec.attribute14 := l_db_krpv_rec.attribute14;
6008 END IF;
6009 IF (x_krpv_rec.attribute15 = OKC_API.G_MISS_CHAR)
6010 THEN
6011 x_krpv_rec.attribute15 := l_db_krpv_rec.attribute15;
6012 END IF;
6013 IF (x_krpv_rec.created_by = OKC_API.G_MISS_NUM)
6014 THEN
6015 x_krpv_rec.created_by := l_db_krpv_rec.created_by;
6016 END IF;
6017 IF (x_krpv_rec.creation_date = OKC_API.G_MISS_DATE)
6018 THEN
6019 x_krpv_rec.creation_date := l_db_krpv_rec.creation_date;
6020 END IF;
6021 IF (x_krpv_rec.last_updated_by = OKC_API.G_MISS_NUM)
6022 THEN
6023 x_krpv_rec.last_updated_by := l_db_krpv_rec.last_updated_by;
6024 END IF;
6025 IF (x_krpv_rec.last_update_date = OKC_API.G_MISS_DATE)
6026 THEN
6027 x_krpv_rec.last_update_date := l_db_krpv_rec.last_update_date;
6028 END IF;
6029 IF (x_krpv_rec.last_update_login = OKC_API.G_MISS_NUM)
6030 THEN
6031 x_krpv_rec.last_update_login := l_db_krpv_rec.last_update_login;
6032 END IF;
6033 IF (x_krpv_rec.catchup_frequency_code = OKC_API.G_MISS_CHAR)
6034 THEN
6035 x_krpv_rec.catchup_frequency_code := l_db_krpv_rec.catchup_frequency_code;
6036 END IF;
6037 END IF;
6038 RETURN(l_return_status);
6039 END populate_new_record;
6040 --------------------------------------------
6041 -- Set_Attributes for:OKL_K_RATE_PARAMS_V --
6042 --------------------------------------------
6043 FUNCTION Set_Attributes (
6044 p_krpv_rec IN krpv_rec_type,
6045 x_krpv_rec OUT NOCOPY krpv_rec_type
6046 ) RETURN VARCHAR2 IS
6047 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6048 BEGIN
6049 x_krpv_rec := p_krpv_rec;
6050 RETURN(l_return_status);
6051 END Set_Attributes;
6052 BEGIN
6053 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6054 G_PKG_NAME,
6055 p_init_msg_list,
6056 l_api_version,
6057 p_api_version,
6058 '_PVT',
6059 x_return_status);
6060 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6061 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6062 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6063 RAISE OKC_API.G_EXCEPTION_ERROR;
6064 END IF;
6065 --- Setting item attributes
6066 l_return_status := Set_Attributes(
6067 p_krpv_rec, -- IN
6068 x_krpv_rec); -- OUT
6069 --- If any errors happen abort API
6070 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6071 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6072 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6073 RAISE OKC_API.G_EXCEPTION_ERROR;
6074 END IF;
6075 l_return_status := populate_new_record(l_krpv_rec, l_def_krpv_rec);
6076 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6077 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6078 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6079 RAISE OKC_API.G_EXCEPTION_ERROR;
6080 END IF;
6081 l_def_krpv_rec := fill_who_columns(l_def_krpv_rec);
6082 --- Validate all non-missing attributes (Item Level Validation)
6083 l_return_status := Validate_Attributes(l_def_krpv_rec);
6084 --- If any errors happen abort API
6085 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6086 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6087 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6088 RAISE OKC_API.G_EXCEPTION_ERROR;
6089 END IF;
6090 l_return_status := Validate_Record(l_def_krpv_rec, l_db_krpv_rec);
6091 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6092 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6093 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6094 RAISE OKC_API.G_EXCEPTION_ERROR;
6095 END IF;
6096 /****Commented**********
6097 --avsingh
6098 -- Lock the Record
6099 lock_row(
6100 p_api_version => p_api_version,
6101 p_init_msg_list => p_init_msg_list,
6102 x_return_status => l_return_status,
6103 x_msg_count => x_msg_count,
6104 x_msg_data => x_msg_data,
6105 p_krpv_rec => p_krpv_rec);
6106 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6107 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6108 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6109 RAISE OKC_API.G_EXCEPTION_ERROR;
6110 END IF;
6111 **************************/
6112 -----------------------------------------
6113 -- Move VIEW record to "Child" records --
6114 -----------------------------------------
6115 migrate(l_def_krpv_rec, l_krp_rec);
6116 -----------------------------------------------
6117 -- Call the UPDATE_ROW for each child record --
6118 -----------------------------------------------
6119 update_row(
6120 p_init_msg_list,
6121 l_return_status,
6122 x_msg_count,
6123 x_msg_data,
6124 l_krp_rec,
6125 lx_krp_rec
6126 );
6127 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6128 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6129 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6130 RAISE OKC_API.G_EXCEPTION_ERROR;
6131 END IF;
6132 migrate(lx_krp_rec, l_def_krpv_rec);
6133 x_krpv_rec := l_def_krpv_rec;
6134 x_return_status := l_return_status;
6135 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6136 EXCEPTION
6137 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6138 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6139 (
6140 l_api_name,
6141 G_PKG_NAME,
6142 'OKC_API.G_RET_STS_ERROR',
6143 x_msg_count,
6144 x_msg_data,
6145 '_PVT'
6146 );
6147 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6148 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6149 (
6150 l_api_name,
6151 G_PKG_NAME,
6152 'OKC_API.G_RET_STS_UNEXP_ERROR',
6153 x_msg_count,
6154 x_msg_data,
6155 '_PVT'
6156 );
6157 WHEN OTHERS THEN
6158 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6159 (
6160 l_api_name,
6161 G_PKG_NAME,
6162 'OTHERS',
6163 x_msg_count,
6164 x_msg_data,
6165 '_PVT'
6166 );
6167 END update_row;
6168 ----------------------------------------
6169 -- PL/SQL TBL update_row for:krpv_tbl --
6170 ----------------------------------------
6171 PROCEDURE update_row(
6172 p_api_version IN NUMBER,
6173 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6174 x_return_status OUT NOCOPY VARCHAR2,
6175 x_msg_count OUT NOCOPY NUMBER,
6176 x_msg_data OUT NOCOPY VARCHAR2,
6177 p_krpv_tbl IN krpv_tbl_type,
6178 x_krpv_tbl OUT NOCOPY krpv_tbl_type,
6179 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
6180
6181 l_api_version CONSTANT NUMBER := 1;
6182 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
6183 i NUMBER := 0;
6184 BEGIN
6185 OKC_API.init_msg_list(p_init_msg_list);
6186 -- Make sure PL/SQL table has records in it before passing
6187 IF (p_krpv_tbl.COUNT > 0) THEN
6188 i := p_krpv_tbl.FIRST;
6189 LOOP
6190 DECLARE
6191 l_error_rec OKC_API.ERROR_REC_TYPE;
6192 BEGIN
6193 l_error_rec.api_name := l_api_name;
6194 l_error_rec.api_package := G_PKG_NAME;
6195 l_error_rec.idx := i;
6196 update_row (
6197 p_api_version => p_api_version,
6198 p_init_msg_list => OKC_API.G_FALSE,
6199 x_return_status => l_error_rec.error_type,
6200 x_msg_count => l_error_rec.msg_count,
6201 x_msg_data => l_error_rec.msg_data,
6202 p_krpv_rec => p_krpv_tbl(i),
6203 x_krpv_rec => x_krpv_tbl(i));
6204 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
6205 l_error_rec.sqlcode := SQLCODE;
6206 load_error_tbl(l_error_rec, px_error_tbl);
6207 ELSE
6208 x_msg_count := l_error_rec.msg_count;
6209 x_msg_data := l_error_rec.msg_data;
6210 END IF;
6211 EXCEPTION
6212 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6213 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
6214 l_error_rec.sqlcode := SQLCODE;
6215 load_error_tbl(l_error_rec, px_error_tbl);
6216 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6217 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
6218 l_error_rec.sqlcode := SQLCODE;
6219 load_error_tbl(l_error_rec, px_error_tbl);
6220 WHEN OTHERS THEN
6221 l_error_rec.error_type := 'OTHERS';
6222 l_error_rec.sqlcode := SQLCODE;
6223 load_error_tbl(l_error_rec, px_error_tbl);
6224 END;
6225 EXIT WHEN (i = p_krpv_tbl.LAST);
6226 i := p_krpv_tbl.NEXT(i);
6227 END LOOP;
6228 END IF;
6229 -- Loop through the error_tbl to find the error with the highest severity
6230 -- and return it.
6231 x_return_status := find_highest_exception(px_error_tbl);
6232 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6233 EXCEPTION
6234 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6235 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6236 (
6237 l_api_name,
6238 G_PKG_NAME,
6239 'OKC_API.G_RET_STS_ERROR',
6240 x_msg_count,
6241 x_msg_data,
6242 '_PVT'
6243 );
6244 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6245 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6246 (
6247 l_api_name,
6248 G_PKG_NAME,
6249 'OKC_API.G_RET_STS_UNEXP_ERROR',
6250 x_msg_count,
6251 x_msg_data,
6252 '_PVT'
6253 );
6254 WHEN OTHERS THEN
6255 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6256 (
6257 l_api_name,
6258 G_PKG_NAME,
6259 'OTHERS',
6260 x_msg_count,
6261 x_msg_data,
6262 '_PVT'
6263 );
6264 END update_row;
6265
6266 ----------------------------------------
6267 -- PL/SQL TBL update_row for:KRPV_TBL --
6268 ----------------------------------------
6269 PROCEDURE update_row(
6270 p_api_version IN NUMBER,
6271 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6272 x_return_status OUT NOCOPY VARCHAR2,
6273 x_msg_count OUT NOCOPY NUMBER,
6274 x_msg_data OUT NOCOPY VARCHAR2,
6275 p_krpv_tbl IN krpv_tbl_type,
6276 x_krpv_tbl OUT NOCOPY krpv_tbl_type) IS
6277
6278 l_api_version CONSTANT NUMBER := 1;
6279 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
6280 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6281 l_error_tbl OKC_API.ERROR_TBL_TYPE;
6282 BEGIN
6283 OKC_API.init_msg_list(p_init_msg_list);
6284 -- Make sure PL/SQL table has records in it before passing
6285 IF (p_krpv_tbl.COUNT > 0) THEN
6286 update_row (
6287 p_api_version => p_api_version,
6288 p_init_msg_list => OKC_API.G_FALSE,
6289 x_return_status => x_return_status,
6290 x_msg_count => x_msg_count,
6291 x_msg_data => x_msg_data,
6292 p_krpv_tbl => p_krpv_tbl,
6293 x_krpv_tbl => x_krpv_tbl,
6294 px_error_tbl => l_error_tbl);
6295 END IF;
6296 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6297 EXCEPTION
6298 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6299 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6300 (
6301 l_api_name,
6302 G_PKG_NAME,
6303 'OKC_API.G_RET_STS_ERROR',
6304 x_msg_count,
6305 x_msg_data,
6306 '_PVT'
6307 );
6308 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6309 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6310 (
6311 l_api_name,
6312 G_PKG_NAME,
6313 'OKC_API.G_RET_STS_UNEXP_ERROR',
6314 x_msg_count,
6315 x_msg_data,
6316 '_PVT'
6317 );
6318 WHEN OTHERS THEN
6319 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6320 (
6321 l_api_name,
6322 G_PKG_NAME,
6323 'OTHERS',
6324 x_msg_count,
6325 x_msg_data,
6326 '_PVT'
6327 );
6328 END update_row;
6329
6330 ---------------------------------------------------------------------------
6331 -- PROCEDURE delete_row
6332 ---------------------------------------------------------------------------
6333 --------------------------------------
6334 -- delete_row for:OKL_K_RATE_PARAMS --
6335 --------------------------------------
6336 PROCEDURE delete_row(
6337 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6338 x_return_status OUT NOCOPY VARCHAR2,
6339 x_msg_count OUT NOCOPY NUMBER,
6340 x_msg_data OUT NOCOPY VARCHAR2,
6341 p_krp_rec IN krp_rec_type) IS
6342
6343 l_api_version CONSTANT NUMBER := 1;
6344 l_api_name CONSTANT VARCHAR2(30) := 'B_delete_row';
6345 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6346 l_krp_rec krp_rec_type := p_krp_rec;
6347 l_row_notfound BOOLEAN := TRUE;
6348 BEGIN
6349 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6350 p_init_msg_list,
6351 '_PVT',
6352 x_return_status);
6353 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6354 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6355 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6356 RAISE OKC_API.G_EXCEPTION_ERROR;
6357 END IF;
6358
6359 DELETE FROM OKL_K_RATE_PARAMS
6360 WHERE PARAMETER_TYPE_CODE = p_krp_rec.parameter_type_code
6361 AND EFFECTIVE_FROM_DATE = p_krp_rec.effective_from_date
6362 AND KHR_ID = p_krp_rec.khr_id;
6363
6364 x_return_status := l_return_status;
6365 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6366 EXCEPTION
6367 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6368 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6369 (
6370 l_api_name,
6371 G_PKG_NAME,
6372 'OKC_API.G_RET_STS_ERROR',
6373 x_msg_count,
6374 x_msg_data,
6375 '_PVT'
6376 );
6377 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6378 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6379 (
6380 l_api_name,
6381 G_PKG_NAME,
6382 'OKC_API.G_RET_STS_UNEXP_ERROR',
6383 x_msg_count,
6384 x_msg_data,
6385 '_PVT'
6386 );
6387 WHEN OTHERS THEN
6388 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6389 (
6390 l_api_name,
6391 G_PKG_NAME,
6392 'OTHERS',
6393 x_msg_count,
6394 x_msg_data,
6395 '_PVT'
6396 );
6397 END delete_row;
6398 ----------------------------------------
6399 -- delete_row for:OKL_K_RATE_PARAMS_V --
6400 ----------------------------------------
6401 PROCEDURE delete_row(
6402 p_api_version IN NUMBER,
6403 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6404 x_return_status OUT NOCOPY VARCHAR2,
6405 x_msg_count OUT NOCOPY NUMBER,
6406 x_msg_data OUT NOCOPY VARCHAR2,
6407 p_krpv_rec IN krpv_rec_type) IS
6408
6409 l_api_version CONSTANT NUMBER := 1;
6410 l_api_name CONSTANT VARCHAR2(30) := 'V_delete_row';
6411 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6412 l_krpv_rec krpv_rec_type := p_krpv_rec;
6413 l_krp_rec krp_rec_type;
6414 BEGIN
6415 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6416 G_PKG_NAME,
6417 p_init_msg_list,
6418 l_api_version,
6419 p_api_version,
6420 '_PVT',
6421 x_return_status);
6422 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6423 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6424 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6425 RAISE OKC_API.G_EXCEPTION_ERROR;
6426 END IF;
6427 -----------------------------------------
6428 -- Move VIEW record to "Child" records --
6429 -----------------------------------------
6430 migrate(l_krpv_rec, l_krp_rec);
6431 -----------------------------------------------
6432 -- Call the DELETE_ROW for each child record --
6433 -----------------------------------------------
6434 delete_row(
6435 p_init_msg_list,
6436 l_return_status,
6437 x_msg_count,
6438 x_msg_data,
6439 l_krp_rec
6440 );
6441 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6442 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6443 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6444 RAISE OKC_API.G_EXCEPTION_ERROR;
6445 END IF;
6446 x_return_status := l_return_status;
6447 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6448 EXCEPTION
6449 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6450 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6451 (
6452 l_api_name,
6453 G_PKG_NAME,
6454 'OKC_API.G_RET_STS_ERROR',
6455 x_msg_count,
6456 x_msg_data,
6457 '_PVT'
6458 );
6459 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6460 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6461 (
6462 l_api_name,
6463 G_PKG_NAME,
6464 'OKC_API.G_RET_STS_UNEXP_ERROR',
6465 x_msg_count,
6466 x_msg_data,
6467 '_PVT'
6468 );
6469 WHEN OTHERS THEN
6470 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6471 (
6472 l_api_name,
6473 G_PKG_NAME,
6474 'OTHERS',
6475 x_msg_count,
6476 x_msg_data,
6477 '_PVT'
6478 );
6479 END delete_row;
6480 ---------------------------------------------------
6481 -- PL/SQL TBL delete_row for:OKL_K_RATE_PARAMS_V --
6482 ---------------------------------------------------
6483 PROCEDURE delete_row(
6484 p_api_version IN NUMBER,
6485 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6486 x_return_status OUT NOCOPY VARCHAR2,
6487 x_msg_count OUT NOCOPY NUMBER,
6488 x_msg_data OUT NOCOPY VARCHAR2,
6489 p_krpv_tbl IN krpv_tbl_type,
6490 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
6491
6492 l_api_version CONSTANT NUMBER := 1;
6493 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
6494 i NUMBER := 0;
6495 BEGIN
6496 OKC_API.init_msg_list(p_init_msg_list);
6497 -- Make sure PL/SQL table has records in it before passing
6498 IF (p_krpv_tbl.COUNT > 0) THEN
6499 i := p_krpv_tbl.FIRST;
6500 LOOP
6501 DECLARE
6502 l_error_rec OKC_API.ERROR_REC_TYPE;
6503 BEGIN
6504 l_error_rec.api_name := l_api_name;
6505 l_error_rec.api_package := G_PKG_NAME;
6506 l_error_rec.idx := i;
6507 delete_row (
6508 p_api_version => p_api_version,
6509 p_init_msg_list => OKC_API.G_FALSE,
6510 x_return_status => l_error_rec.error_type,
6511 x_msg_count => l_error_rec.msg_count,
6512 x_msg_data => l_error_rec.msg_data,
6513 p_krpv_rec => p_krpv_tbl(i));
6514 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
6515 l_error_rec.sqlcode := SQLCODE;
6516 load_error_tbl(l_error_rec, px_error_tbl);
6517 ELSE
6518 x_msg_count := l_error_rec.msg_count;
6519 x_msg_data := l_error_rec.msg_data;
6520 END IF;
6521 EXCEPTION
6522 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6523 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
6524 l_error_rec.sqlcode := SQLCODE;
6525 load_error_tbl(l_error_rec, px_error_tbl);
6526 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6527 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
6528 l_error_rec.sqlcode := SQLCODE;
6529 load_error_tbl(l_error_rec, px_error_tbl);
6530 WHEN OTHERS THEN
6531 l_error_rec.error_type := 'OTHERS';
6532 l_error_rec.sqlcode := SQLCODE;
6533 load_error_tbl(l_error_rec, px_error_tbl);
6534 END;
6535 EXIT WHEN (i = p_krpv_tbl.LAST);
6536 i := p_krpv_tbl.NEXT(i);
6537 END LOOP;
6538 END IF;
6539 -- Loop through the error_tbl to find the error with the highest severity
6540 -- and return it.
6541 x_return_status := find_highest_exception(px_error_tbl);
6542 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6543 EXCEPTION
6544 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6545 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6546 (
6547 l_api_name,
6548 G_PKG_NAME,
6549 'OKC_API.G_RET_STS_ERROR',
6550 x_msg_count,
6551 x_msg_data,
6552 '_PVT'
6553 );
6554 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6555 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6556 (
6557 l_api_name,
6558 G_PKG_NAME,
6559 'OKC_API.G_RET_STS_UNEXP_ERROR',
6560 x_msg_count,
6561 x_msg_data,
6562 '_PVT'
6563 );
6564 WHEN OTHERS THEN
6565 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6566 (
6567 l_api_name,
6568 G_PKG_NAME,
6569 'OTHERS',
6570 x_msg_count,
6571 x_msg_data,
6572 '_PVT'
6573 );
6574 END delete_row;
6575
6576 ---------------------------------------------------
6577 -- PL/SQL TBL delete_row for:OKL_K_RATE_PARAMS_V --
6578 ---------------------------------------------------
6579 PROCEDURE delete_row(
6580 p_api_version IN NUMBER,
6581 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6582 x_return_status OUT NOCOPY VARCHAR2,
6583 x_msg_count OUT NOCOPY NUMBER,
6584 x_msg_data OUT NOCOPY VARCHAR2,
6585 p_krpv_tbl IN krpv_tbl_type) IS
6586
6587 l_api_version CONSTANT NUMBER := 1;
6588 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
6589 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6590 l_error_tbl OKC_API.ERROR_TBL_TYPE;
6591 BEGIN
6592 OKC_API.init_msg_list(p_init_msg_list);
6593 -- Make sure PL/SQL table has records in it before passing
6594 IF (p_krpv_tbl.COUNT > 0) THEN
6595 delete_row (
6596 p_api_version => p_api_version,
6597 p_init_msg_list => OKC_API.G_FALSE,
6598 x_return_status => x_return_status,
6599 x_msg_count => x_msg_count,
6600 x_msg_data => x_msg_data,
6601 p_krpv_tbl => p_krpv_tbl,
6602 px_error_tbl => l_error_tbl);
6603 END IF;
6604 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6605 EXCEPTION
6606 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6607 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6608 (
6609 l_api_name,
6610 G_PKG_NAME,
6611 'OKC_API.G_RET_STS_ERROR',
6612 x_msg_count,
6613 x_msg_data,
6614 '_PVT'
6615 );
6616 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6617 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6618 (
6619 l_api_name,
6620 G_PKG_NAME,
6621 'OKC_API.G_RET_STS_UNEXP_ERROR',
6622 x_msg_count,
6623 x_msg_data,
6624 '_PVT'
6625 );
6626 WHEN OTHERS THEN
6627 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6628 (
6629 l_api_name,
6630 G_PKG_NAME,
6631 'OTHERS',
6632 x_msg_count,
6633 x_msg_data,
6634 '_PVT'
6635 );
6636 END delete_row;
6637
6638 END OKL_KRP_PVT;