[Home] [Help]
PACKAGE BODY: APPS.OKL_KRP_PVT
Source
1 PACKAGE BODY OKL_KRP_PVT AS
2 /* $Header: OKLSKRPB.pls 120.18.12010000.2 2008/11/12 20:39:45 cklee 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 Frequency');
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
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');
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 BEGIN
1575 IF (G_DEBUG_ENABLED = 'Y') THEN
1576 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1577 END IF;
1578 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1579 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In Validate_Record...');
1580 END IF;
1581 IF (p_deal_type IN ('LEASEDF', 'LEASEOP', 'LEASEST') ) THEN
1582 IF (p_int_calc_basis = 'FIXED' AND p_rev_rec_method = 'STREAMS') THEN
1583
1584 NULL; -- 4736732 No check required
1585 /*print('Checking Conversion_Option_Code...');
1586 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1587 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
1588 p_krpv_rec.Conversion_Option_Code IS NULL)
1589 THEN
1590 print('Conversion_Option_Code is NULL...');
1591 --OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Conversion_Option_Code');
1592 OKC_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1593 p_msg_name => G_REQUIRED_VALUE,
1594 p_token1 => G_COL_NAME_TOKEN,
1595 p_token1_value => 'Conversion_Option_Code');
1596 l_return_status := OKC_API.G_RET_STS_ERROR;
1597 IF (p_stack_messages = 'N') THEN
1598 RAISE violated_ref_integrity;
1599 END IF;
1600 END IF;
1601 END IF; */
1602
1603 /*
1604 print('Checking next_Conversion_Date...' ||p_krpv_rec.Next_Conversion_Date);
1605 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1606 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
1607 p_krpv_rec.Next_Conversion_Date IS NULL)
1608 THEN
1609 print('next_Conversion_Date is NULL...');
1610 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Next_Conversion_Date');
1611 l_return_status := OKC_API.G_RET_STS_ERROR;
1612 IF (p_stack_messages = 'N') THEN
1613 RAISE violated_ref_integrity;
1614 END IF;
1615 END IF;
1616 END IF; */
1617
1618 /*print('Checking Conversion_Type_Code...');
1619 --print('G_APP_NAME=' || G_APP_NAME);
1620 --print('G_REQUIRED_VALUE=' || G_REQUIRED_VALUE);
1621 --print('G_COL_NAME_TOKEN=' || G_COL_NAME_TOKEN);
1622 IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1623 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
1624 p_krpv_rec.Conversion_Type_Code IS NULL)
1625 THEN
1626 print('Conversion_Type_Code is NULL...');
1627 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Conversion Type Code');
1628 l_return_status := OKC_API.G_RET_STS_ERROR;
1629 IF (p_stack_messages = 'N') THEN
1630 RAISE violated_ref_integrity;
1631 END IF;
1632 END IF;
1633 END IF;*/
1634
1635 ELSIF (p_int_calc_basis = 'REAMORT' AND p_rev_rec_method ='STREAMS') THEN
1636 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
1637 p_krpv_rec.Interest_Index_Id IS NULL)
1638 THEN
1639 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1640 'Interest Index Id');
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
1647 -- Bug 4907390
1648 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
1649 p_krpv_rec.Base_Rate IS NULL)
1650 THEN
1651 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1652 'Base Rate');
1653 l_return_status := OKC_API.G_RET_STS_ERROR;
1654 IF (p_stack_messages = 'N') THEN
1655 RAISE violated_ref_integrity;
1656 END IF;
1657 END IF;*/
1658
1659 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
1660 p_krpv_rec.Interest_Start_Date IS NULL)
1661 THEN
1662 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1663 'Interest Start Date');
1664 l_return_status := OKC_API.G_RET_STS_ERROR;
1665 IF (p_stack_messages = 'N') THEN
1666 RAISE violated_ref_integrity;
1667 END IF;
1668 END IF;
1669
1670 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
1671 p_krpv_rec.Adder_Rate IS NULL)
1672 THEN
1673 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1674 'Adder Rate');
1675 l_return_status := OKC_API.G_RET_STS_ERROR;
1676 IF (p_stack_messages = 'N') THEN
1677 RAISE violated_ref_integrity;
1678 END IF;
1679 END IF;
1680
1681 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
1682 p_krpv_rec.Maximum_Rate IS NULL)
1683 THEN
1684 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1685 'Maximum Rate');
1686 l_return_status := OKC_API.G_RET_STS_ERROR;
1687 IF (p_stack_messages = 'N') THEN
1688 RAISE violated_ref_integrity;
1689 END IF;
1690 END IF;
1691
1692 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
1693 p_krpv_rec.Minimum_Rate IS NULL)
1694 THEN
1695 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1696 'Minimum Rate');
1697 l_return_status := OKC_API.G_RET_STS_ERROR;
1698 IF (p_stack_messages = 'N') THEN
1699 RAISE violated_ref_integrity;
1700 END IF;
1701 END IF;
1702
1703 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
1704 p_krpv_rec.Principal_Basis_Code IS NULL)
1705 THEN
1706 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1707 'Principal Basis Code');
1708 l_return_status := OKC_API.G_RET_STS_ERROR;
1709 IF (p_stack_messages = 'N') THEN
1710 RAISE violated_ref_integrity;
1711 END IF;
1712 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
1713 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
1714 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
1715 -- AKP: Todo: Set Proper Message
1716 --(Principal Basis Code is 'SCHEDULED' allowed only)
1717 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1718 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1719 ,p_token1 => 'VALUE'
1720 ,p_token1_value => 'SCHEDULED'
1721 ,p_token2 => 'CODE0'
1722 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
1723 ,p_token3 => 'CODE1'
1724 ,p_token3_value => 'REAMORT'
1725 ,p_token4 => 'CODE2'
1726 ,p_token4_value => 'STREAMS');
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 END IF;
1733
1734 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
1735 p_krpv_rec.Days_In_A_Month_Code IS NULL)
1736 THEN
1737 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1738 'Days In A Month Code');
1739 l_return_status := OKC_API.G_RET_STS_ERROR;
1740 IF (p_stack_messages = 'N') THEN
1741 RAISE violated_ref_integrity;
1742 END IF;
1743 ELSIF (p_krpv_rec.Days_In_A_Month_Code <> OKC_API.G_MISS_CHAR AND
1744 p_krpv_rec.Days_In_A_Month_Code IS NOT NULL) THEN
1745 IF (p_krpv_rec.Days_In_A_Month_Code <> '30') THEN
1746 -- AKP: Todo: Set Proper Message
1747 --(Days In A Month Code is '30' allowed only)
1748 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1749 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1750 ,p_token1 => 'VALUE'
1751 ,p_token1_value => '30'
1752 ,p_token2 => 'CODE0'
1753 ,p_token2_value => 'DAYS_IN_A_MONTH_CODE'
1754 ,p_token3 => 'CODE1'
1755 ,p_token3_value => 'REAMORT'
1756 ,p_token4 => 'CODE2'
1757 ,p_token4_value => 'STREAMS');
1758 l_return_status := OKC_API.G_RET_STS_ERROR;
1759 IF (p_stack_messages = 'N') THEN
1760 RAISE violated_ref_integrity;
1761 END IF;
1762 END IF;
1763 END IF;
1764
1765 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
1766 p_krpv_rec.Days_In_A_Year_Code IS NULL)
1767 THEN
1768 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1769 'Days In A Year Code');
1770 l_return_status := OKC_API.G_RET_STS_ERROR;
1771 IF (p_stack_messages = 'N') THEN
1772 RAISE violated_ref_integrity;
1773 END IF;
1774 ELSIF (p_krpv_rec.Days_In_A_Year_Code <> OKC_API.G_MISS_CHAR AND
1775 p_krpv_rec.Days_In_A_Year_Code IS NOT NULL) THEN
1776 IF (p_krpv_rec.Days_In_A_Year_Code <> '360') THEN
1777 -- AKP: Todo: Set Proper Message
1778 --(Days In A Year Code is '360' allowed only)
1779 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1780 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1781 ,p_token1 => 'VALUE'
1782 ,p_token1_value => '360'
1783 ,p_token2 => 'CODE0'
1784 ,p_token2_value => 'DAYS_IN_A_YEAR_CODE'
1785 ,p_token3 => 'CODE1'
1786 ,p_token3_value => 'REAMORT'
1787 ,p_token4 => 'CODE2'
1788 ,p_token4_value => 'STREAMS');
1789 l_return_status := OKC_API.G_RET_STS_ERROR;
1790 IF (p_stack_messages = 'N') THEN
1791 RAISE violated_ref_integrity;
1792 END IF;
1793 END IF;
1794 END IF;
1795
1796 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
1797 p_krpv_rec.Interest_Basis_Code IS NULL)
1798 THEN
1799 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1800 'Interest Basis Code');
1801 l_return_status := OKC_API.G_RET_STS_ERROR;
1802 IF (p_stack_messages = 'N') THEN
1803 RAISE violated_ref_integrity;
1804 END IF;
1805 ELSIF (p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR AND
1806 p_krpv_rec.Interest_Basis_Code IS NOT NULL) THEN
1807 IF (p_krpv_rec.Interest_Basis_Code <> 'SIMPLE') THEN
1808 -- AKP: Todo: Set Proper Message
1809 --(Interest Basis Code is 'SIMPLE' allowed only)
1810 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1811 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1812 ,p_token1 => 'VALUE'
1813 ,p_token1_value => 'SIMPLE'
1814 ,p_token2 => 'CODE0'
1815 ,p_token2_value => 'INTEREST_BASIS_CODE'
1816 ,p_token3 => 'CODE1'
1817 ,p_token3_value => 'REAMORT'
1818 ,p_token4 => 'CODE2'
1819 ,p_token4_value => 'STREAMS');
1820 l_return_status := OKC_API.G_RET_STS_ERROR;
1821 IF (p_stack_messages = 'N') THEN
1822 RAISE violated_ref_integrity;
1823 END IF;
1824 END IF;
1825 END IF;
1826
1827 /* Bug 4862551. Commented out. No need to have these values:
1828 rate_delay_code, rate_delay_frequency, rate_change_start_date,
1829 rate_change_frequency_code, rate_change_value */
1830 /*
1831 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
1832 p_krpv_rec.Rate_Delay_Code IS NULL)
1833 THEN
1834 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1835 'Rate Delay Code');
1836 l_return_status := OKC_API.G_RET_STS_ERROR;
1837 IF (p_stack_messages = 'N') THEN
1838 RAISE violated_ref_integrity;
1839 END IF;
1840 END IF;
1841
1842 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
1843 p_krpv_rec.Rate_Delay_Frequency IS NULL)
1844 THEN
1845 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1846 'Rate Delay Frequency');
1847 l_return_status := OKC_API.G_RET_STS_ERROR;
1848 IF (p_stack_messages = 'N') THEN
1849 RAISE violated_ref_integrity;
1850 END IF;
1851 END IF;
1852
1853 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
1854 p_krpv_rec.Rate_Change_Start_Date IS NULL)
1855 THEN
1856 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1857 'Rate Change Start Date');
1858 l_return_status := OKC_API.G_RET_STS_ERROR;
1859 IF (p_stack_messages = 'N') THEN
1860 RAISE violated_ref_integrity;
1861 END IF;
1862 END IF;
1863 */
1864
1865 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
1866 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
1867 THEN
1868 -- Bug 4862551
1869 /*OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1870 'Rate Change Frequency Code');
1871 l_return_status := OKC_API.G_RET_STS_ERROR;
1872 IF (p_stack_messages = 'N') THEN
1873 RAISE violated_ref_integrity;
1874 END IF;*/
1875 NULL;
1876 ELSIF (p_krpv_rec.Rate_Change_Frequency_Code <> OKC_API.G_MISS_CHAR AND
1877 p_krpv_rec.Rate_Change_Frequency_Code IS NOT NULL) THEN
1878 IF (p_krpv_rec.Rate_Change_Frequency_Code <> 'BILLING_DATE') THEN
1879 -- AKP: Todo: Set Proper Message
1880 --(Rate Change Frequency Code is 'BILLING_DATE' allowed only)
1881 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
1882 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
1883 ,p_token1 => 'VALUE'
1884 ,p_token1_value => 'BILLING_DATE'
1885 ,p_token2 => 'CODE0'
1886 ,p_token2_value => 'RATE_CHANGE_FREQUENCY_CODE'
1887 ,p_token3 => 'CODE1'
1888 ,p_token3_value => 'REAMORT'
1889 ,p_token4 => 'CODE2'
1890 ,p_token4_value => 'STREAMS');
1891 l_return_status := OKC_API.G_RET_STS_ERROR;
1892 IF (p_stack_messages = 'N') THEN
1893 RAISE violated_ref_integrity;
1894 END IF;
1895 END IF;
1896 END IF;
1897
1898 -- Bug 4862551
1899 /*
1900 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
1901 p_krpv_rec.Rate_Change_Value IS NULL)
1902 THEN
1903 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1904 'Rate Change Value');
1905 l_return_status := OKC_API.G_RET_STS_ERROR;
1906 IF (p_stack_messages = 'N') THEN
1907 RAISE violated_ref_integrity;
1908 END IF;
1909 END IF;
1910 */
1911
1912 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1913 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
1914 p_krpv_rec.Conversion_Option_Code IS NULL)
1915 THEN
1916 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1917 'Conversion Option Code');
1918 l_return_status := OKC_API.G_RET_STS_ERROR;
1919 IF (p_stack_messages = 'N') THEN
1920 RAISE violated_ref_integrity;
1921 END IF;
1922 END IF;
1923 END IF;*/
1924
1925 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1926 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
1927 p_krpv_rec.Next_Conversion_Date IS NULL)
1928 THEN
1929 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1930 'Next Conversion Date');
1931 l_return_status := OKC_API.G_RET_STS_ERROR;
1932 IF (p_stack_messages = 'N') THEN
1933 RAISE violated_ref_integrity;
1934 END IF;
1935 END IF;
1936 END IF;*/
1937
1938 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1939 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
1940 p_krpv_rec.Conversion_Type_Code IS NULL)
1941 THEN
1942 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1943 'Conversion Type Code');
1944 l_return_status := OKC_API.G_RET_STS_ERROR;
1945 IF (p_stack_messages = 'N') THEN
1946 RAISE violated_ref_integrity;
1947 END IF;
1948 END IF;
1949 END IF;*/
1950
1951
1952 ELSIF (p_int_calc_basis = 'FLOAT_FACTORS' AND p_rev_rec_method ='STREAMS') THEN
1953 -- Bug 4907390
1954 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
1955 p_krpv_rec.Base_Rate IS NULL)
1956 THEN
1957 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1958 'Base Rate');
1959 l_return_status := OKC_API.G_RET_STS_ERROR;
1960 IF (p_stack_messages = 'N') THEN
1961 RAISE violated_ref_integrity;
1962 END IF;
1963 END IF; */
1964
1965 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
1966 p_krpv_rec.Interest_Start_Date IS NULL)
1967 THEN
1968 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1969 'Interest Start Date');
1970 l_return_status := OKC_API.G_RET_STS_ERROR;
1971 IF (p_stack_messages = 'N') THEN
1972 RAISE violated_ref_integrity;
1973 END IF;
1974 END IF;
1975
1976 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1977 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
1978 p_krpv_rec.Conversion_Option_Code IS NULL)
1979 THEN
1980 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1981 'Conversion Option Code');
1982 l_return_status := OKC_API.G_RET_STS_ERROR;
1983 IF (p_stack_messages = 'N') THEN
1984 RAISE violated_ref_integrity;
1985 END IF;
1986 END IF;
1987 END IF;*/
1988
1989 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
1990 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
1991 p_krpv_rec.Next_Conversion_Date IS NULL)
1992 THEN
1993 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
1994 'Next Conversion Date');
1995 l_return_status := OKC_API.G_RET_STS_ERROR;
1996 IF (p_stack_messages = 'N') THEN
1997 RAISE violated_ref_integrity;
1998 END IF;
1999 END IF;
2000 END IF;*/
2001
2002 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2003 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2004 p_krpv_rec.Conversion_Type_Code IS NULL)
2005 THEN
2006 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2007 'Conversion Type Code');
2008 l_return_status := OKC_API.G_RET_STS_ERROR;
2009 IF (p_stack_messages = 'N') THEN
2010 RAISE violated_ref_integrity;
2011 END IF;
2012 END IF;
2013 END IF;*/
2014
2015 -- Bug 4753087
2016 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2017 p_krpv_rec.Principal_Basis_Code IS NULL)
2018 THEN
2019 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2020 'Principal Basis Code');
2021 l_return_status := OKC_API.G_RET_STS_ERROR;
2022 IF (p_stack_messages = 'N') THEN
2023 RAISE violated_ref_integrity;
2024 END IF;
2025 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2026 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2027 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
2028 -- AKP: Todo: Set Proper Message
2029 --(Principal Basis Code is 'SCHEDULED' allowed only)
2030 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2031 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2032 ,p_token1 => 'VALUE'
2033 ,p_token1_value => 'SCHEDULED'
2034 ,p_token2 => 'CODE0'
2035 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2036 ,p_token3 => 'CODE1'
2037 ,p_token3_value => 'FLOAT_FACTORS'
2038 ,p_token4 => 'CODE2'
2039 ,p_token4_value => 'STREAMS');
2040 l_return_status := OKC_API.G_RET_STS_ERROR;
2041 IF (p_stack_messages = 'N') THEN
2042 RAISE violated_ref_integrity;
2043 END IF;
2044 END IF;
2045 END IF;
2046
2047 -- Bug 4862416: For FLOAT_FACTOR, formula is required
2048 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2049 p_krpv_rec.Calculation_Formula_Id IS NULL)
2050 THEN
2051 l_msg2_set := TRUE;
2052 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2053 'Formula Name');
2054 l_return_status := OKC_API.G_RET_STS_ERROR;
2055 IF (p_stack_messages = 'N') THEN
2056 RAISE violated_ref_integrity;
2057 END IF;
2058 END IF;
2059
2060 END IF; -- For FIXED and STREAMS
2061
2062 END IF; -- For LEASEDF, LEASEOP and LEASEST
2063
2064 IF (p_deal_type IN ('LOAN')) THEN
2065 IF (p_int_calc_basis = 'FIXED' AND p_rev_rec_method = 'STREAMS') THEN
2066 /* AKP: ToDo: Check Base_Rate for Principal payment type only and not
2067 for Rent */
2068 IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2069 p_krpv_rec.Base_Rate IS NULL)
2070 THEN
2071 OKL_K_RATE_PARAMS_PVT.check_principal_payment(
2072 p_api_version => 1,
2073 p_init_msg_list => OKL_API.G_FALSE,
2074 x_return_status => l_return_status,
2075 x_msg_count => l_msg_count,
2076 x_msg_data => l_msg_data,
2077 p_chr_id => p_krpv_rec.khr_id,
2078 x_principal_payment_defined => l_principal_payment_defined);
2079 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2080 RAISE violated_ref_integrity;
2081 END IF;
2082
2083 IF (l_principal_payment_defined) THEN
2084 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2085 'Base Rate');
2086 l_return_status := OKC_API.G_RET_STS_ERROR;
2087 IF (p_stack_messages = 'N') THEN
2088 RAISE violated_ref_integrity;
2089 END IF;
2090 END IF;
2091 END IF;
2092
2093 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2094 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2095 p_krpv_rec.Conversion_Option_Code IS NULL)
2096 THEN
2097 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2098 'Conversion Option Code');
2099 l_return_status := OKC_API.G_RET_STS_ERROR;
2100 IF (p_stack_messages = 'N') THEN
2101 RAISE violated_ref_integrity;
2102 END IF;
2103 END IF;
2104 END IF;*/
2105
2106 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2107 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2108 p_krpv_rec.Next_Conversion_Date IS NULL)
2109 THEN
2110 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2111 'Next Conversion Date');
2112 l_return_status := OKC_API.G_RET_STS_ERROR;
2113 IF (p_stack_messages = 'N') THEN
2114 RAISE violated_ref_integrity;
2115 END IF;
2116 END IF;
2117 END IF;*/
2118
2119 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2120 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2121 p_krpv_rec.Conversion_Type_Code IS NULL)
2122 THEN
2123 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2124 'Conversion Type Code');
2125 l_return_status := OKC_API.G_RET_STS_ERROR;
2126 IF (p_stack_messages = 'N') THEN
2127 RAISE violated_ref_integrity;
2128 END IF;
2129 END IF;
2130 END IF;*/
2131
2132
2133 /* AKP Todo: To check these lookup values correctness */
2134 ELSIF (p_int_calc_basis IN ('FLOAT')
2135 AND p_rev_rec_method = 'ESTIMATED_AND_BILLED') THEN
2136 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2137 p_krpv_rec.Interest_Index_Id IS NULL)
2138 THEN
2139 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2140 'Interest Index Id');
2141 l_return_status := OKC_API.G_RET_STS_ERROR;
2142 IF (p_stack_messages = 'N') THEN
2143 RAISE violated_ref_integrity;
2144 END IF;
2145 END IF;
2146
2147 -- Bug 4907390
2148 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2149 p_krpv_rec.Base_Rate IS NULL)
2150 THEN
2151 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2152 'Base Rate');
2153 l_return_status := OKC_API.G_RET_STS_ERROR;
2154 IF (p_stack_messages = 'N') THEN
2155 RAISE violated_ref_integrity;
2156 END IF;
2157 END IF;*/
2158
2159 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2160 p_krpv_rec.Interest_Start_Date IS NULL)
2161 THEN
2162 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2163 'Interest Start Date');
2164 l_return_status := OKC_API.G_RET_STS_ERROR;
2165 IF (p_stack_messages = 'N') THEN
2166 RAISE violated_ref_integrity;
2167 END IF;
2168 END IF;
2169
2170 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2171 p_krpv_rec.Adder_Rate IS NULL)
2172 THEN
2173 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2174 'Adder Rate');
2175 l_return_status := OKC_API.G_RET_STS_ERROR;
2176 IF (p_stack_messages = 'N') THEN
2177 RAISE violated_ref_integrity;
2178 END IF;
2179 END IF;
2180
2181 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2182 p_krpv_rec.Maximum_Rate IS NULL)
2183 THEN
2184 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2185 'Maximum Rate');
2186 l_return_status := OKC_API.G_RET_STS_ERROR;
2187 IF (p_stack_messages = 'N') THEN
2188 RAISE violated_ref_integrity;
2189 END IF;
2190 END IF;
2191
2192 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2193 p_krpv_rec.Minimum_Rate IS NULL)
2194 THEN
2195 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2196 'Minimum Rate');
2197 l_return_status := OKC_API.G_RET_STS_ERROR;
2198 IF (p_stack_messages = 'N') THEN
2199 RAISE violated_ref_integrity;
2200 END IF;
2201 END IF;
2202
2203 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2204 p_krpv_rec.Principal_Basis_Code IS NULL)
2205 THEN
2206 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2207 'Principal Basis Code');
2208 l_return_status := OKC_API.G_RET_STS_ERROR;
2209 IF (p_stack_messages = 'N') THEN
2210 RAISE violated_ref_integrity;
2211 END IF;
2212 END IF;
2213
2214 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2215 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2216 THEN
2217 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2218 'Days In A Month Code');
2219 l_return_status := OKC_API.G_RET_STS_ERROR;
2220 IF (p_stack_messages = 'N') THEN
2221 RAISE violated_ref_integrity;
2222 END IF;
2223 END IF;
2224
2225 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2226 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2227 THEN
2228 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2229 'Days In A Year Code');
2230 l_return_status := OKC_API.G_RET_STS_ERROR;
2231 IF (p_stack_messages = 'N') THEN
2232 RAISE violated_ref_integrity;
2233 END IF;
2234 END IF;
2235
2236 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2237 p_krpv_rec.Interest_Basis_Code IS NULL)
2238 THEN
2239 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2240 'Interest Basis Code');
2241 l_return_status := OKC_API.G_RET_STS_ERROR;
2242 IF (p_stack_messages = 'N') THEN
2243 RAISE violated_ref_integrity;
2244 END IF;
2245 END IF;
2246
2247 -- Bug 4862551
2248 /*
2249 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2250 p_krpv_rec.Rate_Delay_Code IS NULL)
2251 THEN
2252 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2253 'Rate Delay Code');
2254 l_return_status := OKC_API.G_RET_STS_ERROR;
2255 IF (p_stack_messages = 'N') THEN
2256 RAISE violated_ref_integrity;
2257 END IF;
2258 END IF;
2259
2260 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2261 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2262 THEN
2263 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2264 'Rate Delay Frequency');
2265 l_return_status := OKC_API.G_RET_STS_ERROR;
2266 IF (p_stack_messages = 'N') THEN
2267 RAISE violated_ref_integrity;
2268 END IF;
2269 END IF;
2270 */
2271
2272 -- Bug 4862416
2273 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
2274 p_krpv_rec.Compounding_Frequency_Code IS NULL)
2275 THEN
2276 l_msg1_set := TRUE;
2277 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2278 'Compounding Frequency CODE');
2279 l_return_status := OKC_API.G_RET_STS_ERROR;
2280 IF (p_stack_messages = 'N') THEN
2281 RAISE violated_ref_integrity;
2282 END IF;
2283 END IF;
2284
2285 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2286 p_krpv_rec.Calculation_Formula_Id IS NULL)
2287 THEN
2288 l_msg2_set := TRUE;
2289 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2290 'Formula Name');
2291 l_return_status := OKC_API.G_RET_STS_ERROR;
2292 IF (p_stack_messages = 'N') THEN
2293 RAISE violated_ref_integrity;
2294 END IF;
2295 END IF; */
2296
2297 -- Bug 4862551
2298 /*
2299 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2300 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2301 THEN
2302 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2303 'Rate Change Start Date');
2304 l_return_status := OKC_API.G_RET_STS_ERROR;
2305 IF (p_stack_messages = 'N') THEN
2306 RAISE violated_ref_integrity;
2307 END IF;
2308 END IF;
2309
2310 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2311 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2312 THEN
2313 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2314 'Rate Change Frequency Code');
2315 l_return_status := OKC_API.G_RET_STS_ERROR;
2316 IF (p_stack_messages = 'N') THEN
2317 RAISE violated_ref_integrity;
2318 END IF;
2319 END IF;
2320
2321 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2322 p_krpv_rec.Rate_Change_Value IS NULL)
2323 THEN
2324 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2325 'Rate Change Value');
2326 l_return_status := OKC_API.G_RET_STS_ERROR;
2327 IF (p_stack_messages = 'N') THEN
2328 RAISE violated_ref_integrity;
2329 END IF;
2330 END IF;
2331 */
2332
2333 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2334 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2335 p_krpv_rec.Conversion_Option_Code IS NULL)
2336 THEN
2337 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2338 'Conversion Option Code');
2339 l_return_status := OKC_API.G_RET_STS_ERROR;
2340 IF (p_stack_messages = 'N') THEN
2341 RAISE violated_ref_integrity;
2342 END IF;
2343 END IF;
2344 END IF;*/
2345
2346 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2347 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2348 p_krpv_rec.Next_Conversion_Date IS NULL)
2349 THEN
2350 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2351 'Next Conversion Date');
2352 l_return_status := OKC_API.G_RET_STS_ERROR;
2353 IF (p_stack_messages = 'N') THEN
2354 RAISE violated_ref_integrity;
2355 END IF;
2356 END IF;
2357 END IF;*/
2358
2359 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2360 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2361 p_krpv_rec.Conversion_Type_Code IS NULL)
2362 THEN
2363 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2364 'Conversion Type Code');
2365 l_return_status := OKC_API.G_RET_STS_ERROR;
2366 IF (p_stack_messages = 'N') THEN
2367 RAISE violated_ref_integrity;
2368 END IF;
2369 END IF;
2370 END IF;*/
2371
2372 ELSIF (p_int_calc_basis IN ('FLOAT', 'FIXED')
2373 AND p_rev_rec_method = 'ACTUAL') THEN
2374 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2375 p_krpv_rec.Interest_Index_Id IS NULL)
2376 THEN
2377 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2378 'Interest Index Id');
2379 l_return_status := OKC_API.G_RET_STS_ERROR;
2380 IF (p_stack_messages = 'N') THEN
2381 RAISE violated_ref_integrity;
2382 END IF;
2383 END IF;
2384
2385 -- Bug 4907390
2386 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2387 p_krpv_rec.Base_Rate IS NULL)
2388 THEN
2389 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2390 'Base Rate');
2391 l_return_status := OKC_API.G_RET_STS_ERROR;
2392 IF (p_stack_messages = 'N') THEN
2393 RAISE violated_ref_integrity;
2394 END IF;
2395 END IF;*/
2396
2397 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2398 p_krpv_rec.Interest_Start_Date IS NULL)
2399 THEN
2400 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2401 'Interest Start Date');
2402 l_return_status := OKC_API.G_RET_STS_ERROR;
2403 IF (p_stack_messages = 'N') THEN
2404 RAISE violated_ref_integrity;
2405 END IF;
2406 END IF;
2407
2408 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2409 p_krpv_rec.Adder_Rate IS NULL)
2410 THEN
2411 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2412 'Adder Rate');
2413 l_return_status := OKC_API.G_RET_STS_ERROR;
2414 IF (p_stack_messages = 'N') THEN
2415 RAISE violated_ref_integrity;
2416 END IF;
2417 END IF;
2418
2419 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2420 p_krpv_rec.Maximum_Rate IS NULL)
2421 THEN
2422 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2423 'Maximum Rate');
2424 l_return_status := OKC_API.G_RET_STS_ERROR;
2425 IF (p_stack_messages = 'N') THEN
2426 RAISE violated_ref_integrity;
2427 END IF;
2428 END IF;
2429
2430 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2431 p_krpv_rec.Minimum_Rate IS NULL)
2432 THEN
2433 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2434 'Minimum Rate');
2435 l_return_status := OKC_API.G_RET_STS_ERROR;
2436 IF (p_stack_messages = 'N') THEN
2437 RAISE violated_ref_integrity;
2438 END IF;
2439 END IF;
2440
2441 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2442 p_krpv_rec.Principal_Basis_Code IS NULL)
2443 THEN
2444 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2445 'Principal Basis Code');
2446 l_return_status := OKC_API.G_RET_STS_ERROR;
2447 IF (p_stack_messages = 'N') THEN
2448 RAISE violated_ref_integrity;
2449 END IF;
2450 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2451 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2452 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
2453 -- AKP: Todo: Set Proper Message
2454 --(Principal Basis Code is 'ACTUAL' allowed only)
2455 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2456 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2457 ,p_token1 => 'VALUE'
2458 ,p_token1_value => 'ACTUAL'
2459 ,p_token2 => 'CODE0'
2460 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2461 ,p_token3 => 'CODE1'
2462 ,p_token3_value => 'FLOAT'
2463 ,p_token4 => 'CODE2'
2464 ,p_token4_value => 'ACTUAL');
2465 l_return_status := OKC_API.G_RET_STS_ERROR;
2466 IF (p_stack_messages = 'N') THEN
2467 RAISE violated_ref_integrity;
2468 END IF;
2469 END IF;
2470 END IF;
2471
2472 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2473 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2474 THEN
2475 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2476 'Days In A Month Code');
2477 l_return_status := OKC_API.G_RET_STS_ERROR;
2478 IF (p_stack_messages = 'N') THEN
2479 RAISE violated_ref_integrity;
2480 END IF;
2481 END IF;
2482
2483 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2484 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2485 THEN
2486 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2487 'Days In A Year Code');
2488 l_return_status := OKC_API.G_RET_STS_ERROR;
2489 IF (p_stack_messages = 'N') THEN
2490 RAISE violated_ref_integrity;
2491 END IF;
2492 END IF;
2493
2494 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2495 p_krpv_rec.Interest_Basis_Code IS NULL)
2496 THEN
2497 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2498 'Interest Basis Code');
2499 l_return_status := OKC_API.G_RET_STS_ERROR;
2500 IF (p_stack_messages = 'N') THEN
2501 RAISE violated_ref_integrity;
2502 END IF;
2503 END IF;
2504
2505 -- Bug 4862551
2506 /*
2507 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2508 p_krpv_rec.Rate_Delay_Code IS NULL)
2509 THEN
2510 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2511 'Rate Delay Code');
2512 l_return_status := OKC_API.G_RET_STS_ERROR;
2513 IF (p_stack_messages = 'N') THEN
2514 RAISE violated_ref_integrity;
2515 END IF;
2516 END IF;
2517
2518 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2519 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2520 THEN
2521 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2522 'Rate Delay Frequency');
2523 l_return_status := OKC_API.G_RET_STS_ERROR;
2524 IF (p_stack_messages = 'N') THEN
2525 RAISE violated_ref_integrity;
2526 END IF;
2527 END IF;
2528 */
2529
2530 -- Bug 4862416
2531 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
2532 p_krpv_rec.Compounding_Frequency_Code IS NULL)
2533 THEN
2534 l_msg1_set := TRUE;
2535 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2536 'Compounding Frequency CODE');
2537 l_return_status := OKC_API.G_RET_STS_ERROR;
2538 IF (p_stack_messages = 'N') THEN
2539 RAISE violated_ref_integrity;
2540 END IF;
2541 END IF;
2542
2543 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
2544 p_krpv_rec.Calculation_Formula_Id IS NULL)
2545 THEN
2546 l_msg2_set := TRUE;
2547 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2548 'Formula Name');
2549 l_return_status := OKC_API.G_RET_STS_ERROR;
2550 IF (p_stack_messages = 'N') THEN
2551 RAISE violated_ref_integrity;
2552 END IF;
2553 END IF;*/
2554
2555 -- Bug 4862551
2556 /*
2557 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2558 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2559 THEN
2560 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2561 'Rate Change Start Date');
2562 l_return_status := OKC_API.G_RET_STS_ERROR;
2563 IF (p_stack_messages = 'N') THEN
2564 RAISE violated_ref_integrity;
2565 END IF;
2566 END IF;
2567
2568 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2569 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2570 THEN
2571 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2572 'Rate Change Frequency Code');
2573 l_return_status := OKC_API.G_RET_STS_ERROR;
2574 IF (p_stack_messages = 'N') THEN
2575 RAISE violated_ref_integrity;
2576 END IF;
2577 END IF;
2578
2579 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2580 p_krpv_rec.Rate_Change_Value IS NULL)
2581 THEN
2582 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2583 'Rate Change Value');
2584 l_return_status := OKC_API.G_RET_STS_ERROR;
2585 IF (p_stack_messages = 'N') THEN
2586 RAISE violated_ref_integrity;
2587 END IF;
2588 END IF;
2589 */
2590
2591 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2592 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2593 p_krpv_rec.Conversion_Option_Code IS NULL)
2594 THEN
2595 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2596 'Conversion Option Code');
2597 l_return_status := OKC_API.G_RET_STS_ERROR;
2598 IF (p_stack_messages = 'N') THEN
2599 RAISE violated_ref_integrity;
2600 END IF;
2601 END IF;
2602 END IF;*/
2603
2604 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2605 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2606 p_krpv_rec.Next_Conversion_Date IS NULL)
2607 THEN
2608 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2609 'Next Conversion Date');
2610 l_return_status := OKC_API.G_RET_STS_ERROR;
2611 IF (p_stack_messages = 'N') THEN
2612 RAISE violated_ref_integrity;
2613 END IF;
2614 END IF;
2615 END IF;*/
2616
2617 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2618 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2619 p_krpv_rec.Conversion_Type_Code IS NULL)
2620 THEN
2621 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2622 'Conversion Type Code');
2623 l_return_status := OKC_API.G_RET_STS_ERROR;
2624 IF (p_stack_messages = 'N') THEN
2625 RAISE violated_ref_integrity;
2626 END IF;
2627 END IF;
2628 END IF;*/
2629
2630 ELSIF (p_int_calc_basis = 'REAMORT'
2631 AND p_rev_rec_method = 'STREAMS') THEN
2632 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2633 p_krpv_rec.Interest_Index_Id IS NULL)
2634 THEN
2635 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2636 'Interest Index Id');
2637 l_return_status := OKC_API.G_RET_STS_ERROR;
2638 IF (p_stack_messages = 'N') THEN
2639 RAISE violated_ref_integrity;
2640 END IF;
2641 END IF;
2642
2643 -- Bug 4907390
2644 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2645 p_krpv_rec.Base_Rate IS NULL)
2646 THEN
2647 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2648 'Base Rate');
2649 l_return_status := OKC_API.G_RET_STS_ERROR;
2650 IF (p_stack_messages = 'N') THEN
2651 RAISE violated_ref_integrity;
2652 END IF;
2653 END IF;*/
2654
2655 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2656 p_krpv_rec.Interest_Start_Date IS NULL)
2657 THEN
2658 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2659 'Interest Start Date');
2660 l_return_status := OKC_API.G_RET_STS_ERROR;
2661 IF (p_stack_messages = 'N') THEN
2662 RAISE violated_ref_integrity;
2663 END IF;
2664 END IF;
2665
2666 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2667 p_krpv_rec.Adder_Rate IS NULL)
2668 THEN
2669 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2670 'Adder Rate');
2671 l_return_status := OKC_API.G_RET_STS_ERROR;
2672 IF (p_stack_messages = 'N') THEN
2673 RAISE violated_ref_integrity;
2674 END IF;
2675 END IF;
2676
2677 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2678 p_krpv_rec.Maximum_Rate IS NULL)
2679 THEN
2680 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2681 'Maximum Rate');
2682 l_return_status := OKC_API.G_RET_STS_ERROR;
2683 IF (p_stack_messages = 'N') THEN
2684 RAISE violated_ref_integrity;
2685 END IF;
2686 END IF;
2687
2688 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
2689 p_krpv_rec.Minimum_Rate IS NULL)
2690 THEN
2691 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2692 'Minimum Rate');
2693 l_return_status := OKC_API.G_RET_STS_ERROR;
2694 IF (p_stack_messages = 'N') THEN
2695 RAISE violated_ref_integrity;
2696 END IF;
2697 END IF;
2698
2699 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
2700 p_krpv_rec.Principal_Basis_Code IS NULL)
2701 THEN
2702 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2703 'Principal Basis Code');
2704 l_return_status := OKC_API.G_RET_STS_ERROR;
2705 IF (p_stack_messages = 'N') THEN
2706 RAISE violated_ref_integrity;
2707 END IF;
2708 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
2709 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
2710 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN
2711 -- AKP: Todo: Set Proper Message
2712 --(Principal Basis Code is 'SCHEDULED' allowed only)
2713 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2714 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2715 ,p_token1 => 'VALUE'
2716 ,p_token1_value => 'SCHEDULED'
2717 ,p_token2 => 'CODE0'
2718 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
2719 ,p_token3 => 'CODE1'
2720 ,p_token3_value => 'REAMORT'
2721 ,p_token4 => 'CODE2'
2722 ,p_token4_value => 'STREAMS');
2723 l_return_status := OKC_API.G_RET_STS_ERROR;
2724 IF (p_stack_messages = 'N') THEN
2725 RAISE violated_ref_integrity;
2726 END IF;
2727 END IF;
2728 END IF;
2729
2730 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
2731 p_krpv_rec.Days_In_A_Month_Code IS NULL)
2732 THEN
2733 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2734 'Days In A Month Code');
2735 l_return_status := OKC_API.G_RET_STS_ERROR;
2736 IF (p_stack_messages = 'N') THEN
2737 RAISE violated_ref_integrity;
2738 END IF;
2739 ELSIF (p_krpv_rec.Days_In_A_Month_Code <> OKC_API.G_MISS_CHAR AND
2740 p_krpv_rec.Days_In_A_Month_Code IS NOT NULL) THEN
2741 IF (p_krpv_rec.Days_In_A_Month_Code <> '30') THEN
2742 -- AKP: Todo: Set Proper Message
2743 --(Days In A Month Code is '30' allowed only)
2744 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2745 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2746 ,p_token1 => 'VALUE'
2747 ,p_token1_value => '30'
2748 ,p_token2 => 'CODE0'
2749 ,p_token2_value => 'DAYS_IN_A_MONTH_CODE'
2750 ,p_token3 => 'CODE1'
2751 ,p_token3_value => 'REAMORT'
2752 ,p_token4 => 'CODE2'
2753 ,p_token4_value => 'STREAMS');
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 END IF;
2759 END IF;
2760
2761 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
2762 p_krpv_rec.Days_In_A_Year_Code IS NULL)
2763 THEN
2764 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2765 'Days In A Year Code');
2766 l_return_status := OKC_API.G_RET_STS_ERROR;
2767 IF (p_stack_messages = 'N') THEN
2768 RAISE violated_ref_integrity;
2769 END IF;
2770 ELSIF (p_krpv_rec.Days_In_A_Year_Code <> OKC_API.G_MISS_CHAR AND
2771 p_krpv_rec.Days_In_A_Year_Code IS NOT NULL) THEN
2772 IF (p_krpv_rec.Days_In_A_Year_Code <> '360') THEN
2773 -- AKP: Todo: Set Proper Message
2774 --(Days In A Year Code is '360' allowed only)
2775 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2776 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2777 ,p_token1 => 'VALUE'
2778 ,p_token1_value => '360'
2779 ,p_token2 => 'CODE0'
2780 ,p_token2_value => 'DAYS_IN_A_YEAR_CODE'
2781 ,p_token3 => 'CODE1'
2782 ,p_token3_value => 'REAMORT'
2783 ,p_token4 => 'CODE2'
2784 ,p_token4_value => 'STREAMS');
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 END IF;
2790 END IF;
2791
2792 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
2793 p_krpv_rec.Interest_Basis_Code IS NULL)
2794 THEN
2795 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2796 'Interest Basis Code');
2797 l_return_status := OKC_API.G_RET_STS_ERROR;
2798 IF (p_stack_messages = 'N') THEN
2799 RAISE violated_ref_integrity;
2800 END IF;
2801 ELSIF (p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR AND
2802 p_krpv_rec.Interest_Basis_Code IS NOT NULL) THEN
2803 IF (p_krpv_rec.Interest_Basis_Code <> 'SIMPLE') THEN
2804 -- AKP: Todo: Set Proper Message
2805 --(Interest Basis Code is 'SIMPLE' allowed only)
2806 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2807 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2808 ,p_token1 => 'VALUE'
2809 ,p_token1_value => 'SIMPLE'
2810 ,p_token2 => 'CODE0'
2811 ,p_token2_value => 'INTEREST_BASIS_CODE'
2812 ,p_token3 => 'CODE1'
2813 ,p_token3_value => 'REAMORT'
2814 ,p_token4 => 'CODE2'
2815 ,p_token4_value => 'STREAMS');
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 END IF;
2821 END IF;
2822
2823 -- Bug 4862551
2824 /*
2825 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
2826 p_krpv_rec.Rate_Delay_Code IS NULL)
2827 THEN
2828 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2829 'Rate Delay Code');
2830 l_return_status := OKC_API.G_RET_STS_ERROR;
2831 IF (p_stack_messages = 'N') THEN
2832 RAISE violated_ref_integrity;
2833 END IF;
2834 END IF;
2835
2836 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
2837 p_krpv_rec.Rate_Delay_Frequency IS NULL)
2838 THEN
2839 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2840 'Rate Delay Frequency');
2841 l_return_status := OKC_API.G_RET_STS_ERROR;
2842 IF (p_stack_messages = 'N') THEN
2843 RAISE violated_ref_integrity;
2844 END IF;
2845 END IF;
2846
2847 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
2848 p_krpv_rec.Rate_Change_Start_Date IS NULL)
2849 THEN
2850 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2851 'Rate Change Start Date');
2852 l_return_status := OKC_API.G_RET_STS_ERROR;
2853 IF (p_stack_messages = 'N') THEN
2854 RAISE violated_ref_integrity;
2855 END IF;
2856 END IF;
2857 */
2858
2859 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
2860 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
2861 THEN
2862 -- Bug 4862551
2863 NULL;
2864 /*OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2865 'Rate Change Frequency Code');
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 ELSIF (p_krpv_rec.Rate_Change_Frequency_Code <> OKC_API.G_MISS_CHAR AND
2871 p_krpv_rec.Rate_Change_Frequency_Code IS NOT NULL) THEN
2872 IF (p_krpv_rec.Rate_Change_Frequency_Code <> 'BILLING_DATE') THEN
2873 -- AKP: Todo: Set Proper Message
2874 --(Rate Change Frequency Code is 'BILLING_DATE' allowed only)
2875 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
2876 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
2877 ,p_token1 => 'VALUE'
2878 ,p_token1_value => 'BILLING_DATE'
2879 ,p_token2 => 'CODE0'
2880 ,p_token2_value => 'RATE_CHANGE_FREQUENCY_CODE'
2881 ,p_token3 => 'CODE1'
2882 ,p_token3_value => 'REAMORT'
2883 ,p_token4 => 'CODE2'
2884 ,p_token4_value => 'STREAMS');
2885 l_return_status := OKC_API.G_RET_STS_ERROR;
2886 IF (p_stack_messages = 'N') THEN
2887 RAISE violated_ref_integrity;
2888 END IF;
2889 END IF;
2890 END IF;
2891
2892 -- Bug 4862551
2893 /*
2894 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
2895 p_krpv_rec.Rate_Change_Value IS NULL)
2896 THEN
2897 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2898 'Rate Change Value');
2899 l_return_status := OKC_API.G_RET_STS_ERROR;
2900 IF (p_stack_messages = 'N') THEN
2901 RAISE violated_ref_integrity;
2902 END IF;
2903 END IF;
2904 */
2905
2906 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2907 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
2908 p_krpv_rec.Conversion_Option_Code IS NULL)
2909 THEN
2910 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2911 'Conversion Option Code');
2912 l_return_status := OKC_API.G_RET_STS_ERROR;
2913 IF (p_stack_messages = 'N') THEN
2914 RAISE violated_ref_integrity;
2915 END IF;
2916 END IF;
2917 END IF;*/
2918
2919 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2920 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
2921 p_krpv_rec.Next_Conversion_Date IS NULL)
2922 THEN
2923 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2924 'Next Conversion Date');
2925 l_return_status := OKC_API.G_RET_STS_ERROR;
2926 IF (p_stack_messages = 'N') THEN
2927 RAISE violated_ref_integrity;
2928 END IF;
2929 END IF;
2930 END IF;*/
2931
2932 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
2933 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
2934 p_krpv_rec.Conversion_Type_Code IS NULL)
2935 THEN
2936 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2937 'Conversion Type Code');
2938 l_return_status := OKC_API.G_RET_STS_ERROR;
2939 IF (p_stack_messages = 'N') THEN
2940 RAISE violated_ref_integrity;
2941 END IF;
2942 END IF;
2943 END IF;*/
2944
2945 ELSIF (p_int_calc_basis = 'REAMORT'
2946 AND p_rev_rec_method = 'ACTUAL') THEN
2947 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
2948 p_krpv_rec.Interest_Index_Id IS NULL)
2949 THEN
2950 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2951 'Interest Index Id');
2952 l_return_status := OKC_API.G_RET_STS_ERROR;
2953 IF (p_stack_messages = 'N') THEN
2954 RAISE violated_ref_integrity;
2955 END IF;
2956 END IF;
2957
2958 -- Bug 4907390
2959 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
2960 p_krpv_rec.Base_Rate IS NULL)
2961 THEN
2962 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2963 'Base Rate');
2964 l_return_status := OKC_API.G_RET_STS_ERROR;
2965 IF (p_stack_messages = 'N') THEN
2966 RAISE violated_ref_integrity;
2967 END IF;
2968 END IF;*/
2969
2970 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
2971 p_krpv_rec.Interest_Start_Date IS NULL)
2972 THEN
2973 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2974 'Interest Start 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
2981 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
2982 p_krpv_rec.Adder_Rate IS NULL)
2983 THEN
2984 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2985 'Adder Rate');
2986 l_return_status := OKC_API.G_RET_STS_ERROR;
2987 IF (p_stack_messages = 'N') THEN
2988 RAISE violated_ref_integrity;
2989 END IF;
2990 END IF;
2991
2992 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
2993 p_krpv_rec.Maximum_Rate IS NULL)
2994 THEN
2995 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
2996 'Maximum Rate');
2997 l_return_status := OKC_API.G_RET_STS_ERROR;
2998 IF (p_stack_messages = 'N') THEN
2999 RAISE violated_ref_integrity;
3000 END IF;
3001 END IF;
3002
3003 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3004 p_krpv_rec.Minimum_Rate IS NULL)
3005 THEN
3006 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3007 'Minimum Rate');
3008 l_return_status := OKC_API.G_RET_STS_ERROR;
3009 IF (p_stack_messages = 'N') THEN
3010 RAISE violated_ref_integrity;
3011 END IF;
3012 END IF;
3013
3014 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3015 p_krpv_rec.Principal_Basis_Code IS NULL)
3016 THEN
3017 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3018 'Principal Basis Code');
3019 l_return_status := OKC_API.G_RET_STS_ERROR;
3020 IF (p_stack_messages = 'N') THEN
3021 RAISE violated_ref_integrity;
3022 END IF;
3023 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3024 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3025 IF (p_krpv_rec.Principal_Basis_Code <> 'SCHEDULED') THEN -- 4896751
3026 --IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN -- 4753087
3027 -- AKP: Todo: Set Proper Message
3028 --(Principal Basis Code is 'ACTUAL' allowed only) -- 4753087
3029 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3030 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3031 ,p_token1 => 'VALUE'
3032 --,p_token1_value => 'ACTUAL' -- 4753087
3033 ,p_token1_value => 'SCHEDULED' -- 4896751
3034 ,p_token2 => 'CODE0'
3035 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3036 ,p_token3 => 'CODE1'
3037 ,p_token3_value => 'REAMORT'
3038 ,p_token4 => 'CODE2'
3039 ,p_token4_value => 'ACTUAL');
3040 l_return_status := OKC_API.G_RET_STS_ERROR;
3041 IF (p_stack_messages = 'N') THEN
3042 RAISE violated_ref_integrity;
3043 END IF;
3044 END IF;
3045 END IF;
3046
3047 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3048 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3049 THEN
3050 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3051 'Days In A Month Code');
3052 l_return_status := OKC_API.G_RET_STS_ERROR;
3053 IF (p_stack_messages = 'N') THEN
3054 RAISE violated_ref_integrity;
3055 END IF;
3056 END IF;
3057
3058 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3059 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3060 THEN
3061 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3062 'Days In A Year Code');
3063 l_return_status := OKC_API.G_RET_STS_ERROR;
3064 IF (p_stack_messages = 'N') THEN
3065 RAISE violated_ref_integrity;
3066 END IF;
3067 END IF;
3068
3069 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3070 p_krpv_rec.Interest_Basis_Code IS NULL)
3071 THEN
3072 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3073 'Interest Basis Code');
3074 l_return_status := OKC_API.G_RET_STS_ERROR;
3075 IF (p_stack_messages = 'N') THEN
3076 RAISE violated_ref_integrity;
3077 END IF;
3078 END IF;
3079
3080 -- Bug 4862551
3081 /*
3082 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3083 p_krpv_rec.Rate_Delay_Code IS NULL)
3084 THEN
3085 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3086 'Rate Delay Code');
3087 l_return_status := OKC_API.G_RET_STS_ERROR;
3088 IF (p_stack_messages = 'N') THEN
3089 RAISE violated_ref_integrity;
3090 END IF;
3091 END IF;
3092
3093 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3094 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3095 THEN
3096 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3097 'Rate Delay Frequency');
3098 l_return_status := OKC_API.G_RET_STS_ERROR;
3099 IF (p_stack_messages = 'N') THEN
3100 RAISE violated_ref_integrity;
3101 END IF;
3102 END IF;
3103 */
3104
3105 -- Bug 4862416
3106 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3107 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3108 THEN
3109 l_msg1_set := TRUE;
3110 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3111 'Compounding Frequency Code');
3112 l_return_status := OKC_API.G_RET_STS_ERROR;
3113 IF (p_stack_messages = 'N') THEN
3114 RAISE violated_ref_integrity;
3115 END IF;
3116 END IF;
3117
3118 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3119 p_krpv_rec.Calculation_Formula_Id IS NULL)
3120 THEN
3121 l_msg2_set := TRUE;
3122 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3123 'Formula Name');
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 /*
3131 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
3132 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3133 THEN
3134 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3135 'Rate Change Start Date');
3136 l_return_status := OKC_API.G_RET_STS_ERROR;
3137 IF (p_stack_messages = 'N') THEN
3138 RAISE violated_ref_integrity;
3139 END IF;
3140 END IF;
3141
3142 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3143 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3144 THEN
3145 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3146 'Rate Change Frequency Code');
3147 l_return_status := OKC_API.G_RET_STS_ERROR;
3148 IF (p_stack_messages = 'N') THEN
3149 RAISE violated_ref_integrity;
3150 END IF;
3151 END IF;
3152
3153 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3154 p_krpv_rec.Rate_Change_Value IS NULL)
3155 THEN
3156 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3157 'Rate Change Value');
3158 l_return_status := OKC_API.G_RET_STS_ERROR;
3159 IF (p_stack_messages = 'N') THEN
3160 RAISE violated_ref_integrity;
3161 END IF;
3162 END IF;
3163 */
3164
3165 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3166 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3167 p_krpv_rec.Conversion_Option_Code IS NULL)
3168 THEN
3169 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3170 'Conversion Option Code');
3171 l_return_status := OKC_API.G_RET_STS_ERROR;
3172 IF (p_stack_messages = 'N') THEN
3173 RAISE violated_ref_integrity;
3174 END IF;
3175 END IF;
3176 END IF;*/
3177
3178 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3179 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3180 p_krpv_rec.Next_Conversion_Date IS NULL)
3181 THEN
3182 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3183 'Next Conversion Date');
3184 l_return_status := OKC_API.G_RET_STS_ERROR;
3185 IF (p_stack_messages = 'N') THEN
3186 RAISE violated_ref_integrity;
3187 END IF;
3188 END IF;
3189 END IF;*/
3190
3191 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3192 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3193 p_krpv_rec.Conversion_Type_Code IS NULL)
3194 THEN
3195 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3196 'Conversion Type 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 END IF;*/
3203
3204 ELSIF (p_int_calc_basis = 'CATCHUP/CLEANUP'
3205 AND p_rev_rec_method = 'STREAMS') THEN
3206 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
3207 p_krpv_rec.Interest_Index_Id IS NULL)
3208 THEN
3209 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3210 'Interest Index Id');
3211 l_return_status := OKC_API.G_RET_STS_ERROR;
3212 IF (p_stack_messages = 'N') THEN
3213 RAISE violated_ref_integrity;
3214 END IF;
3215 END IF;
3216
3217 -- Bug 4907390
3218 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
3219 p_krpv_rec.Base_Rate IS NULL)
3220 THEN
3221 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3222 'Base Rate');
3223 l_return_status := OKC_API.G_RET_STS_ERROR;
3224 IF (p_stack_messages = 'N') THEN
3225 RAISE violated_ref_integrity;
3226 END IF;
3227 END IF;*/
3228
3229 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
3230 p_krpv_rec.Interest_Start_Date IS NULL)
3231 THEN
3232 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3233 'Interest Start 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
3240 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
3241 p_krpv_rec.Adder_Rate IS NULL)
3242 THEN
3243 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3244 'Adder Rate');
3245 l_return_status := OKC_API.G_RET_STS_ERROR;
3246 IF (p_stack_messages = 'N') THEN
3247 RAISE violated_ref_integrity;
3248 END IF;
3249 END IF;
3250
3251 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
3252 p_krpv_rec.Maximum_Rate IS NULL)
3253 THEN
3254 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3255 'Maximum Rate');
3256 l_return_status := OKC_API.G_RET_STS_ERROR;
3257 IF (p_stack_messages = 'N') THEN
3258 RAISE violated_ref_integrity;
3259 END IF;
3260 END IF;
3261
3262 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3263 p_krpv_rec.Minimum_Rate IS NULL)
3264 THEN
3265 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3266 'Minimum Rate');
3267 l_return_status := OKC_API.G_RET_STS_ERROR;
3268 IF (p_stack_messages = 'N') THEN
3269 RAISE violated_ref_integrity;
3270 END IF;
3271 END IF;
3272
3273 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3274 p_krpv_rec.Principal_Basis_Code IS NULL)
3275 THEN
3276 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3277 'Principal Basis Code');
3278 l_return_status := OKC_API.G_RET_STS_ERROR;
3279 IF (p_stack_messages = 'N') THEN
3280 RAISE violated_ref_integrity;
3281 END IF;
3282 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3283 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3284 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
3285 -- AKP: Todo: Set Proper Message
3286 --(Principal Basis Code is 'ACTUAL' allowed only)
3287 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3288 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3289 ,p_token1 => 'VALUE'
3290 ,p_token1_value => 'ACTUAL'
3291 ,p_token2 => 'CODE0'
3292 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3293 ,p_token3 => 'CODE1'
3294 ,p_token3_value => 'CATCHUP/CLEANUP'
3295 ,p_token4 => 'CODE2'
3296 ,p_token4_value => 'STREAMS');
3297 l_return_status := OKC_API.G_RET_STS_ERROR;
3298 IF (p_stack_messages = 'N') THEN
3299 RAISE violated_ref_integrity;
3300 END IF;
3301 END IF;
3302 END IF;
3303
3304 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3305 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3306 THEN
3307 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3308 'Days In A Month Code');
3309 l_return_status := OKC_API.G_RET_STS_ERROR;
3310 IF (p_stack_messages = 'N') THEN
3311 RAISE violated_ref_integrity;
3312 END IF;
3313 END IF;
3314
3315 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3316 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3317 THEN
3318 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3319 'Days In A Year Code');
3320 l_return_status := OKC_API.G_RET_STS_ERROR;
3321 IF (p_stack_messages = 'N') THEN
3322 RAISE violated_ref_integrity;
3323 END IF;
3324 END IF;
3325
3326 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3327 p_krpv_rec.Interest_Basis_Code IS NULL)
3328 THEN
3329 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3330 'Interest Basis Code');
3331 l_return_status := OKC_API.G_RET_STS_ERROR;
3332 IF (p_stack_messages = 'N') THEN
3333 RAISE violated_ref_integrity;
3334 END IF;
3335 END IF;
3336
3337 -- Bug 4862551
3338 /*
3339 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3340 p_krpv_rec.Rate_Delay_Code IS NULL)
3341 THEN
3342 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3343 'Rate Delay Code');
3344 l_return_status := OKC_API.G_RET_STS_ERROR;
3345 IF (p_stack_messages = 'N') THEN
3346 RAISE violated_ref_integrity;
3347 END IF;
3348 END IF;
3349
3350 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3351 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3352 THEN
3353 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3354 'Rate Delay Frequency');
3355 l_return_status := OKC_API.G_RET_STS_ERROR;
3356 IF (p_stack_messages = 'N') THEN
3357 RAISE violated_ref_integrity;
3358 END IF;
3359 END IF;
3360 */
3361
3362 -- Bug 4862416
3363 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3364 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3365 THEN
3366 l_msg1_set := TRUE;
3367 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3368 'Compounding Frequency Code');
3369 l_return_status := OKC_API.G_RET_STS_ERROR;
3370 IF (p_stack_messages = 'N') THEN
3371 RAISE violated_ref_integrity;
3372 END IF;
3373 END IF;
3374
3375 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3376 p_krpv_rec.Calculation_Formula_Id IS NULL)
3377 THEN
3378 l_msg2_set := TRUE;
3379 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3380 'Formula Name');
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 IF (p_krpv_rec.Catchup_Basis_Code = OKC_API.G_MISS_CHAR OR
3388 p_krpv_rec.Catchup_Basis_Code IS NULL)
3389 THEN
3390 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3391 'Catchup Basis Code');
3392 l_return_status := OKC_API.G_RET_STS_ERROR;
3393 IF (p_stack_messages = 'N') THEN
3394 RAISE violated_ref_integrity;
3395 END IF;
3396 ELSIF (p_krpv_rec.Catchup_Basis_Code <> OKC_API.G_MISS_CHAR AND
3397 p_krpv_rec.Catchup_Basis_Code IS NOT NULL) THEN
3398 IF (p_krpv_rec.Catchup_Basis_Code <> 'ACTUAL') THEN
3399 -- AKP: Todo: Set Proper Message
3400 --(Catchup Basis Code is 'ACTUAL' allowed only)
3401 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3402 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3403 ,p_token1 => 'VALUE'
3404 ,p_token1_value => 'ACTUAL'
3405 ,p_token2 => 'CODE0'
3406 ,p_token2_value => 'CATCHUP_BASIS_CODE'
3407 ,p_token3 => 'CODE1'
3408 ,p_token3_value => 'CATCHUP/CLEANUP'
3409 ,p_token4 => 'CODE2'
3410 ,p_token4_value => 'STREAMS');
3411 l_return_status := OKC_API.G_RET_STS_ERROR;
3412 IF (p_stack_messages = 'N') THEN
3413 RAISE violated_ref_integrity;
3414 END IF;
3415 END IF;
3416 END IF;
3417
3418 IF (p_krpv_rec.Catchup_Start_Date = OKC_API.G_MISS_DATE OR
3419 p_krpv_rec.Catchup_Start_Date IS NULL)
3420 THEN
3421 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3422 'Catchup Start Date');
3423 l_return_status := OKC_API.G_RET_STS_ERROR;
3424 IF (p_stack_messages = 'N') THEN
3425 RAISE violated_ref_integrity;
3426 END IF;
3427 END IF;
3428
3429 IF (p_krpv_rec.Catchup_Settlement_Code = OKC_API.G_MISS_CHAR OR
3430 p_krpv_rec.Catchup_Settlement_Code IS NULL)
3431 THEN
3432 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3433 'Catchup Settlement Code');
3434 l_return_status := OKC_API.G_RET_STS_ERROR;
3435 IF (p_stack_messages = 'N') THEN
3436 RAISE violated_ref_integrity;
3437 END IF;
3438 END IF;
3439
3440 -- Bug 4862551
3441 /*
3442 IF (p_krpv_rec.Rate_Change_Start_Date = OKC_API.G_MISS_DATE OR
3443 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3444 THEN
3445 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3446 'Rate Change Start Date');
3447 l_return_status := OKC_API.G_RET_STS_ERROR;
3448 IF (p_stack_messages = 'N') THEN
3449 RAISE violated_ref_integrity;
3450 END IF;
3451 END IF;
3452
3453 IF (p_krpv_rec.Rate_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3454 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3455 THEN
3456 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3457 'Rate Change Frequency Code');
3458 l_return_status := OKC_API.G_RET_STS_ERROR;
3459 IF (p_stack_messages = 'N') THEN
3460 RAISE violated_ref_integrity;
3461 END IF;
3462 END IF;
3463
3464 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3465 p_krpv_rec.Rate_Change_Value IS NULL)
3466 THEN
3467 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3468 'Rate Change Value');
3469 l_return_status := OKC_API.G_RET_STS_ERROR;
3470 IF (p_stack_messages = 'N') THEN
3471 RAISE violated_ref_integrity;
3472 END IF;
3473 END IF;
3474 */
3475
3476 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3477 IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3478 p_krpv_rec.Conversion_Option_Code IS NULL)
3479 THEN
3480 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3481 'Conversion Option Code');
3482 l_return_status := OKC_API.G_RET_STS_ERROR;
3483 IF (p_stack_messages = 'N') THEN
3484 RAISE violated_ref_integrity;
3485 END IF;
3486 END IF;
3487 END IF;*/
3488
3489 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3490 IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3491 p_krpv_rec.Next_Conversion_Date IS NULL)
3492 THEN
3493 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3494 'Next Conversion Date');
3495 l_return_status := OKC_API.G_RET_STS_ERROR;
3496 IF (p_stack_messages = 'N') THEN
3497 RAISE violated_ref_integrity;
3498 END IF;
3499 END IF;
3500 END IF;*/
3501
3502 /*IF (p_krpv_rec.parameter_type_code = 'ACTUAL') THEN
3503 IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3504 p_krpv_rec.Conversion_Type_Code IS NULL)
3505 THEN
3506 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3507 'Conversion Type 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 END IF;*/
3514
3515 END IF; /* FIXED and STREAMS */
3516 END IF; /* LOAN */
3517
3518 IF (p_deal_type IN ('LOAN-REVOLVING')) THEN
3519 IF (p_int_calc_basis IN ('FLOAT') AND
3520 p_rev_rec_method IN ('ESTIMATED_AND_BILLED', 'ACTUAL')) THEN
3521 IF (p_krpv_rec.Interest_Index_Id = OKC_API.G_MISS_NUM OR
3522 p_krpv_rec.Interest_Index_Id IS NULL)
3523 THEN
3524 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3525 'Interest Index Id');
3526 l_return_status := OKC_API.G_RET_STS_ERROR;
3527 IF (p_stack_messages = 'N') THEN
3528 RAISE violated_ref_integrity;
3529 END IF;
3530 END IF;
3531
3532 -- Bug 4907390
3533 /*IF (p_krpv_rec.Base_Rate = OKC_API.G_MISS_NUM OR
3534 p_krpv_rec.Base_Rate IS NULL)
3535 THEN
3536 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3537 'Base Rate');
3538 l_return_status := OKC_API.G_RET_STS_ERROR;
3539 IF (p_stack_messages = 'N') THEN
3540 RAISE violated_ref_integrity;
3541 END IF;
3542 END IF;*/
3543
3544 IF (p_krpv_rec.Interest_Start_Date = OKC_API.G_MISS_DATE OR
3545 p_krpv_rec.Interest_Start_Date IS NULL)
3546 THEN
3547 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3548 'Interest Start Date');
3549 l_return_status := OKC_API.G_RET_STS_ERROR;
3550 IF (p_stack_messages = 'N') THEN
3551 RAISE violated_ref_integrity;
3552 END IF;
3553 END IF;
3554
3555 IF (p_krpv_rec.Adder_Rate = OKC_API.G_MISS_NUM OR
3556 p_krpv_rec.Adder_Rate IS NULL)
3557 THEN
3558 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3559 'Adder Rate');
3560 l_return_status := OKC_API.G_RET_STS_ERROR;
3561 IF (p_stack_messages = 'N') THEN
3562 RAISE violated_ref_integrity;
3563 END IF;
3564 END IF;
3565
3566 IF (p_krpv_rec.Maximum_Rate = OKC_API.G_MISS_NUM OR
3567 p_krpv_rec.Maximum_Rate IS NULL)
3568 THEN
3569 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3570 'Maximum Rate');
3571 l_return_status := OKC_API.G_RET_STS_ERROR;
3572 IF (p_stack_messages = 'N') THEN
3573 RAISE violated_ref_integrity;
3574 END IF;
3575 END IF;
3576
3577 IF (p_krpv_rec.Minimum_Rate = OKC_API.G_MISS_NUM OR
3578 p_krpv_rec.Minimum_Rate IS NULL)
3579 THEN
3580 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3581 'Minimum Rate');
3582 l_return_status := OKC_API.G_RET_STS_ERROR;
3583 IF (p_stack_messages = 'N') THEN
3584 RAISE violated_ref_integrity;
3585 END IF;
3586 END IF;
3587
3588 IF (p_krpv_rec.Principal_Basis_Code = OKC_API.G_MISS_CHAR OR
3589 p_krpv_rec.Principal_Basis_Code IS NULL)
3590 THEN
3591 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3592 'Principal Basis Code');
3593 l_return_status := OKC_API.G_RET_STS_ERROR;
3594 IF (p_stack_messages = 'N') THEN
3595 RAISE violated_ref_integrity;
3596 END IF;
3597 ELSIF (p_krpv_rec.Principal_Basis_Code <> OKC_API.G_MISS_CHAR AND
3598 p_krpv_rec.Principal_Basis_Code IS NOT NULL) THEN
3599 IF (p_krpv_rec.Principal_Basis_Code <> 'ACTUAL') THEN
3600 -- AKP: Todo: Set Proper Message
3601 --(Principal Basis Code is 'ACTUAL' allowed only)
3602 OKL_API.SET_MESSAGE( p_app_name => OKL_API.G_APP_NAME
3603 ,p_msg_name => 'OKL_LA_APPLICABLE_VALUES'
3604 ,p_token1 => 'VALUE'
3605 ,p_token1_value => 'ACTUAL'
3606 ,p_token2 => 'CODE0'
3607 ,p_token2_value => 'PRINCIPAL_BASIS_CODE'
3608 ,p_token3 => 'CODE1'
3609 ,p_token3_value => 'LOAN-REVOLVING'
3610 ,p_token4 => 'CODE2'
3611 ,p_token4_value => 'FLOAT');
3612 l_return_status := OKC_API.G_RET_STS_ERROR;
3613 IF (p_stack_messages = 'N') THEN
3614 RAISE violated_ref_integrity;
3615 END IF;
3616 END IF;
3617 END IF;
3618
3619 IF (p_krpv_rec.Days_In_A_Month_Code = OKC_API.G_MISS_CHAR OR
3620 p_krpv_rec.Days_In_A_Month_Code IS NULL)
3621 THEN
3622 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3623 'Days In A Month Code');
3624 l_return_status := OKC_API.G_RET_STS_ERROR;
3625 IF (p_stack_messages = 'N') THEN
3626 RAISE violated_ref_integrity;
3627 END IF;
3628 END IF;
3629
3630 IF (p_krpv_rec.Days_In_A_Year_Code = OKC_API.G_MISS_CHAR OR
3631 p_krpv_rec.Days_In_A_Year_Code IS NULL)
3632 THEN
3633 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3634 'Days In A Year Code');
3635 l_return_status := OKC_API.G_RET_STS_ERROR;
3636 IF (p_stack_messages = 'N') THEN
3637 RAISE violated_ref_integrity;
3638 END IF;
3639 END IF;
3640
3641 IF (p_krpv_rec.Interest_Basis_Code = OKC_API.G_MISS_CHAR OR
3642 p_krpv_rec.Interest_Basis_Code IS NULL)
3643 THEN
3644 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3645 'Interest Basis Code');
3646 l_return_status := OKC_API.G_RET_STS_ERROR;
3647 IF (p_stack_messages = 'N') THEN
3648 RAISE violated_ref_integrity;
3649 END IF;
3650 END IF;
3651
3652 -- Bug 4862551
3653 /*
3654 IF (p_krpv_rec.Rate_Delay_Code = OKC_API.G_MISS_CHAR OR
3655 p_krpv_rec.Rate_Delay_Code IS NULL)
3656 THEN
3657 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3658 'Rate Delay Code');
3659 l_return_status := OKC_API.G_RET_STS_ERROR;
3660 IF (p_stack_messages = 'N') THEN
3661 RAISE violated_ref_integrity;
3662 END IF;
3663 END IF;
3664
3665 IF (p_krpv_rec.Rate_Delay_Frequency = OKC_API.G_MISS_NUM OR
3666 p_krpv_rec.Rate_Delay_Frequency IS NULL)
3667 THEN
3668 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3669 'Rate Delay Frequency');
3670 l_return_status := OKC_API.G_RET_STS_ERROR;
3671 IF (p_stack_messages = 'N') THEN
3672 RAISE violated_ref_integrity;
3673 END IF;
3674 END IF;
3675 */
3676
3677 -- Bug 4862416
3678 /*IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3679 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3680 THEN
3681 l_msg1_set := TRUE;
3682 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3683 'Compounding Frequency Code');
3684 l_return_status := OKC_API.G_RET_STS_ERROR;
3685 IF (p_stack_messages = 'N') THEN
3686 RAISE violated_ref_integrity;
3687 END IF;
3688 END IF;
3689
3690 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3691 p_krpv_rec.Calculation_Formula_Id IS NULL)
3692 THEN
3693 l_msg2_set := TRUE;
3694 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3695 'Formula Name');
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_Change_Start_Date = OKC_API.G_MISS_DATE OR
3705 p_krpv_rec.Rate_Change_Start_Date IS NULL)
3706 THEN
3707 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3708 'Rate Change Start Date');
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_Change_Frequency_Code = OKC_API.G_MISS_CHAR OR
3716 p_krpv_rec.Rate_Change_Frequency_Code IS NULL)
3717 THEN
3718 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3719 'Rate Change Frequency Code');
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 IF (p_krpv_rec.Rate_Change_Value = OKC_API.G_MISS_NUM OR
3727 p_krpv_rec.Rate_Change_Value IS NULL)
3728 THEN
3729 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3730 'Rate Change Value');
3731 l_return_status := OKC_API.G_RET_STS_ERROR;
3732 IF (p_stack_messages = 'N') THEN
3733 RAISE violated_ref_integrity;
3734 END IF;
3735 END IF;
3736 */
3737
3738 /*IF (p_krpv_rec.Conversion_Option_Code = OKC_API.G_MISS_CHAR OR
3739 p_krpv_rec.Conversion_Option_Code IS NULL)
3740 THEN
3741 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3742 'Conversion Option Code');
3743 l_return_status := OKC_API.G_RET_STS_ERROR;
3744 IF (p_stack_messages = 'N') THEN
3745 RAISE violated_ref_integrity;
3746 END IF;
3747 END IF;*/
3748
3749 /*IF (p_krpv_rec.Next_Conversion_Date = OKC_API.G_MISS_DATE OR
3750 p_krpv_rec.Next_Conversion_Date IS NULL)
3751 THEN
3752 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3753 'Next Conversion Date');
3754 l_return_status := OKC_API.G_RET_STS_ERROR;
3755 IF (p_stack_messages = 'N') THEN
3756 RAISE violated_ref_integrity;
3757 END IF;
3758 END IF;*/
3759
3760 /*IF (p_krpv_rec.Conversion_Type_Code = OKC_API.G_MISS_CHAR OR
3761 p_krpv_rec.Conversion_Type_Code IS NULL)
3762 THEN
3763 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3764 'Conversion Type Code');
3765 l_return_status := OKC_API.G_RET_STS_ERROR;
3766 IF (p_stack_messages = 'N') THEN
3767 RAISE violated_ref_integrity;
3768 END IF;
3769 END IF;*/
3770
3771 END IF;
3772 END IF;
3773
3774 -- Bug 4862416: For interest basis code 'COMPOUND', formula is required
3775 -- and compounding_frqeuency_code is required.
3776 IF (p_krpv_rec.Interest_Basis_Code IS NOT NULL AND
3777 p_krpv_rec.Interest_Basis_Code <> OKC_API.G_MISS_CHAR) THEN
3778
3779 IF (p_krpv_rec.Interest_Basis_Code = 'COMPOUND') THEN
3780
3781 IF NOT(l_msg1_set) THEN
3782 IF (p_krpv_rec.Compounding_Frequency_Code = OKC_API.G_MISS_CHAR OR
3783 p_krpv_rec.Compounding_Frequency_Code IS NULL)
3784 THEN
3785 l_msg1_set := TRUE;
3786 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3787 'Compounding Frequency Code');
3788 l_return_status := OKC_API.G_RET_STS_ERROR;
3789 IF (p_stack_messages = 'N') THEN
3790 RAISE violated_ref_integrity;
3791 END IF;
3792 END IF;
3793 END IF;
3794
3795 IF NOT(l_msg2_set) THEN
3796 IF (p_krpv_rec.Calculation_Formula_Id = OKC_API.G_MISS_NUM OR
3797 p_krpv_rec.Calculation_Formula_Id IS NULL)
3798 THEN
3799 l_msg2_set := TRUE;
3800 OKC_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,
3801 'Formula Name');
3802 l_return_status := OKC_API.G_RET_STS_ERROR;
3803 IF (p_stack_messages = 'N') THEN
3804 RAISE violated_ref_integrity;
3805 END IF;
3806 END IF;
3807 END IF;
3808
3809 END IF;
3810
3811 END IF;
3812
3813 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) AND
3814 (p_stack_messages = 'N') THEN
3815 RAISE violated_ref_integrity;
3816 END IF;
3817
3818 /* AKP: Todo: IF Payments are in 'Advance' the rate delay should be more
3819 than print lead days. Done in OKLRKRPB.pls */
3820
3821 RETURN (l_return_status);
3822
3823 EXCEPTION
3824 WHEN violated_ref_integrity THEN
3825 l_return_status := OKL_API.G_RET_STS_ERROR;
3826 RETURN (l_return_status);
3827 END Validate_Record;
3828
3829 ---------------------------------------------------------------------------
3830 -- PROCEDURE Migrate
3831 ---------------------------------------------------------------------------
3832 PROCEDURE migrate (
3833 p_from IN krpv_rec_type,
3834 p_to IN OUT NOCOPY krp_rec_type
3835 ) IS
3836 BEGIN
3837 p_to.khr_id := p_from.khr_id;
3838 p_to.parameter_type_code := p_from.parameter_type_code;
3839 p_to.effective_from_date := p_from.effective_from_date;
3840 p_to.effective_to_date := p_from.effective_to_date;
3841 p_to.interest_index_id := p_from.interest_index_id;
3842 p_to.base_rate := p_from.base_rate;
3843 p_to.interest_start_date := p_from.interest_start_date;
3844 p_to.adder_rate := p_from.adder_rate;
3845 p_to.maximum_rate := p_from.maximum_rate;
3846 p_to.minimum_rate := p_from.minimum_rate;
3847 p_to.principal_basis_code := p_from.principal_basis_code;
3848 p_to.days_in_a_month_code := p_from.days_in_a_month_code;
3849 p_to.days_in_a_year_code := p_from.days_in_a_year_code;
3850 p_to.interest_basis_code := p_from.interest_basis_code;
3851 p_to.rate_delay_code := p_from.rate_delay_code;
3852 p_to.rate_delay_frequency := p_from.rate_delay_frequency;
3853 p_to.compounding_frequency_code := p_from.compounding_frequency_code;
3854 p_to.calculation_formula_id := p_from.calculation_formula_id;
3855 p_to.catchup_basis_code := p_from.catchup_basis_code;
3856 p_to.catchup_start_date := p_from.catchup_start_date;
3857 p_to.catchup_settlement_code := p_from.catchup_settlement_code;
3858 p_to.rate_change_start_date := p_from.rate_change_start_date;
3859 p_to.rate_change_frequency_code := p_from.rate_change_frequency_code;
3860 p_to.rate_change_value := p_from.rate_change_value;
3861 p_to.conversion_option_code := p_from.conversion_option_code;
3862 p_to.next_conversion_date := p_from.next_conversion_date;
3863 p_to.conversion_type_code := p_from.conversion_type_code;
3864 p_to.attribute_category := p_from.attribute_category;
3865 p_to.attribute1 := p_from.attribute1;
3866 p_to.attribute2 := p_from.attribute2;
3867 p_to.attribute3 := p_from.attribute3;
3868 p_to.attribute4 := p_from.attribute4;
3869 p_to.attribute5 := p_from.attribute5;
3870 p_to.attribute6 := p_from.attribute6;
3871 p_to.attribute7 := p_from.attribute7;
3872 p_to.attribute8 := p_from.attribute8;
3873 p_to.attribute9 := p_from.attribute9;
3874 p_to.attribute10 := p_from.attribute10;
3875 p_to.attribute11 := p_from.attribute11;
3876 p_to.attribute12 := p_from.attribute12;
3877 p_to.attribute13 := p_from.attribute13;
3878 p_to.attribute14 := p_from.attribute14;
3879 p_to.attribute15 := p_from.attribute15;
3880 p_to.created_by := p_from.created_by;
3881 p_to.creation_date := p_from.creation_date;
3882 p_to.last_updated_by := p_from.last_updated_by;
3883 p_to.last_update_date := p_from.last_update_date;
3884 p_to.last_update_login := p_from.last_update_login;
3885 p_to.catchup_frequency_code := p_from.catchup_frequency_code;
3886 END migrate;
3887 PROCEDURE migrate (
3888 p_from IN krp_rec_type,
3889 p_to IN OUT NOCOPY krpv_rec_type
3890 ) IS
3891 BEGIN
3892 p_to.khr_id := p_from.khr_id;
3893 p_to.parameter_type_code := p_from.parameter_type_code;
3894 p_to.effective_from_date := p_from.effective_from_date;
3895 p_to.effective_to_date := p_from.effective_to_date;
3896 p_to.interest_index_id := p_from.interest_index_id;
3897 p_to.base_rate := p_from.base_rate;
3898 p_to.interest_start_date := p_from.interest_start_date;
3899 p_to.adder_rate := p_from.adder_rate;
3900 p_to.maximum_rate := p_from.maximum_rate;
3901 p_to.minimum_rate := p_from.minimum_rate;
3902 p_to.principal_basis_code := p_from.principal_basis_code;
3903 p_to.days_in_a_month_code := p_from.days_in_a_month_code;
3904 p_to.days_in_a_year_code := p_from.days_in_a_year_code;
3905 p_to.interest_basis_code := p_from.interest_basis_code;
3906 p_to.rate_delay_code := p_from.rate_delay_code;
3907 p_to.rate_delay_frequency := p_from.rate_delay_frequency;
3908 p_to.compounding_frequency_code := p_from.compounding_frequency_code;
3909 p_to.calculation_formula_id := p_from.calculation_formula_id;
3910 p_to.catchup_basis_code := p_from.catchup_basis_code;
3911 p_to.catchup_start_date := p_from.catchup_start_date;
3912 p_to.catchup_settlement_code := p_from.catchup_settlement_code;
3913 p_to.rate_change_start_date := p_from.rate_change_start_date;
3914 p_to.rate_change_frequency_code := p_from.rate_change_frequency_code;
3915 p_to.rate_change_value := p_from.rate_change_value;
3916 p_to.conversion_option_code := p_from.conversion_option_code;
3917 p_to.next_conversion_date := p_from.next_conversion_date;
3918 p_to.conversion_type_code := p_from.conversion_type_code;
3919 p_to.attribute_category := p_from.attribute_category;
3920 p_to.attribute1 := p_from.attribute1;
3921 p_to.attribute2 := p_from.attribute2;
3922 p_to.attribute3 := p_from.attribute3;
3923 p_to.attribute4 := p_from.attribute4;
3924 p_to.attribute5 := p_from.attribute5;
3925 p_to.attribute6 := p_from.attribute6;
3926 p_to.attribute7 := p_from.attribute7;
3927 p_to.attribute8 := p_from.attribute8;
3928 p_to.attribute9 := p_from.attribute9;
3929 p_to.attribute10 := p_from.attribute10;
3930 p_to.attribute11 := p_from.attribute11;
3931 p_to.attribute12 := p_from.attribute12;
3932 p_to.attribute13 := p_from.attribute13;
3933 p_to.attribute14 := p_from.attribute14;
3934 p_to.attribute15 := p_from.attribute15;
3935 p_to.created_by := p_from.created_by;
3936 p_to.creation_date := p_from.creation_date;
3937 p_to.last_updated_by := p_from.last_updated_by;
3938 p_to.last_update_date := p_from.last_update_date;
3939 p_to.last_update_login := p_from.last_update_login;
3940 p_to.catchup_frequency_code := p_from.catchup_frequency_code;
3941 END migrate;
3942 ---------------------------------------------------------------------------
3943 -- PROCEDURE validate_row
3944 ---------------------------------------------------------------------------
3945 ------------------------------------------
3946 -- validate_row for:OKL_K_RATE_PARAMS_V --
3947 ------------------------------------------
3948 PROCEDURE validate_row(
3949 p_api_version IN NUMBER,
3950 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3951 x_return_status OUT NOCOPY VARCHAR2,
3952 x_msg_count OUT NOCOPY NUMBER,
3953 x_msg_data OUT NOCOPY VARCHAR2,
3954 p_krpv_rec IN krpv_rec_type) IS
3955
3956 l_api_version CONSTANT NUMBER := 1;
3957 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
3958 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3959 l_krpv_rec krpv_rec_type := p_krpv_rec;
3960 l_krp_rec krp_rec_type;
3961 l_krp_rec krp_rec_type;
3962 BEGIN
3963 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3964 G_PKG_NAME,
3965 p_init_msg_list,
3966 l_api_version,
3967 p_api_version,
3968 '_PVT',
3969 x_return_status);
3970 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3971 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3972 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3973 RAISE OKC_API.G_EXCEPTION_ERROR;
3974 END IF;
3975 --- Validate all non-missing attributes (Item Level Validation)
3976 l_return_status := Validate_Attributes(l_krpv_rec);
3977 --- If any errors happen abort API
3978 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3979 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3980 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3981 RAISE OKC_API.G_EXCEPTION_ERROR;
3982 END IF;
3983 l_return_status := Validate_Record(l_krpv_rec);
3984 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3985 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3986 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3987 RAISE OKC_API.G_EXCEPTION_ERROR;
3988 END IF;
3989 x_return_status := l_return_status;
3990 EXCEPTION
3991 WHEN OKC_API.G_EXCEPTION_ERROR THEN
3992 x_return_status := OKC_API.HANDLE_EXCEPTIONS
3993 (
3994 l_api_name,
3995 G_PKG_NAME,
3996 'OKC_API.G_RET_STS_ERROR',
3997 x_msg_count,
3998 x_msg_data,
3999 '_PVT'
4000 );
4001 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4002 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4003 (
4004 l_api_name,
4005 G_PKG_NAME,
4006 'OKC_API.G_RET_STS_UNEXP_ERROR',
4007 x_msg_count,
4008 x_msg_data,
4009 '_PVT'
4010 );
4011 WHEN OTHERS THEN
4012 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4013 (
4014 l_api_name,
4015 G_PKG_NAME,
4016 'OTHERS',
4017 x_msg_count,
4018 x_msg_data,
4019 '_PVT'
4020 );
4021 END validate_row;
4022 -----------------------------------------------------
4023 -- PL/SQL TBL validate_row for:OKL_K_RATE_PARAMS_V --
4024 -----------------------------------------------------
4025 PROCEDURE validate_row(
4026 p_api_version IN NUMBER,
4027 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4028 x_return_status OUT NOCOPY VARCHAR2,
4029 x_msg_count OUT NOCOPY NUMBER,
4030 x_msg_data OUT NOCOPY VARCHAR2,
4031 p_krpv_tbl IN krpv_tbl_type,
4032 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4033
4034 l_api_version CONSTANT NUMBER := 1;
4035 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
4036 i NUMBER := 0;
4037 BEGIN
4038 OKC_API.init_msg_list(p_init_msg_list);
4039 -- Make sure PL/SQL table has records in it before passing
4040 IF (p_krpv_tbl.COUNT > 0) THEN
4041 i := p_krpv_tbl.FIRST;
4042 LOOP
4043 DECLARE
4044 l_error_rec OKC_API.ERROR_REC_TYPE;
4045 BEGIN
4046 l_error_rec.api_name := l_api_name;
4047 l_error_rec.api_package := G_PKG_NAME;
4048 l_error_rec.idx := i;
4049 validate_row (
4050 p_api_version => p_api_version,
4051 p_init_msg_list => OKC_API.G_FALSE,
4052 x_return_status => l_error_rec.error_type,
4053 x_msg_count => l_error_rec.msg_count,
4054 x_msg_data => l_error_rec.msg_data,
4055 p_krpv_rec => p_krpv_tbl(i));
4056 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4057 l_error_rec.sqlcode := SQLCODE;
4058 load_error_tbl(l_error_rec, px_error_tbl);
4059 ELSE
4060 x_msg_count := l_error_rec.msg_count;
4061 x_msg_data := l_error_rec.msg_data;
4062 END IF;
4063 EXCEPTION
4064 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4065 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4066 l_error_rec.sqlcode := SQLCODE;
4067 load_error_tbl(l_error_rec, px_error_tbl);
4068 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4069 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4070 l_error_rec.sqlcode := SQLCODE;
4071 load_error_tbl(l_error_rec, px_error_tbl);
4072 WHEN OTHERS THEN
4073 l_error_rec.error_type := 'OTHERS';
4074 l_error_rec.sqlcode := SQLCODE;
4075 load_error_tbl(l_error_rec, px_error_tbl);
4076 END;
4077 EXIT WHEN (i = p_krpv_tbl.LAST);
4078 i := p_krpv_tbl.NEXT(i);
4079 END LOOP;
4080 END IF;
4081 -- Loop through the error_tbl to find the error with the highest severity
4082 -- and return it.
4083 x_return_status := find_highest_exception(px_error_tbl);
4084 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4085 EXCEPTION
4086 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4087 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4088 (
4089 l_api_name,
4090 G_PKG_NAME,
4091 'OKC_API.G_RET_STS_ERROR',
4092 x_msg_count,
4093 x_msg_data,
4094 '_PVT'
4095 );
4096 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4097 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4098 (
4099 l_api_name,
4100 G_PKG_NAME,
4101 'OKC_API.G_RET_STS_UNEXP_ERROR',
4102 x_msg_count,
4103 x_msg_data,
4104 '_PVT'
4105 );
4106 WHEN OTHERS THEN
4107 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4108 (
4109 l_api_name,
4110 G_PKG_NAME,
4111 'OTHERS',
4112 x_msg_count,
4113 x_msg_data,
4114 '_PVT'
4115 );
4116 END validate_row;
4117
4118 -----------------------------------------------------
4119 -- PL/SQL TBL validate_row for:OKL_K_RATE_PARAMS_V --
4120 -----------------------------------------------------
4121 PROCEDURE validate_row(
4122 p_api_version IN NUMBER,
4123 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4124 x_return_status OUT NOCOPY VARCHAR2,
4125 x_msg_count OUT NOCOPY NUMBER,
4126 x_msg_data OUT NOCOPY VARCHAR2,
4127 p_krpv_tbl IN krpv_tbl_type) IS
4128
4129 l_api_version CONSTANT NUMBER := 1;
4130 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
4131 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4132 l_error_tbl OKC_API.ERROR_TBL_TYPE;
4133 BEGIN
4134 OKC_API.init_msg_list(p_init_msg_list);
4135 -- Make sure PL/SQL table has records in it before passing
4136 IF (p_krpv_tbl.COUNT > 0) THEN
4137 validate_row (
4138 p_api_version => p_api_version,
4139 p_init_msg_list => OKC_API.G_FALSE,
4140 x_return_status => x_return_status,
4141 x_msg_count => x_msg_count,
4142 x_msg_data => x_msg_data,
4143 p_krpv_tbl => p_krpv_tbl,
4144 px_error_tbl => l_error_tbl);
4145 END IF;
4146 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4147 EXCEPTION
4148 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4149 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4150 (
4151 l_api_name,
4152 G_PKG_NAME,
4153 'OKC_API.G_RET_STS_ERROR',
4154 x_msg_count,
4155 x_msg_data,
4156 '_PVT'
4157 );
4158 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4159 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4160 (
4161 l_api_name,
4162 G_PKG_NAME,
4163 'OKC_API.G_RET_STS_UNEXP_ERROR',
4164 x_msg_count,
4165 x_msg_data,
4166 '_PVT'
4167 );
4168 WHEN OTHERS THEN
4169 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4170 (
4171 l_api_name,
4172 G_PKG_NAME,
4173 'OTHERS',
4174 x_msg_count,
4175 x_msg_data,
4176 '_PVT'
4177 );
4178 END validate_row;
4179
4180 /* Custom validation routine, overloaded */
4181 PROCEDURE validate_row(
4182 p_api_version IN NUMBER,
4183 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4184 x_return_status OUT NOCOPY VARCHAR2,
4185 x_msg_count OUT NOCOPY NUMBER,
4186 x_msg_data OUT NOCOPY VARCHAR2,
4187 p_deal_type IN VARCHAR2,
4188 p_rev_rec_method IN VARCHAR2,
4189 p_int_calc_basis IN VARCHAR2,
4190 p_krpv_tbl IN krpv_tbl_type,
4191 p_stack_messages IN VARCHAR2 DEFAULT 'N',
4192 p_validate_flag IN VARCHAR2 DEFAULT 'Y') IS
4193
4194 l_api_version CONSTANT NUMBER := 1;
4195 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
4196 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4197 --l_krpv_rec krpv_rec_type := p_krpv_rec;
4198 l_krpv_rec krpv_rec_type;
4199 l_krp_rec krp_rec_type;
4200 l_krp_rec krp_rec_type;
4201
4202 i NUMBER;
4203 BEGIN
4204 IF (G_DEBUG_ENABLED = 'Y') THEN
4205 G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4206 END IF;
4207 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4208 G_PKG_NAME,
4209 p_init_msg_list,
4210 l_api_version,
4211 p_api_version,
4212 '_PVT',
4213 x_return_status);
4214 IF (p_stack_messages = 'N') THEN
4215 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4216 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4217 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4218 RAISE OKC_API.G_EXCEPTION_ERROR;
4219 END IF;
4220 END IF;
4221 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4222 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In validate_row... p_krpv_tbl.count=' || p_krpv_tbl.count);
4223 END IF;
4224 IF (p_krpv_tbl.COUNT > 0) THEN
4225 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4226 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Inside ...');
4227 END IF;
4228 i := p_krpv_tbl.FIRST;
4229 LOOP
4230 l_krpv_rec := p_krpv_tbl(i);
4231
4232 --- Validate all non-missing attributes (Item Level Validation)
4233 l_return_status := Validate_Attributes(l_krpv_rec, p_stack_messages);
4234 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4235 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_attributes...l_return_status='||l_return_status);
4236 END IF;
4237 IF (p_stack_messages = 'N') THEN
4238 --- If any errors happen abort API
4239 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4240 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4241 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4242 RAISE OKC_API.G_EXCEPTION_ERROR;
4243 END IF;
4244 END IF;
4245 IF (nvl(p_validate_flag, 'Y') = 'F') THEN
4246 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4247 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Calling validate_record...');
4248 END IF;
4249 l_return_status := Validate_Record(l_krpv_rec,
4250 p_stack_messages,
4251 p_deal_type,
4252 p_rev_rec_method,
4253 p_int_calc_basis);
4254 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4255 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'After validate_record l_return_status=' || l_return_status);
4256 END IF;
4257 IF (p_stack_messages = 'N') THEN
4258 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4259 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4260 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4261 RAISE OKC_API.G_EXCEPTION_ERROR;
4262 END IF;
4263 END IF;
4264 END IF;
4265 x_return_status := l_return_status;
4266 EXIT WHEN ( i = p_krpv_tbl.LAST);
4267 i := p_krpv_tbl.NEXT(i);
4268 END LOOP;
4269 END IF;
4270 x_return_status := l_return_status;
4271 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4272 EXCEPTION
4273 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4274 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4275 (
4276 l_api_name,
4277 G_PKG_NAME,
4278 'OKC_API.G_RET_STS_ERROR',
4279 x_msg_count,
4280 x_msg_data,
4281 '_PVT'
4282 );
4283 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4284 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4285 (
4286 l_api_name,
4287 G_PKG_NAME,
4288 'OKC_API.G_RET_STS_UNEXP_ERROR',
4289 x_msg_count,
4290 x_msg_data,
4291 '_PVT'
4292 );
4293 WHEN OTHERS THEN
4294 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4295 (
4296 l_api_name,
4297 G_PKG_NAME,
4298 'OTHERS',
4299 x_msg_count,
4300 x_msg_data,
4301 '_PVT'
4302 );
4303 END validate_row;
4304
4305 ---------------------------------------------------------------------------
4306 -- PROCEDURE insert_row
4307 ---------------------------------------------------------------------------
4308 --------------------------------------
4309 -- insert_row for:OKL_K_RATE_PARAMS --
4310 --------------------------------------
4311 PROCEDURE insert_row(
4312 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4313 x_return_status OUT NOCOPY VARCHAR2,
4314 x_msg_count OUT NOCOPY NUMBER,
4315 x_msg_data OUT NOCOPY VARCHAR2,
4316 p_krp_rec IN krp_rec_type,
4317 x_krp_rec OUT NOCOPY krp_rec_type) IS
4318
4319 l_api_version CONSTANT NUMBER := 1;
4320 l_api_name CONSTANT VARCHAR2(30) := 'B_insert_row';
4321 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4322 l_krp_rec krp_rec_type := p_krp_rec;
4323 l_def_krp_rec krp_rec_type;
4324 ------------------------------------------
4325 -- Set_Attributes for:OKL_K_RATE_PARAMS --
4326 ------------------------------------------
4327 FUNCTION Set_Attributes (
4328 p_krp_rec IN krp_rec_type,
4329 x_krp_rec OUT NOCOPY krp_rec_type
4330 ) RETURN VARCHAR2 IS
4331 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4332 BEGIN
4333 x_krp_rec := p_krp_rec;
4334 RETURN(l_return_status);
4335 END Set_Attributes;
4336 BEGIN
4337 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4338 p_init_msg_list,
4339 '_PVT',
4340 x_return_status);
4341 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4342 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4343 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4344 RAISE OKC_API.G_EXCEPTION_ERROR;
4345 END IF;
4346 --- Setting item atributes
4347 l_return_status := Set_Attributes(
4348 p_krp_rec, -- IN
4349 l_krp_rec); -- OUT
4350 --- If any errors happen abort API
4351 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4352 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4353 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4354 RAISE OKC_API.G_EXCEPTION_ERROR;
4355 END IF;
4356 INSERT INTO OKL_K_RATE_PARAMS(
4357 khr_id,
4358 parameter_type_code,
4359 effective_from_date,
4360 effective_to_date,
4361 interest_index_id,
4362 base_rate,
4363 interest_start_date,
4364 adder_rate,
4365 maximum_rate,
4366 minimum_rate,
4367 principal_basis_code,
4368 days_in_a_month_code,
4369 days_in_a_year_code,
4370 interest_basis_code,
4371 rate_delay_code,
4372 rate_delay_frequency,
4373 compounding_frequency_code,
4374 calculation_formula_id,
4375 catchup_basis_code,
4376 catchup_start_date,
4377 catchup_settlement_code,
4378 rate_change_start_date,
4379 rate_change_frequency_code,
4380 rate_change_value,
4381 conversion_option_code,
4382 next_conversion_date,
4383 conversion_type_code,
4384 attribute_category,
4385 attribute1,
4386 attribute2,
4387 attribute3,
4388 attribute4,
4389 attribute5,
4390 attribute6,
4391 attribute7,
4392 attribute8,
4393 attribute9,
4394 attribute10,
4395 attribute11,
4396 attribute12,
4397 attribute13,
4398 attribute14,
4399 attribute15,
4400 created_by,
4401 creation_date,
4402 last_updated_by,
4403 last_update_date,
4404 last_update_login,
4405 catchup_frequency_code)
4406 VALUES (
4407 l_krp_rec.khr_id,
4408 l_krp_rec.parameter_type_code,
4409 l_krp_rec.effective_from_date,
4410 l_krp_rec.effective_to_date,
4411 l_krp_rec.interest_index_id,
4412 l_krp_rec.base_rate,
4413 l_krp_rec.interest_start_date,
4414 l_krp_rec.adder_rate,
4415 l_krp_rec.maximum_rate,
4416 l_krp_rec.minimum_rate,
4417 l_krp_rec.principal_basis_code,
4418 l_krp_rec.days_in_a_month_code,
4419 l_krp_rec.days_in_a_year_code,
4420 l_krp_rec.interest_basis_code,
4421 l_krp_rec.rate_delay_code,
4422 l_krp_rec.rate_delay_frequency,
4423 l_krp_rec.compounding_frequency_code,
4424 l_krp_rec.calculation_formula_id,
4425 l_krp_rec.catchup_basis_code,
4426 l_krp_rec.catchup_start_date,
4427 l_krp_rec.catchup_settlement_code,
4428 l_krp_rec.rate_change_start_date,
4429 l_krp_rec.rate_change_frequency_code,
4430 l_krp_rec.rate_change_value,
4431 l_krp_rec.conversion_option_code,
4432 l_krp_rec.next_conversion_date,
4433 l_krp_rec.conversion_type_code,
4434 l_krp_rec.attribute_category,
4435 l_krp_rec.attribute1,
4436 l_krp_rec.attribute2,
4437 l_krp_rec.attribute3,
4438 l_krp_rec.attribute4,
4439 l_krp_rec.attribute5,
4440 l_krp_rec.attribute6,
4441 l_krp_rec.attribute7,
4442 l_krp_rec.attribute8,
4443 l_krp_rec.attribute9,
4444 l_krp_rec.attribute10,
4445 l_krp_rec.attribute11,
4446 l_krp_rec.attribute12,
4447 l_krp_rec.attribute13,
4448 l_krp_rec.attribute14,
4449 l_krp_rec.attribute15,
4450 l_krp_rec.created_by,
4451 l_krp_rec.creation_date,
4452 l_krp_rec.last_updated_by,
4453 l_krp_rec.last_update_date,
4454 l_krp_rec.last_update_login,
4455 l_krp_rec.catchup_frequency_code);
4456 -- Set OUT values
4457 x_krp_rec := l_krp_rec;
4458 x_return_status := l_return_status;
4459 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4460 EXCEPTION
4461 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4462 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4463 (
4464 l_api_name,
4465 G_PKG_NAME,
4466 'OKC_API.G_RET_STS_ERROR',
4467 x_msg_count,
4468 x_msg_data,
4469 '_PVT'
4470 );
4471 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4472 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4473 (
4474 l_api_name,
4475 G_PKG_NAME,
4476 'OKC_API.G_RET_STS_UNEXP_ERROR',
4477 x_msg_count,
4478 x_msg_data,
4479 '_PVT'
4480 );
4481 WHEN OTHERS THEN
4482 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4483 (
4484 l_api_name,
4485 G_PKG_NAME,
4486 'OTHERS',
4487 x_msg_count,
4488 x_msg_data,
4489 '_PVT'
4490 );
4491 END insert_row;
4492 -----------------------------------------
4493 -- insert_row for :OKL_K_RATE_PARAMS_V --
4494 -----------------------------------------
4495 PROCEDURE insert_row(
4496 p_api_version IN NUMBER,
4497 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4498 x_return_status OUT NOCOPY VARCHAR2,
4499 x_msg_count OUT NOCOPY NUMBER,
4500 x_msg_data OUT NOCOPY VARCHAR2,
4501 p_krpv_rec IN krpv_rec_type,
4502 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
4503
4504 l_api_version CONSTANT NUMBER := 1;
4505 l_api_name CONSTANT VARCHAR2(30) := 'V_insert_row';
4506 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4507 l_krpv_rec krpv_rec_type := p_krpv_rec;
4508 l_def_krpv_rec krpv_rec_type;
4509 l_krp_rec krp_rec_type;
4510 lx_krp_rec krp_rec_type;
4511 -------------------------------
4512 -- FUNCTION fill_who_columns --
4513 -------------------------------
4514 FUNCTION fill_who_columns (
4515 p_krpv_rec IN krpv_rec_type
4516 ) RETURN krpv_rec_type IS
4517 l_krpv_rec krpv_rec_type := p_krpv_rec;
4518 BEGIN
4519 l_krpv_rec.CREATION_DATE := SYSDATE;
4520 l_krpv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
4521 l_krpv_rec.LAST_UPDATE_DATE := l_krpv_rec.CREATION_DATE;
4522 l_krpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4523 l_krpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4524 RETURN(l_krpv_rec);
4525 END fill_who_columns;
4526 --------------------------------------------
4527 -- Set_Attributes for:OKL_K_RATE_PARAMS_V --
4528 --------------------------------------------
4529 FUNCTION Set_Attributes (
4530 p_krpv_rec IN krpv_rec_type,
4531 x_krpv_rec OUT NOCOPY krpv_rec_type
4532 ) RETURN VARCHAR2 IS
4533 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4534 BEGIN
4535 x_krpv_rec := p_krpv_rec;
4536 RETURN(l_return_status);
4537 END Set_Attributes;
4538 BEGIN
4539 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4540 G_PKG_NAME,
4541 p_init_msg_list,
4542 l_api_version,
4543 p_api_version,
4544 '_PVT',
4545 x_return_status);
4546 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4547 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4548 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4549 RAISE OKC_API.G_EXCEPTION_ERROR;
4550 END IF;
4551 l_krpv_rec := null_out_defaults(p_krpv_rec);
4552 -- Set primary key value
4553 -- Error: Multiple columns make up the Primary Key
4554 -- Cannot assign get_seq_id
4555 -- Setting item attributes
4556 l_return_Status := Set_Attributes(
4557 l_krpv_rec, -- IN
4558 l_def_krpv_rec); -- OUT
4559 --- If any errors happen abort API
4560 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4561 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4562 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4563 RAISE OKC_API.G_EXCEPTION_ERROR;
4564 END IF;
4565 l_def_krpv_rec := fill_who_columns(l_def_krpv_rec);
4566 --- Validate all non-missing attributes (Item Level Validation)
4567 l_return_status := Validate_Attributes(l_def_krpv_rec);
4568 --- If any errors happen abort API
4569 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4570 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4571 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4572 RAISE OKC_API.G_EXCEPTION_ERROR;
4573 END IF;
4574 l_return_status := Validate_Record(l_def_krpv_rec);
4575 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4576 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4577 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4578 RAISE OKC_API.G_EXCEPTION_ERROR;
4579 END IF;
4580 -----------------------------------------
4581 -- Move VIEW record to "Child" records --
4582 -----------------------------------------
4583 migrate(l_def_krpv_rec, l_krp_rec);
4584 -----------------------------------------------
4585 -- Call the INSERT_ROW for each child record --
4586 -----------------------------------------------
4587 insert_row(
4588 p_init_msg_list,
4589 l_return_status,
4590 x_msg_count,
4591 x_msg_data,
4592 l_krp_rec,
4593 lx_krp_rec
4594 );
4595 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4596 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4597 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4598 RAISE OKC_API.G_EXCEPTION_ERROR;
4599 END IF;
4600 migrate(lx_krp_rec, l_def_krpv_rec);
4601 -- Set OUT values
4602 x_krpv_rec := l_def_krpv_rec;
4603 x_return_status := l_return_status;
4604 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4605 EXCEPTION
4606 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4607 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4608 (
4609 l_api_name,
4610 G_PKG_NAME,
4611 'OKC_API.G_RET_STS_ERROR',
4612 x_msg_count,
4613 x_msg_data,
4614 '_PVT'
4615 );
4616 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4617 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4618 (
4619 l_api_name,
4620 G_PKG_NAME,
4621 'OKC_API.G_RET_STS_UNEXP_ERROR',
4622 x_msg_count,
4623 x_msg_data,
4624 '_PVT'
4625 );
4626 WHEN OTHERS THEN
4627 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4628 (
4629 l_api_name,
4630 G_PKG_NAME,
4631 'OTHERS',
4632 x_msg_count,
4633 x_msg_data,
4634 '_PVT'
4635 );
4636 END insert_row;
4637 ----------------------------------------
4638 -- PL/SQL TBL insert_row for:KRPV_TBL --
4639 ----------------------------------------
4640 PROCEDURE insert_row(
4641 p_api_version IN NUMBER,
4642 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4643 x_return_status OUT NOCOPY VARCHAR2,
4644 x_msg_count OUT NOCOPY NUMBER,
4645 x_msg_data OUT NOCOPY VARCHAR2,
4646 p_krpv_tbl IN krpv_tbl_type,
4647 x_krpv_tbl OUT NOCOPY krpv_tbl_type,
4648 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4649
4650 l_api_version CONSTANT NUMBER := 1;
4651 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
4652 i NUMBER := 0;
4653 BEGIN
4654 OKC_API.init_msg_list(p_init_msg_list);
4655 -- Make sure PL/SQL table has records in it before passing
4656 IF (p_krpv_tbl.COUNT > 0) THEN
4657 i := p_krpv_tbl.FIRST;
4658 LOOP
4659 DECLARE
4660 l_error_rec OKC_API.ERROR_REC_TYPE;
4661 BEGIN
4662 l_error_rec.api_name := l_api_name;
4663 l_error_rec.api_package := G_PKG_NAME;
4664 l_error_rec.idx := i;
4665 insert_row (
4666 p_api_version => p_api_version,
4667 p_init_msg_list => OKC_API.G_FALSE,
4668 x_return_status => l_error_rec.error_type,
4669 x_msg_count => l_error_rec.msg_count,
4670 x_msg_data => l_error_rec.msg_data,
4671 p_krpv_rec => p_krpv_tbl(i),
4672 x_krpv_rec => x_krpv_tbl(i));
4673 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4674 l_error_rec.sqlcode := SQLCODE;
4675 load_error_tbl(l_error_rec, px_error_tbl);
4676 ELSE
4677 x_msg_count := l_error_rec.msg_count;
4678 x_msg_data := l_error_rec.msg_data;
4679 END IF;
4680 EXCEPTION
4681 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4682 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4683 l_error_rec.sqlcode := SQLCODE;
4684 load_error_tbl(l_error_rec, px_error_tbl);
4685 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4686 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4687 l_error_rec.sqlcode := SQLCODE;
4688 load_error_tbl(l_error_rec, px_error_tbl);
4689 WHEN OTHERS THEN
4690 l_error_rec.error_type := 'OTHERS';
4691 l_error_rec.sqlcode := SQLCODE;
4692 load_error_tbl(l_error_rec, px_error_tbl);
4693 END;
4694 EXIT WHEN (i = p_krpv_tbl.LAST);
4695 i := p_krpv_tbl.NEXT(i);
4696 END LOOP;
4697 END IF;
4698 -- Loop through the error_tbl to find the error with the highest severity
4699 -- and return it.
4700 x_return_status := find_highest_exception(px_error_tbl);
4701 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4702 EXCEPTION
4703 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4704 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4705 (
4706 l_api_name,
4707 G_PKG_NAME,
4708 'OKC_API.G_RET_STS_ERROR',
4709 x_msg_count,
4710 x_msg_data,
4711 '_PVT'
4712 );
4713 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4714 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4715 (
4716 l_api_name,
4717 G_PKG_NAME,
4718 'OKC_API.G_RET_STS_UNEXP_ERROR',
4719 x_msg_count,
4720 x_msg_data,
4721 '_PVT'
4722 );
4723 WHEN OTHERS THEN
4724 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4725 (
4726 l_api_name,
4727 G_PKG_NAME,
4728 'OTHERS',
4729 x_msg_count,
4730 x_msg_data,
4731 '_PVT'
4732 );
4733 END insert_row;
4734
4735 ----------------------------------------
4736 -- PL/SQL TBL insert_row for:KRPV_TBL --
4737 ----------------------------------------
4738 PROCEDURE insert_row(
4739 p_api_version IN NUMBER,
4740 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4741 x_return_status OUT NOCOPY VARCHAR2,
4742 x_msg_count OUT NOCOPY NUMBER,
4743 x_msg_data OUT NOCOPY VARCHAR2,
4744 p_krpv_tbl IN krpv_tbl_type,
4745 x_krpv_tbl OUT NOCOPY krpv_tbl_type) IS
4746
4747 l_api_version CONSTANT NUMBER := 1;
4748 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
4749 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4750 l_error_tbl OKC_API.ERROR_TBL_TYPE;
4751 BEGIN
4752 OKC_API.init_msg_list(p_init_msg_list);
4753 -- Make sure PL/SQL table has records in it before passing
4754 IF (p_krpv_tbl.COUNT > 0) THEN
4755 insert_row (
4756 p_api_version => p_api_version,
4757 p_init_msg_list => OKC_API.G_FALSE,
4758 x_return_status => x_return_status,
4759 x_msg_count => x_msg_count,
4760 x_msg_data => x_msg_data,
4761 p_krpv_tbl => p_krpv_tbl,
4762 x_krpv_tbl => x_krpv_tbl,
4763 px_error_tbl => l_error_tbl);
4764 END IF;
4765 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4766 EXCEPTION
4767 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4768 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4769 (
4770 l_api_name,
4771 G_PKG_NAME,
4772 'OKC_API.G_RET_STS_ERROR',
4773 x_msg_count,
4774 x_msg_data,
4775 '_PVT'
4776 );
4777 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4778 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4779 (
4780 l_api_name,
4781 G_PKG_NAME,
4782 'OKC_API.G_RET_STS_UNEXP_ERROR',
4783 x_msg_count,
4784 x_msg_data,
4785 '_PVT'
4786 );
4787 WHEN OTHERS THEN
4788 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4789 (
4790 l_api_name,
4791 G_PKG_NAME,
4792 'OTHERS',
4793 x_msg_count,
4794 x_msg_data,
4795 '_PVT'
4796 );
4797 END insert_row;
4798
4799 ---------------------------------------------------------------------------
4800 -- PROCEDURE lock_row
4801 ---------------------------------------------------------------------------
4802 ------------------------------------
4803 -- lock_row for:OKL_K_RATE_PARAMS --
4804 ------------------------------------
4805 PROCEDURE lock_row(
4806 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4807 x_return_status OUT NOCOPY VARCHAR2,
4808 x_msg_count OUT NOCOPY NUMBER,
4809 x_msg_data OUT NOCOPY VARCHAR2,
4810 p_krp_rec IN krp_rec_type) IS
4811
4812 E_Resource_Busy EXCEPTION;
4813 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
4814 CURSOR lock_csr (p_krp_rec IN krp_rec_type) IS
4815 SELECT *
4816 FROM OKL_K_RATE_PARAMS
4817 WHERE PARAMETER_TYPE_CODE = p_krp_rec.parameter_type_code
4818 AND EFFECTIVE_FROM_DATE = p_krp_rec.effective_from_date
4819 AND KHR_ID = p_krp_rec.khr_id
4820 FOR UPDATE NOWAIT;
4821
4822 l_api_version CONSTANT NUMBER := 1;
4823 l_api_name CONSTANT VARCHAR2(30) := 'B_lock_row';
4824 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4825 l_lock_var lock_csr%ROWTYPE;
4826 l_row_notfound BOOLEAN := FALSE;
4827 lc_row_notfound BOOLEAN := FALSE;
4828 BEGIN
4829 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4830 p_init_msg_list,
4831 '_PVT',
4832 x_return_status);
4833 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4834 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4835 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4836 RAISE OKC_API.G_EXCEPTION_ERROR;
4837 END IF;
4838 BEGIN
4839 OPEN lock_csr(p_krp_rec);
4840 FETCH lock_csr INTO l_lock_var;
4841 l_row_notfound := lock_csr%NOTFOUND;
4842 CLOSE lock_csr;
4843 EXCEPTION
4844 WHEN E_Resource_Busy THEN
4845 IF (lock_csr%ISOPEN) THEN
4846 CLOSE lock_csr;
4847 END IF;
4848 OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
4849 RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
4850 END;
4851
4852 IF ( l_row_notfound ) THEN
4853 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
4854 RAISE OKC_API.G_EXCEPTION_ERROR;
4855 ELSE
4856 IF (l_lock_var.khr_id <> p_krp_rec.khr_id) THEN
4857 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4858 RAISE OKC_API.G_EXCEPTION_ERROR;
4859 END IF;
4860 IF (l_lock_var.parameter_type_code <> p_krp_rec.parameter_type_code) THEN
4861 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4862 RAISE OKC_API.G_EXCEPTION_ERROR;
4863 END IF;
4864 IF (l_lock_var.effective_from_date <> p_krp_rec.effective_from_date) THEN
4865 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4866 RAISE OKC_API.G_EXCEPTION_ERROR;
4867 END IF;
4868 IF (l_lock_var.effective_to_date <> p_krp_rec.effective_to_date) THEN
4869 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4870 RAISE OKC_API.G_EXCEPTION_ERROR;
4871 END IF;
4872 IF (l_lock_var.interest_index_id <> p_krp_rec.interest_index_id) THEN
4873 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4874 RAISE OKC_API.G_EXCEPTION_ERROR;
4875 END IF;
4876 IF (l_lock_var.base_rate <> p_krp_rec.base_rate) THEN
4877 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4878 RAISE OKC_API.G_EXCEPTION_ERROR;
4879 END IF;
4880 IF (l_lock_var.interest_start_date <> p_krp_rec.interest_start_date) THEN
4881 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4882 RAISE OKC_API.G_EXCEPTION_ERROR;
4883 END IF;
4884 IF (l_lock_var.adder_rate <> p_krp_rec.adder_rate) THEN
4885 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4886 RAISE OKC_API.G_EXCEPTION_ERROR;
4887 END IF;
4888 IF (l_lock_var.maximum_rate <> p_krp_rec.maximum_rate) THEN
4889 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4890 RAISE OKC_API.G_EXCEPTION_ERROR;
4891 END IF;
4892 IF (l_lock_var.minimum_rate <> p_krp_rec.minimum_rate) THEN
4893 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4894 RAISE OKC_API.G_EXCEPTION_ERROR;
4895 END IF;
4896 IF (l_lock_var.principal_basis_code <> p_krp_rec.principal_basis_code) THEN
4897 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4898 RAISE OKC_API.G_EXCEPTION_ERROR;
4899 END IF;
4900 IF (l_lock_var.days_in_a_month_code <> p_krp_rec.days_in_a_month_code) THEN
4901 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4902 RAISE OKC_API.G_EXCEPTION_ERROR;
4903 END IF;
4904 IF (l_lock_var.days_in_a_year_code <> p_krp_rec.days_in_a_year_code) THEN
4905 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4906 RAISE OKC_API.G_EXCEPTION_ERROR;
4907 END IF;
4908 IF (l_lock_var.interest_basis_code <> p_krp_rec.interest_basis_code) THEN
4909 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4910 RAISE OKC_API.G_EXCEPTION_ERROR;
4911 END IF;
4912 IF (l_lock_var.rate_delay_code <> p_krp_rec.rate_delay_code) THEN
4913 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4914 RAISE OKC_API.G_EXCEPTION_ERROR;
4915 END IF;
4916 IF (l_lock_var.rate_delay_frequency <> p_krp_rec.rate_delay_frequency) THEN
4917 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4918 RAISE OKC_API.G_EXCEPTION_ERROR;
4919 END IF;
4920 IF (l_lock_var.compounding_frequency_code <> p_krp_rec.compounding_frequency_code) THEN
4921 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4922 RAISE OKC_API.G_EXCEPTION_ERROR;
4923 END IF;
4924 IF (l_lock_var.calculation_formula_id <> p_krp_rec.calculation_formula_id) THEN
4925 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4926 RAISE OKC_API.G_EXCEPTION_ERROR;
4927 END IF;
4928 IF (l_lock_var.catchup_basis_code <> p_krp_rec.catchup_basis_code) THEN
4929 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4930 RAISE OKC_API.G_EXCEPTION_ERROR;
4931 END IF;
4932 IF (l_lock_var.catchup_start_date <> p_krp_rec.catchup_start_date) THEN
4933 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4934 RAISE OKC_API.G_EXCEPTION_ERROR;
4935 END IF;
4936 IF (l_lock_var.catchup_settlement_code <> p_krp_rec.catchup_settlement_code) THEN
4937 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4938 RAISE OKC_API.G_EXCEPTION_ERROR;
4939 END IF;
4940 IF (l_lock_var.rate_change_start_date <> p_krp_rec.rate_change_start_date) THEN
4941 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4942 RAISE OKC_API.G_EXCEPTION_ERROR;
4943 END IF;
4944 IF (l_lock_var.rate_change_frequency_code <> p_krp_rec.rate_change_frequency_code) THEN
4945 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4946 RAISE OKC_API.G_EXCEPTION_ERROR;
4947 END IF;
4948 IF (l_lock_var.rate_change_value <> p_krp_rec.rate_change_value) THEN
4949 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4950 RAISE OKC_API.G_EXCEPTION_ERROR;
4951 END IF;
4952 IF (l_lock_var.conversion_option_code <> p_krp_rec.conversion_option_code) THEN
4953 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4954 RAISE OKC_API.G_EXCEPTION_ERROR;
4955 END IF;
4956 IF (l_lock_var.next_conversion_date <> p_krp_rec.next_conversion_date) THEN
4957 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4958 RAISE OKC_API.G_EXCEPTION_ERROR;
4959 END IF;
4960 IF (l_lock_var.conversion_type_code <> p_krp_rec.conversion_type_code) THEN
4961 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4962 RAISE OKC_API.G_EXCEPTION_ERROR;
4963 END IF;
4964 IF (l_lock_var.attribute_category <> p_krp_rec.attribute_category) THEN
4965 OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
4966 RAISE OKC_API.G_EXCEPTION_ERROR;
4967 END IF;
4968 IF (l_lock_var.attribute1 <> p_krp_rec.attribute1) 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.attribute2 <> p_krp_rec.attribute2) 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.attribute3 <> p_krp_rec.attribute3) 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.attribute4 <> p_krp_rec.attribute4) 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.attribute5 <> p_krp_rec.attribute5) 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.attribute6 <> p_krp_rec.attribute6) 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.attribute7 <> p_krp_rec.attribute7) 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.attribute8 <> p_krp_rec.attribute8) 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.attribute9 <> p_krp_rec.attribute9) 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.attribute10 <> p_krp_rec.attribute10) 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.attribute11 <> p_krp_rec.attribute11) 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.attribute12 <> p_krp_rec.attribute12) 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.attribute13 <> p_krp_rec.attribute13) 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.attribute14 <> p_krp_rec.attribute14) 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.attribute15 <> p_krp_rec.attribute15) 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.created_by <> p_krp_rec.created_by) 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.creation_date <> p_krp_rec.creation_date) 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.last_updated_by <> p_krp_rec.last_updated_by) 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.last_update_date <> p_krp_rec.last_update_date) 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.last_update_login <> p_krp_rec.last_update_login) 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_frequency_code <> p_krp_rec.catchup_frequency_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 END IF;
5053 x_return_status := l_return_status;
5054 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5055 EXCEPTION
5056 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5057 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5058 (
5059 l_api_name,
5060 G_PKG_NAME,
5061 'OKC_API.G_RET_STS_ERROR',
5062 x_msg_count,
5063 x_msg_data,
5064 '_PVT'
5065 );
5066 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5067 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5068 (
5069 l_api_name,
5070 G_PKG_NAME,
5071 'OKC_API.G_RET_STS_UNEXP_ERROR',
5072 x_msg_count,
5073 x_msg_data,
5074 '_PVT'
5075 );
5076 WHEN OTHERS THEN
5077 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5078 (
5079 l_api_name,
5080 G_PKG_NAME,
5081 'OTHERS',
5082 x_msg_count,
5083 x_msg_data,
5084 '_PVT'
5085 );
5086 END lock_row;
5087 ---------------------------------------
5088 -- lock_row for: OKL_K_RATE_PARAMS_V --
5089 ---------------------------------------
5090 PROCEDURE lock_row(
5091 p_api_version IN NUMBER,
5092 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5093 x_return_status OUT NOCOPY VARCHAR2,
5094 x_msg_count OUT NOCOPY NUMBER,
5095 x_msg_data OUT NOCOPY VARCHAR2,
5096 p_krpv_rec IN krpv_rec_type) IS
5097
5098 l_api_version CONSTANT NUMBER := 1;
5099 l_api_name CONSTANT VARCHAR2(30) := 'V_lock_row';
5100 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5101 l_krp_rec krp_rec_type;
5102 BEGIN
5103 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5104 G_PKG_NAME,
5105 p_init_msg_list,
5106 l_api_version,
5107 p_api_version,
5108 '_PVT',
5109 x_return_status);
5110 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5111 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5112 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5113 RAISE OKC_API.G_EXCEPTION_ERROR;
5114 END IF;
5115 -----------------------------------------
5116 -- Move VIEW record to "Child" records --
5117 -----------------------------------------
5118 migrate(p_krpv_rec, l_krp_rec);
5119 ---------------------------------------------
5120 -- Call the LOCK_ROW for each child record --
5121 ---------------------------------------------
5122 lock_row(
5123 p_init_msg_list,
5124 l_return_status,
5125 x_msg_count,
5126 x_msg_data,
5127 l_krp_rec
5128 );
5129 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5130 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5131 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5132 RAISE OKC_API.G_EXCEPTION_ERROR;
5133 END IF;
5134 x_return_status := l_return_status;
5135 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5136 EXCEPTION
5137 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5138 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5139 (
5140 l_api_name,
5141 G_PKG_NAME,
5142 'OKC_API.G_RET_STS_ERROR',
5143 x_msg_count,
5144 x_msg_data,
5145 '_PVT'
5146 );
5147 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5148 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5149 (
5150 l_api_name,
5151 G_PKG_NAME,
5152 'OKC_API.G_RET_STS_UNEXP_ERROR',
5153 x_msg_count,
5154 x_msg_data,
5155 '_PVT'
5156 );
5157 WHEN OTHERS THEN
5158 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5159 (
5160 l_api_name,
5161 G_PKG_NAME,
5162 'OTHERS',
5163 x_msg_count,
5164 x_msg_data,
5165 '_PVT'
5166 );
5167 END lock_row;
5168 --------------------------------------
5169 -- PL/SQL TBL lock_row for:KRPV_TBL --
5170 --------------------------------------
5171 PROCEDURE lock_row(
5172 p_api_version IN NUMBER,
5173 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5174 x_return_status OUT NOCOPY VARCHAR2,
5175 x_msg_count OUT NOCOPY NUMBER,
5176 x_msg_data OUT NOCOPY VARCHAR2,
5177 p_krpv_tbl IN krpv_tbl_type,
5178 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
5179
5180 l_api_version CONSTANT NUMBER := 1;
5181 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
5182 i NUMBER := 0;
5183 BEGIN
5184 OKC_API.init_msg_list(p_init_msg_list);
5185 -- Make sure PL/SQL table has recrods in it before passing
5186 IF (p_krpv_tbl.COUNT > 0) THEN
5187 i := p_krpv_tbl.FIRST;
5188 LOOP
5189 DECLARE
5190 l_error_rec OKC_API.ERROR_REC_TYPE;
5191 BEGIN
5192 l_error_rec.api_name := l_api_name;
5193 l_error_rec.api_package := G_PKG_NAME;
5194 l_error_rec.idx := i;
5195 lock_row(
5196 p_api_version => p_api_version,
5197 p_init_msg_list => OKC_API.G_FALSE,
5198 x_return_status => l_error_rec.error_type,
5199 x_msg_count => l_error_rec.msg_count,
5200 x_msg_data => l_error_rec.msg_data,
5201 p_krpv_rec => p_krpv_tbl(i));
5202 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
5203 l_error_rec.sqlcode := SQLCODE;
5204 load_error_tbl(l_error_rec, px_error_tbl);
5205 ELSE
5206 x_msg_count := l_error_rec.msg_count;
5207 x_msg_data := l_error_rec.msg_data;
5208 END IF;
5209 EXCEPTION
5210 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5211 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
5212 l_error_rec.sqlcode := SQLCODE;
5213 load_error_tbl(l_error_rec, px_error_tbl);
5214 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5215 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
5216 l_error_rec.sqlcode := SQLCODE;
5217 load_error_tbl(l_error_rec, px_error_tbl);
5218 WHEN OTHERS THEN
5219 l_error_rec.error_type := 'OTHERS';
5220 l_error_rec.sqlcode := SQLCODE;
5221 load_error_tbl(l_error_rec, px_error_tbl);
5222 END;
5223 EXIT WHEN (i = p_krpv_tbl.LAST);
5224 i := p_krpv_tbl.NEXT(i);
5225 END LOOP;
5226 END IF;
5227 -- Loop through the error_tbl to find the error with the highest severity
5228 -- and return it.
5229 x_return_status := find_highest_exception(px_error_tbl);
5230 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5231 EXCEPTION
5232 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5233 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5234 (
5235 l_api_name,
5236 G_PKG_NAME,
5237 'OKC_API.G_RET_STS_ERROR',
5238 x_msg_count,
5239 x_msg_data,
5240 '_PVT'
5241 );
5242 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5243 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5244 (
5245 l_api_name,
5246 G_PKG_NAME,
5247 'OKC_API.G_RET_STS_UNEXP_ERROR',
5248 x_msg_count,
5249 x_msg_data,
5250 '_PVT'
5251 );
5252 WHEN OTHERS THEN
5253 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5254 (
5255 l_api_name,
5256 G_PKG_NAME,
5257 'OTHERS',
5258 x_msg_count,
5259 x_msg_data,
5260 '_PVT'
5261 );
5262 END lock_row;
5263 --------------------------------------
5264 -- PL/SQL TBL lock_row for:KRPV_TBL --
5265 --------------------------------------
5266 PROCEDURE lock_row(
5267 p_api_version IN NUMBER,
5268 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5269 x_return_status OUT NOCOPY VARCHAR2,
5270 x_msg_count OUT NOCOPY NUMBER,
5271 x_msg_data OUT NOCOPY VARCHAR2,
5272 p_krpv_tbl IN krpv_tbl_type) IS
5273
5274 l_api_version CONSTANT NUMBER := 1;
5275 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
5276 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5277 l_error_tbl OKC_API.ERROR_TBL_TYPE;
5278 BEGIN
5279 OKC_API.init_msg_list(p_init_msg_list);
5280 -- Make sure PL/SQL table has recrods in it before passing
5281 IF (p_krpv_tbl.COUNT > 0) THEN
5282 lock_row(
5283 p_api_version => p_api_version,
5284 p_init_msg_list => OKC_API.G_FALSE,
5285 x_return_status => x_return_status,
5286 x_msg_count => x_msg_count,
5287 x_msg_data => x_msg_data,
5288 p_krpv_tbl => p_krpv_tbl,
5289 px_error_tbl => l_error_tbl);
5290 END IF;
5291 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5292 EXCEPTION
5293 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5294 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5295 (
5296 l_api_name,
5297 G_PKG_NAME,
5298 'OKC_API.G_RET_STS_ERROR',
5299 x_msg_count,
5300 x_msg_data,
5301 '_PVT'
5302 );
5303 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5304 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5305 (
5306 l_api_name,
5307 G_PKG_NAME,
5308 'OKC_API.G_RET_STS_UNEXP_ERROR',
5309 x_msg_count,
5310 x_msg_data,
5311 '_PVT'
5312 );
5313 WHEN OTHERS THEN
5314 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5315 (
5316 l_api_name,
5317 G_PKG_NAME,
5318 'OTHERS',
5319 x_msg_count,
5320 x_msg_data,
5321 '_PVT'
5322 );
5323 END lock_row;
5324 ---------------------------------------------------------------------------
5325 -- PROCEDURE update_row
5326 ---------------------------------------------------------------------------
5327 --------------------------------------
5328 -- update_row for:OKL_K_RATE_PARAMS --
5329 --------------------------------------
5330 PROCEDURE update_row(
5331 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5332 x_return_status OUT NOCOPY VARCHAR2,
5333 x_msg_count OUT NOCOPY NUMBER,
5334 x_msg_data OUT NOCOPY VARCHAR2,
5335 p_krp_rec IN krp_rec_type,
5336 x_krp_rec OUT NOCOPY krp_rec_type) IS
5337
5338 l_api_version CONSTANT NUMBER := 1;
5339 l_api_name CONSTANT VARCHAR2(30) := 'B_update_row';
5340 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5341 l_krp_rec krp_rec_type := p_krp_rec;
5342 l_def_krp_rec krp_rec_type;
5343 l_row_notfound BOOLEAN := TRUE;
5344 ----------------------------------
5345 -- FUNCTION populate_new_record --
5346 ----------------------------------
5347 FUNCTION populate_new_record (
5348 p_krp_rec IN krp_rec_type,
5349 x_krp_rec OUT NOCOPY krp_rec_type
5350 ) RETURN VARCHAR2 IS
5351 l_krp_rec krp_rec_type;
5352 l_row_notfound BOOLEAN := TRUE;
5353 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5354 BEGIN
5355 x_krp_rec := p_krp_rec;
5356 -- Get current database values
5357 l_krp_rec := get_rec(p_krp_rec, l_return_status);
5358 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
5359 IF (x_krp_rec.khr_id = OKC_API.G_MISS_NUM)
5360 THEN
5361 x_krp_rec.khr_id := l_krp_rec.khr_id;
5362 END IF;
5363 IF (x_krp_rec.parameter_type_code = OKC_API.G_MISS_CHAR)
5364 THEN
5365 x_krp_rec.parameter_type_code := l_krp_rec.parameter_type_code;
5366 END IF;
5367 IF (x_krp_rec.effective_from_date = OKC_API.G_MISS_DATE)
5368 THEN
5369 x_krp_rec.effective_from_date := l_krp_rec.effective_from_date;
5370 END IF;
5371 IF (x_krp_rec.effective_to_date = OKC_API.G_MISS_DATE)
5372 THEN
5373 x_krp_rec.effective_to_date := l_krp_rec.effective_to_date;
5374 END IF;
5375 IF (x_krp_rec.interest_index_id = OKC_API.G_MISS_NUM)
5376 THEN
5377 x_krp_rec.interest_index_id := l_krp_rec.interest_index_id;
5378 END IF;
5379 IF (x_krp_rec.base_rate = OKC_API.G_MISS_NUM)
5380 THEN
5381 x_krp_rec.base_rate := l_krp_rec.base_rate;
5382 END IF;
5383 IF (x_krp_rec.interest_start_date = OKC_API.G_MISS_DATE)
5384 THEN
5385 x_krp_rec.interest_start_date := l_krp_rec.interest_start_date;
5386 END IF;
5387 IF (x_krp_rec.adder_rate = OKC_API.G_MISS_NUM)
5388 THEN
5389 x_krp_rec.adder_rate := l_krp_rec.adder_rate;
5390 END IF;
5391 IF (x_krp_rec.maximum_rate = OKC_API.G_MISS_NUM)
5392 THEN
5393 x_krp_rec.maximum_rate := l_krp_rec.maximum_rate;
5394 END IF;
5395 IF (x_krp_rec.minimum_rate = OKC_API.G_MISS_NUM)
5396 THEN
5397 x_krp_rec.minimum_rate := l_krp_rec.minimum_rate;
5398 END IF;
5399 IF (x_krp_rec.principal_basis_code = OKC_API.G_MISS_CHAR)
5400 THEN
5401 x_krp_rec.principal_basis_code := l_krp_rec.principal_basis_code;
5402 END IF;
5403 IF (x_krp_rec.days_in_a_month_code = OKC_API.G_MISS_CHAR)
5404 THEN
5405 x_krp_rec.days_in_a_month_code := l_krp_rec.days_in_a_month_code;
5406 END IF;
5407 IF (x_krp_rec.days_in_a_year_code = OKC_API.G_MISS_CHAR)
5408 THEN
5409 x_krp_rec.days_in_a_year_code := l_krp_rec.days_in_a_year_code;
5410 END IF;
5411 IF (x_krp_rec.interest_basis_code = OKC_API.G_MISS_CHAR)
5412 THEN
5413 x_krp_rec.interest_basis_code := l_krp_rec.interest_basis_code;
5414 END IF;
5415 IF (x_krp_rec.rate_delay_code = OKC_API.G_MISS_CHAR)
5416 THEN
5417 x_krp_rec.rate_delay_code := l_krp_rec.rate_delay_code;
5418 END IF;
5419 IF (x_krp_rec.rate_delay_frequency = OKC_API.G_MISS_NUM)
5420 THEN
5421 x_krp_rec.rate_delay_frequency := l_krp_rec.rate_delay_frequency;
5422 END IF;
5423 IF (x_krp_rec.compounding_frequency_code = OKC_API.G_MISS_CHAR)
5424 THEN
5425 x_krp_rec.compounding_frequency_code := l_krp_rec.compounding_frequency_code;
5426 END IF;
5427 IF (x_krp_rec.calculation_formula_id = OKC_API.G_MISS_NUM)
5428 THEN
5429 x_krp_rec.calculation_formula_id := l_krp_rec.calculation_formula_id;
5430 END IF;
5431 IF (x_krp_rec.catchup_basis_code = OKC_API.G_MISS_CHAR)
5432 THEN
5433 x_krp_rec.catchup_basis_code := l_krp_rec.catchup_basis_code;
5434 END IF;
5435 IF (x_krp_rec.catchup_start_date = OKC_API.G_MISS_DATE)
5436 THEN
5437 x_krp_rec.catchup_start_date := l_krp_rec.catchup_start_date;
5438 END IF;
5439 IF (x_krp_rec.catchup_settlement_code = OKC_API.G_MISS_CHAR)
5440 THEN
5441 x_krp_rec.catchup_settlement_code := l_krp_rec.catchup_settlement_code;
5442 END IF;
5443 IF (x_krp_rec.rate_change_start_date = OKC_API.G_MISS_DATE)
5444 THEN
5445 x_krp_rec.rate_change_start_date := l_krp_rec.rate_change_start_date;
5446 END IF;
5447 IF (x_krp_rec.rate_change_frequency_code = OKC_API.G_MISS_CHAR)
5448 THEN
5449 x_krp_rec.rate_change_frequency_code := l_krp_rec.rate_change_frequency_code;
5450 END IF;
5451 IF (x_krp_rec.rate_change_value = OKC_API.G_MISS_NUM)
5452 THEN
5453 x_krp_rec.rate_change_value := l_krp_rec.rate_change_value;
5454 END IF;
5455 IF (x_krp_rec.conversion_option_code = OKC_API.G_MISS_CHAR)
5456 THEN
5457 x_krp_rec.conversion_option_code := l_krp_rec.conversion_option_code;
5458 END IF;
5459 IF (x_krp_rec.next_conversion_date = OKC_API.G_MISS_DATE)
5460 THEN
5461 x_krp_rec.next_conversion_date := l_krp_rec.next_conversion_date;
5462 END IF;
5463 IF (x_krp_rec.conversion_type_code = OKC_API.G_MISS_CHAR)
5464 THEN
5465 x_krp_rec.conversion_type_code := l_krp_rec.conversion_type_code;
5466 END IF;
5467 IF (x_krp_rec.attribute_category = OKC_API.G_MISS_CHAR)
5468 THEN
5469 x_krp_rec.attribute_category := l_krp_rec.attribute_category;
5470 END IF;
5471 IF (x_krp_rec.attribute1 = OKC_API.G_MISS_CHAR)
5472 THEN
5473 x_krp_rec.attribute1 := l_krp_rec.attribute1;
5474 END IF;
5475 IF (x_krp_rec.attribute2 = OKC_API.G_MISS_CHAR)
5476 THEN
5477 x_krp_rec.attribute2 := l_krp_rec.attribute2;
5478 END IF;
5479 IF (x_krp_rec.attribute3 = OKC_API.G_MISS_CHAR)
5480 THEN
5481 x_krp_rec.attribute3 := l_krp_rec.attribute3;
5482 END IF;
5483 IF (x_krp_rec.attribute4 = OKC_API.G_MISS_CHAR)
5484 THEN
5485 x_krp_rec.attribute4 := l_krp_rec.attribute4;
5486 END IF;
5487 IF (x_krp_rec.attribute5 = OKC_API.G_MISS_CHAR)
5488 THEN
5489 x_krp_rec.attribute5 := l_krp_rec.attribute5;
5490 END IF;
5491 IF (x_krp_rec.attribute6 = OKC_API.G_MISS_CHAR)
5492 THEN
5493 x_krp_rec.attribute6 := l_krp_rec.attribute6;
5494 END IF;
5495 IF (x_krp_rec.attribute7 = OKC_API.G_MISS_CHAR)
5496 THEN
5497 x_krp_rec.attribute7 := l_krp_rec.attribute7;
5498 END IF;
5499 IF (x_krp_rec.attribute8 = OKC_API.G_MISS_CHAR)
5500 THEN
5501 x_krp_rec.attribute8 := l_krp_rec.attribute8;
5502 END IF;
5503 IF (x_krp_rec.attribute9 = OKC_API.G_MISS_CHAR)
5504 THEN
5505 x_krp_rec.attribute9 := l_krp_rec.attribute9;
5506 END IF;
5507 IF (x_krp_rec.attribute10 = OKC_API.G_MISS_CHAR)
5508 THEN
5509 x_krp_rec.attribute10 := l_krp_rec.attribute10;
5510 END IF;
5511 IF (x_krp_rec.attribute11 = OKC_API.G_MISS_CHAR)
5512 THEN
5513 x_krp_rec.attribute11 := l_krp_rec.attribute11;
5514 END IF;
5515 IF (x_krp_rec.attribute12 = OKC_API.G_MISS_CHAR)
5516 THEN
5517 x_krp_rec.attribute12 := l_krp_rec.attribute12;
5518 END IF;
5519 IF (x_krp_rec.attribute13 = OKC_API.G_MISS_CHAR)
5520 THEN
5521 x_krp_rec.attribute13 := l_krp_rec.attribute13;
5522 END IF;
5523 IF (x_krp_rec.attribute14 = OKC_API.G_MISS_CHAR)
5524 THEN
5525 x_krp_rec.attribute14 := l_krp_rec.attribute14;
5526 END IF;
5527 IF (x_krp_rec.attribute15 = OKC_API.G_MISS_CHAR)
5528 THEN
5529 x_krp_rec.attribute15 := l_krp_rec.attribute15;
5530 END IF;
5531 IF (x_krp_rec.created_by = OKC_API.G_MISS_NUM)
5532 THEN
5533 x_krp_rec.created_by := l_krp_rec.created_by;
5534 END IF;
5535 IF (x_krp_rec.creation_date = OKC_API.G_MISS_DATE)
5536 THEN
5537 x_krp_rec.creation_date := l_krp_rec.creation_date;
5538 END IF;
5539 IF (x_krp_rec.last_updated_by = OKC_API.G_MISS_NUM)
5540 THEN
5541 x_krp_rec.last_updated_by := l_krp_rec.last_updated_by;
5542 END IF;
5543 IF (x_krp_rec.last_update_date = OKC_API.G_MISS_DATE)
5544 THEN
5545 x_krp_rec.last_update_date := l_krp_rec.last_update_date;
5546 END IF;
5547 IF (x_krp_rec.last_update_login = OKC_API.G_MISS_NUM)
5548 THEN
5549 x_krp_rec.last_update_login := l_krp_rec.last_update_login;
5550 END IF;
5551 IF (x_krp_rec.catchup_frequency_code = OKC_API.G_MISS_CHAR)
5552 THEN
5553 x_krp_rec.catchup_frequency_code := l_krp_rec.catchup_frequency_code;
5554 END IF;
5555 END IF;
5556 RETURN(l_return_status);
5557 END populate_new_record;
5558 ------------------------------------------
5559 -- Set_Attributes for:OKL_K_RATE_PARAMS --
5560 ------------------------------------------
5561 FUNCTION Set_Attributes (
5562 p_krp_rec IN krp_rec_type,
5563 x_krp_rec OUT NOCOPY krp_rec_type
5564 ) RETURN VARCHAR2 IS
5565 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5566 BEGIN
5567 x_krp_rec := p_krp_rec;
5568 RETURN(l_return_status);
5569 END Set_Attributes;
5570 BEGIN
5571 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5572 p_init_msg_list,
5573 '_PVT',
5574 x_return_status);
5575 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5576 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5577 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5578 RAISE OKC_API.G_EXCEPTION_ERROR;
5579 END IF;
5580 --- Setting item attributes
5581 l_return_status := Set_Attributes(
5582 p_krp_rec, -- IN
5583 l_krp_rec); -- OUT
5584 --- If any errors happen abort API
5585 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5586 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5587 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5588 RAISE OKC_API.G_EXCEPTION_ERROR;
5589 END IF;
5590 l_return_status := populate_new_record(l_krp_rec, l_def_krp_rec);
5591 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5592 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5593 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5594 RAISE OKC_API.G_EXCEPTION_ERROR;
5595 END IF;
5596 UPDATE OKL_K_RATE_PARAMS
5597 SET EFFECTIVE_TO_DATE = l_def_krp_rec.effective_to_date,
5598 INTEREST_INDEX_ID = l_def_krp_rec.interest_index_id,
5599 BASE_RATE = l_def_krp_rec.base_rate,
5600 INTEREST_START_DATE = l_def_krp_rec.interest_start_date,
5601 ADDER_RATE = l_def_krp_rec.adder_rate,
5602 MAXIMUM_RATE = l_def_krp_rec.maximum_rate,
5603 MINIMUM_RATE = l_def_krp_rec.minimum_rate,
5604 PRINCIPAL_BASIS_CODE = l_def_krp_rec.principal_basis_code,
5605 DAYS_IN_A_MONTH_CODE = l_def_krp_rec.days_in_a_month_code,
5606 DAYS_IN_A_YEAR_CODE = l_def_krp_rec.days_in_a_year_code,
5607 INTEREST_BASIS_CODE = l_def_krp_rec.interest_basis_code,
5608 RATE_DELAY_CODE = l_def_krp_rec.rate_delay_code,
5609 RATE_DELAY_FREQUENCY = l_def_krp_rec.rate_delay_frequency,
5610 COMPOUNDING_FREQUENCY_CODE = l_def_krp_rec.compounding_frequency_code,
5611 CALCULATION_FORMULA_ID = l_def_krp_rec.calculation_formula_id,
5612 CATCHUP_BASIS_CODE = l_def_krp_rec.catchup_basis_code,
5613 CATCHUP_START_DATE = l_def_krp_rec.catchup_start_date,
5614 CATCHUP_SETTLEMENT_CODE = l_def_krp_rec.catchup_settlement_code,
5615 RATE_CHANGE_START_DATE = l_def_krp_rec.rate_change_start_date,
5616 RATE_CHANGE_FREQUENCY_CODE = l_def_krp_rec.rate_change_frequency_code,
5617 RATE_CHANGE_VALUE = l_def_krp_rec.rate_change_value,
5618 CONVERSION_OPTION_CODE = l_def_krp_rec.conversion_option_code,
5619 NEXT_CONVERSION_DATE = l_def_krp_rec.next_conversion_date,
5620 CONVERSION_TYPE_CODE = l_def_krp_rec.conversion_type_code,
5621 ATTRIBUTE_CATEGORY = l_def_krp_rec.attribute_category,
5622 ATTRIBUTE1 = l_def_krp_rec.attribute1,
5623 ATTRIBUTE2 = l_def_krp_rec.attribute2,
5624 ATTRIBUTE3 = l_def_krp_rec.attribute3,
5625 ATTRIBUTE4 = l_def_krp_rec.attribute4,
5626 ATTRIBUTE5 = l_def_krp_rec.attribute5,
5627 ATTRIBUTE6 = l_def_krp_rec.attribute6,
5628 ATTRIBUTE7 = l_def_krp_rec.attribute7,
5629 ATTRIBUTE8 = l_def_krp_rec.attribute8,
5630 ATTRIBUTE9 = l_def_krp_rec.attribute9,
5631 ATTRIBUTE10 = l_def_krp_rec.attribute10,
5632 ATTRIBUTE11 = l_def_krp_rec.attribute11,
5633 ATTRIBUTE12 = l_def_krp_rec.attribute12,
5634 ATTRIBUTE13 = l_def_krp_rec.attribute13,
5635 ATTRIBUTE14 = l_def_krp_rec.attribute14,
5636 ATTRIBUTE15 = l_def_krp_rec.attribute15,
5637 CREATED_BY = l_def_krp_rec.created_by,
5638 CREATION_DATE = l_def_krp_rec.creation_date,
5639 LAST_UPDATED_BY = l_def_krp_rec.last_updated_by,
5640 LAST_UPDATE_DATE = l_def_krp_rec.last_update_date,
5641 LAST_UPDATE_LOGIN = l_def_krp_rec.last_update_login,
5642 CATCHUP_FREQUENCY_CODE = l_def_krp_rec.catchup_frequency_code
5643 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;
5644
5645 x_krp_rec := l_krp_rec;
5646 x_return_status := l_return_status;
5647 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5648 EXCEPTION
5649 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5650 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5651 (
5652 l_api_name,
5653 G_PKG_NAME,
5654 'OKC_API.G_RET_STS_ERROR',
5655 x_msg_count,
5656 x_msg_data,
5657 '_PVT'
5658 );
5659 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5660 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5661 (
5662 l_api_name,
5663 G_PKG_NAME,
5664 'OKC_API.G_RET_STS_UNEXP_ERROR',
5665 x_msg_count,
5666 x_msg_data,
5667 '_PVT'
5668 );
5669 WHEN OTHERS THEN
5670 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5671 (
5672 l_api_name,
5673 G_PKG_NAME,
5674 'OTHERS',
5675 x_msg_count,
5676 x_msg_data,
5677 '_PVT'
5678 );
5679 END update_row;
5680 ----------------------------------------
5681 -- update_row for:OKL_K_RATE_PARAMS_V --
5682 ----------------------------------------
5683 PROCEDURE update_row(
5684 p_api_version IN NUMBER,
5685 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5686 x_return_status OUT NOCOPY VARCHAR2,
5687 x_msg_count OUT NOCOPY NUMBER,
5688 x_msg_data OUT NOCOPY VARCHAR2,
5689 p_krpv_rec IN krpv_rec_type,
5690 x_krpv_rec OUT NOCOPY krpv_rec_type) IS
5691
5692 l_api_version CONSTANT NUMBER := 1;
5693 l_api_name CONSTANT VARCHAR2(30) := 'V_update_row';
5694 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5695 l_krpv_rec krpv_rec_type := p_krpv_rec;
5696 l_def_krpv_rec krpv_rec_type;
5697 l_db_krpv_rec krpv_rec_type;
5698 l_krp_rec krp_rec_type;
5699 lx_krp_rec krp_rec_type;
5700 -------------------------------
5701 -- FUNCTION fill_who_columns --
5702 -------------------------------
5703 FUNCTION fill_who_columns (
5704 p_krpv_rec IN krpv_rec_type
5705 ) RETURN krpv_rec_type IS
5706 l_krpv_rec krpv_rec_type := p_krpv_rec;
5707 BEGIN
5708 l_krpv_rec.LAST_UPDATE_DATE := SYSDATE;
5709 l_krpv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
5710 l_krpv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
5711 RETURN(l_krpv_rec);
5712 END fill_who_columns;
5713 ----------------------------------
5714 -- FUNCTION populate_new_record --
5715 ----------------------------------
5716 FUNCTION populate_new_record (
5717 p_krpv_rec IN krpv_rec_type,
5718 x_krpv_rec OUT NOCOPY krpv_rec_type
5719 ) RETURN VARCHAR2 IS
5720 l_row_notfound BOOLEAN := TRUE;
5721 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5722 BEGIN
5723 x_krpv_rec := p_krpv_rec;
5724 -- Get current database values
5725 -- NOTE: Never assign the OBJECT_VERSION_NUMBER. Force the user to pass it
5726 -- so it may be verified through LOCK_ROW.
5727 l_db_krpv_rec := get_rec(p_krpv_rec, l_return_status);
5728 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
5729 IF (x_krpv_rec.khr_id = OKC_API.G_MISS_NUM)
5730 THEN
5731 x_krpv_rec.khr_id := l_db_krpv_rec.khr_id;
5732 END IF;
5733 IF (x_krpv_rec.parameter_type_code = OKC_API.G_MISS_CHAR)
5734 THEN
5735 x_krpv_rec.parameter_type_code := l_db_krpv_rec.parameter_type_code;
5736 END IF;
5737 IF (x_krpv_rec.effective_from_date = OKC_API.G_MISS_DATE)
5738 THEN
5739 x_krpv_rec.effective_from_date := l_db_krpv_rec.effective_from_date;
5740 END IF;
5741 IF (x_krpv_rec.effective_to_date = OKC_API.G_MISS_DATE)
5742 THEN
5743 x_krpv_rec.effective_to_date := l_db_krpv_rec.effective_to_date;
5744 END IF;
5745 IF (x_krpv_rec.interest_index_id = OKC_API.G_MISS_NUM)
5746 THEN
5747 x_krpv_rec.interest_index_id := l_db_krpv_rec.interest_index_id;
5748 END IF;
5749 IF (x_krpv_rec.base_rate = OKC_API.G_MISS_NUM)
5750 THEN
5751 x_krpv_rec.base_rate := l_db_krpv_rec.base_rate;
5752 END IF;
5753 IF (x_krpv_rec.interest_start_date = OKC_API.G_MISS_DATE)
5754 THEN
5755 x_krpv_rec.interest_start_date := l_db_krpv_rec.interest_start_date;
5756 END IF;
5757 IF (x_krpv_rec.adder_rate = OKC_API.G_MISS_NUM)
5758 THEN
5759 x_krpv_rec.adder_rate := l_db_krpv_rec.adder_rate;
5760 END IF;
5761 IF (x_krpv_rec.maximum_rate = OKC_API.G_MISS_NUM)
5762 THEN
5763 x_krpv_rec.maximum_rate := l_db_krpv_rec.maximum_rate;
5764 END IF;
5765 IF (x_krpv_rec.minimum_rate = OKC_API.G_MISS_NUM)
5766 THEN
5767 x_krpv_rec.minimum_rate := l_db_krpv_rec.minimum_rate;
5768 END IF;
5769 IF (x_krpv_rec.principal_basis_code = OKC_API.G_MISS_CHAR)
5770 THEN
5771 x_krpv_rec.principal_basis_code := l_db_krpv_rec.principal_basis_code;
5772 END IF;
5773 IF (x_krpv_rec.days_in_a_month_code = OKC_API.G_MISS_CHAR)
5774 THEN
5775 x_krpv_rec.days_in_a_month_code := l_db_krpv_rec.days_in_a_month_code;
5776 END IF;
5777 IF (x_krpv_rec.days_in_a_year_code = OKC_API.G_MISS_CHAR)
5778 THEN
5779 x_krpv_rec.days_in_a_year_code := l_db_krpv_rec.days_in_a_year_code;
5780 END IF;
5781 IF (x_krpv_rec.interest_basis_code = OKC_API.G_MISS_CHAR)
5782 THEN
5783 x_krpv_rec.interest_basis_code := l_db_krpv_rec.interest_basis_code;
5784 END IF;
5785 IF (x_krpv_rec.rate_delay_code = OKC_API.G_MISS_CHAR)
5786 THEN
5787 x_krpv_rec.rate_delay_code := l_db_krpv_rec.rate_delay_code;
5788 END IF;
5789 IF (x_krpv_rec.rate_delay_frequency = OKC_API.G_MISS_NUM)
5790 THEN
5791 x_krpv_rec.rate_delay_frequency := l_db_krpv_rec.rate_delay_frequency;
5792 END IF;
5793 IF (x_krpv_rec.compounding_frequency_code = OKC_API.G_MISS_CHAR)
5794 THEN
5795 x_krpv_rec.compounding_frequency_code := l_db_krpv_rec.compounding_frequency_code;
5796 END IF;
5797 IF (x_krpv_rec.calculation_formula_id = OKC_API.G_MISS_NUM)
5798 THEN
5799 x_krpv_rec.calculation_formula_id := l_db_krpv_rec.calculation_formula_id;
5800 END IF;
5801 IF (x_krpv_rec.catchup_basis_code = OKC_API.G_MISS_CHAR)
5802 THEN
5803 x_krpv_rec.catchup_basis_code := l_db_krpv_rec.catchup_basis_code;
5804 END IF;
5805 IF (x_krpv_rec.catchup_start_date = OKC_API.G_MISS_DATE)
5806 THEN
5807 x_krpv_rec.catchup_start_date := l_db_krpv_rec.catchup_start_date;
5808 END IF;
5809 IF (x_krpv_rec.catchup_settlement_code = OKC_API.G_MISS_CHAR)
5810 THEN
5811 x_krpv_rec.catchup_settlement_code := l_db_krpv_rec.catchup_settlement_code;
5812 END IF;
5813 IF (x_krpv_rec.rate_change_start_date = OKC_API.G_MISS_DATE)
5814 THEN
5815 x_krpv_rec.rate_change_start_date := l_db_krpv_rec.rate_change_start_date;
5816 END IF;
5817 IF (x_krpv_rec.rate_change_frequency_code = OKC_API.G_MISS_CHAR)
5818 THEN
5819 x_krpv_rec.rate_change_frequency_code := l_db_krpv_rec.rate_change_frequency_code;
5820 END IF;
5821 IF (x_krpv_rec.rate_change_value = OKC_API.G_MISS_NUM)
5822 THEN
5823 x_krpv_rec.rate_change_value := l_db_krpv_rec.rate_change_value;
5824 END IF;
5825 IF (x_krpv_rec.conversion_option_code = OKC_API.G_MISS_CHAR)
5826 THEN
5827 x_krpv_rec.conversion_option_code := l_db_krpv_rec.conversion_option_code;
5828 END IF;
5829 IF (x_krpv_rec.next_conversion_date = OKC_API.G_MISS_DATE)
5830 THEN
5831 x_krpv_rec.next_conversion_date := l_db_krpv_rec.next_conversion_date;
5832 END IF;
5833 IF (x_krpv_rec.conversion_type_code = OKC_API.G_MISS_CHAR)
5834 THEN
5835 x_krpv_rec.conversion_type_code := l_db_krpv_rec.conversion_type_code;
5836 END IF;
5837 IF (x_krpv_rec.attribute_category = OKC_API.G_MISS_CHAR)
5838 THEN
5839 x_krpv_rec.attribute_category := l_db_krpv_rec.attribute_category;
5840 END IF;
5841 IF (x_krpv_rec.attribute1 = OKC_API.G_MISS_CHAR)
5842 THEN
5843 x_krpv_rec.attribute1 := l_db_krpv_rec.attribute1;
5844 END IF;
5845 IF (x_krpv_rec.attribute2 = OKC_API.G_MISS_CHAR)
5846 THEN
5847 x_krpv_rec.attribute2 := l_db_krpv_rec.attribute2;
5848 END IF;
5849 IF (x_krpv_rec.attribute3 = OKC_API.G_MISS_CHAR)
5850 THEN
5851 x_krpv_rec.attribute3 := l_db_krpv_rec.attribute3;
5852 END IF;
5853 IF (x_krpv_rec.attribute4 = OKC_API.G_MISS_CHAR)
5854 THEN
5855 x_krpv_rec.attribute4 := l_db_krpv_rec.attribute4;
5856 END IF;
5857 IF (x_krpv_rec.attribute5 = OKC_API.G_MISS_CHAR)
5858 THEN
5859 x_krpv_rec.attribute5 := l_db_krpv_rec.attribute5;
5860 END IF;
5861 IF (x_krpv_rec.attribute6 = OKC_API.G_MISS_CHAR)
5862 THEN
5863 x_krpv_rec.attribute6 := l_db_krpv_rec.attribute6;
5864 END IF;
5865 IF (x_krpv_rec.attribute7 = OKC_API.G_MISS_CHAR)
5866 THEN
5867 x_krpv_rec.attribute7 := l_db_krpv_rec.attribute7;
5868 END IF;
5869 IF (x_krpv_rec.attribute8 = OKC_API.G_MISS_CHAR)
5870 THEN
5871 x_krpv_rec.attribute8 := l_db_krpv_rec.attribute8;
5872 END IF;
5873 IF (x_krpv_rec.attribute9 = OKC_API.G_MISS_CHAR)
5874 THEN
5875 x_krpv_rec.attribute9 := l_db_krpv_rec.attribute9;
5876 END IF;
5877 IF (x_krpv_rec.attribute10 = OKC_API.G_MISS_CHAR)
5878 THEN
5879 x_krpv_rec.attribute10 := l_db_krpv_rec.attribute10;
5880 END IF;
5881 IF (x_krpv_rec.attribute11 = OKC_API.G_MISS_CHAR)
5882 THEN
5883 x_krpv_rec.attribute11 := l_db_krpv_rec.attribute11;
5884 END IF;
5885 IF (x_krpv_rec.attribute12 = OKC_API.G_MISS_CHAR)
5886 THEN
5887 x_krpv_rec.attribute12 := l_db_krpv_rec.attribute12;
5888 END IF;
5889 IF (x_krpv_rec.attribute13 = OKC_API.G_MISS_CHAR)
5890 THEN
5891 x_krpv_rec.attribute13 := l_db_krpv_rec.attribute13;
5892 END IF;
5893 IF (x_krpv_rec.attribute14 = OKC_API.G_MISS_CHAR)
5894 THEN
5895 x_krpv_rec.attribute14 := l_db_krpv_rec.attribute14;
5896 END IF;
5897 IF (x_krpv_rec.attribute15 = OKC_API.G_MISS_CHAR)
5898 THEN
5899 x_krpv_rec.attribute15 := l_db_krpv_rec.attribute15;
5900 END IF;
5901 IF (x_krpv_rec.created_by = OKC_API.G_MISS_NUM)
5902 THEN
5903 x_krpv_rec.created_by := l_db_krpv_rec.created_by;
5904 END IF;
5905 IF (x_krpv_rec.creation_date = OKC_API.G_MISS_DATE)
5906 THEN
5907 x_krpv_rec.creation_date := l_db_krpv_rec.creation_date;
5908 END IF;
5909 IF (x_krpv_rec.last_updated_by = OKC_API.G_MISS_NUM)
5910 THEN
5911 x_krpv_rec.last_updated_by := l_db_krpv_rec.last_updated_by;
5912 END IF;
5913 IF (x_krpv_rec.last_update_date = OKC_API.G_MISS_DATE)
5914 THEN
5915 x_krpv_rec.last_update_date := l_db_krpv_rec.last_update_date;
5916 END IF;
5917 IF (x_krpv_rec.last_update_login = OKC_API.G_MISS_NUM)
5918 THEN
5919 x_krpv_rec.last_update_login := l_db_krpv_rec.last_update_login;
5920 END IF;
5921 IF (x_krpv_rec.catchup_frequency_code = OKC_API.G_MISS_CHAR)
5922 THEN
5923 x_krpv_rec.catchup_frequency_code := l_db_krpv_rec.catchup_frequency_code;
5924 END IF;
5925 END IF;
5926 RETURN(l_return_status);
5927 END populate_new_record;
5928 --------------------------------------------
5929 -- Set_Attributes for:OKL_K_RATE_PARAMS_V --
5930 --------------------------------------------
5931 FUNCTION Set_Attributes (
5932 p_krpv_rec IN krpv_rec_type,
5933 x_krpv_rec OUT NOCOPY krpv_rec_type
5934 ) RETURN VARCHAR2 IS
5935 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5936 BEGIN
5937 x_krpv_rec := p_krpv_rec;
5938 RETURN(l_return_status);
5939 END Set_Attributes;
5940 BEGIN
5941 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5942 G_PKG_NAME,
5943 p_init_msg_list,
5944 l_api_version,
5945 p_api_version,
5946 '_PVT',
5947 x_return_status);
5948 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5949 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5950 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5951 RAISE OKC_API.G_EXCEPTION_ERROR;
5952 END IF;
5953 --- Setting item attributes
5954 l_return_status := Set_Attributes(
5955 p_krpv_rec, -- IN
5956 x_krpv_rec); -- OUT
5957 --- If any errors happen abort API
5958 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5959 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5960 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5961 RAISE OKC_API.G_EXCEPTION_ERROR;
5962 END IF;
5963 l_return_status := populate_new_record(l_krpv_rec, l_def_krpv_rec);
5964 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5965 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5966 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5967 RAISE OKC_API.G_EXCEPTION_ERROR;
5968 END IF;
5969 l_def_krpv_rec := fill_who_columns(l_def_krpv_rec);
5970 --- Validate all non-missing attributes (Item Level Validation)
5971 l_return_status := Validate_Attributes(l_def_krpv_rec);
5972 --- If any errors happen abort API
5973 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5974 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5975 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5976 RAISE OKC_API.G_EXCEPTION_ERROR;
5977 END IF;
5978 l_return_status := Validate_Record(l_def_krpv_rec, l_db_krpv_rec);
5979 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5980 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5981 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5982 RAISE OKC_API.G_EXCEPTION_ERROR;
5983 END IF;
5984 /****Commented**********
5985 --avsingh
5986 -- Lock the Record
5987 lock_row(
5988 p_api_version => p_api_version,
5989 p_init_msg_list => p_init_msg_list,
5990 x_return_status => l_return_status,
5991 x_msg_count => x_msg_count,
5992 x_msg_data => x_msg_data,
5993 p_krpv_rec => p_krpv_rec);
5994 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5995 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5996 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5997 RAISE OKC_API.G_EXCEPTION_ERROR;
5998 END IF;
5999 **************************/
6000 -----------------------------------------
6001 -- Move VIEW record to "Child" records --
6002 -----------------------------------------
6003 migrate(l_def_krpv_rec, l_krp_rec);
6004 -----------------------------------------------
6005 -- Call the UPDATE_ROW for each child record --
6006 -----------------------------------------------
6007 update_row(
6008 p_init_msg_list,
6009 l_return_status,
6010 x_msg_count,
6011 x_msg_data,
6012 l_krp_rec,
6013 lx_krp_rec
6014 );
6015 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6016 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6017 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6018 RAISE OKC_API.G_EXCEPTION_ERROR;
6019 END IF;
6020 migrate(lx_krp_rec, l_def_krpv_rec);
6021 x_krpv_rec := l_def_krpv_rec;
6022 x_return_status := l_return_status;
6023 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6024 EXCEPTION
6025 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6026 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6027 (
6028 l_api_name,
6029 G_PKG_NAME,
6030 'OKC_API.G_RET_STS_ERROR',
6031 x_msg_count,
6032 x_msg_data,
6033 '_PVT'
6034 );
6035 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6036 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6037 (
6038 l_api_name,
6039 G_PKG_NAME,
6040 'OKC_API.G_RET_STS_UNEXP_ERROR',
6041 x_msg_count,
6042 x_msg_data,
6043 '_PVT'
6044 );
6045 WHEN OTHERS THEN
6046 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6047 (
6048 l_api_name,
6049 G_PKG_NAME,
6050 'OTHERS',
6051 x_msg_count,
6052 x_msg_data,
6053 '_PVT'
6054 );
6055 END update_row;
6056 ----------------------------------------
6057 -- PL/SQL TBL update_row for:krpv_tbl --
6058 ----------------------------------------
6059 PROCEDURE update_row(
6060 p_api_version IN NUMBER,
6061 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6062 x_return_status OUT NOCOPY VARCHAR2,
6063 x_msg_count OUT NOCOPY NUMBER,
6064 x_msg_data OUT NOCOPY VARCHAR2,
6065 p_krpv_tbl IN krpv_tbl_type,
6066 x_krpv_tbl OUT NOCOPY krpv_tbl_type,
6067 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
6068
6069 l_api_version CONSTANT NUMBER := 1;
6070 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
6071 i NUMBER := 0;
6072 BEGIN
6073 OKC_API.init_msg_list(p_init_msg_list);
6074 -- Make sure PL/SQL table has records in it before passing
6075 IF (p_krpv_tbl.COUNT > 0) THEN
6076 i := p_krpv_tbl.FIRST;
6077 LOOP
6078 DECLARE
6079 l_error_rec OKC_API.ERROR_REC_TYPE;
6080 BEGIN
6081 l_error_rec.api_name := l_api_name;
6082 l_error_rec.api_package := G_PKG_NAME;
6083 l_error_rec.idx := i;
6084 update_row (
6085 p_api_version => p_api_version,
6086 p_init_msg_list => OKC_API.G_FALSE,
6087 x_return_status => l_error_rec.error_type,
6088 x_msg_count => l_error_rec.msg_count,
6089 x_msg_data => l_error_rec.msg_data,
6090 p_krpv_rec => p_krpv_tbl(i),
6091 x_krpv_rec => x_krpv_tbl(i));
6092 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
6093 l_error_rec.sqlcode := SQLCODE;
6094 load_error_tbl(l_error_rec, px_error_tbl);
6095 ELSE
6096 x_msg_count := l_error_rec.msg_count;
6097 x_msg_data := l_error_rec.msg_data;
6098 END IF;
6099 EXCEPTION
6100 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6101 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
6102 l_error_rec.sqlcode := SQLCODE;
6103 load_error_tbl(l_error_rec, px_error_tbl);
6104 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6105 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
6106 l_error_rec.sqlcode := SQLCODE;
6107 load_error_tbl(l_error_rec, px_error_tbl);
6108 WHEN OTHERS THEN
6109 l_error_rec.error_type := 'OTHERS';
6110 l_error_rec.sqlcode := SQLCODE;
6111 load_error_tbl(l_error_rec, px_error_tbl);
6112 END;
6113 EXIT WHEN (i = p_krpv_tbl.LAST);
6114 i := p_krpv_tbl.NEXT(i);
6115 END LOOP;
6116 END IF;
6117 -- Loop through the error_tbl to find the error with the highest severity
6118 -- and return it.
6119 x_return_status := find_highest_exception(px_error_tbl);
6120 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6121 EXCEPTION
6122 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6123 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6124 (
6125 l_api_name,
6126 G_PKG_NAME,
6127 'OKC_API.G_RET_STS_ERROR',
6128 x_msg_count,
6129 x_msg_data,
6130 '_PVT'
6131 );
6132 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6133 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6134 (
6135 l_api_name,
6136 G_PKG_NAME,
6137 'OKC_API.G_RET_STS_UNEXP_ERROR',
6138 x_msg_count,
6139 x_msg_data,
6140 '_PVT'
6141 );
6142 WHEN OTHERS THEN
6143 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6144 (
6145 l_api_name,
6146 G_PKG_NAME,
6147 'OTHERS',
6148 x_msg_count,
6149 x_msg_data,
6150 '_PVT'
6151 );
6152 END update_row;
6153
6154 ----------------------------------------
6155 -- PL/SQL TBL update_row for:KRPV_TBL --
6156 ----------------------------------------
6157 PROCEDURE update_row(
6158 p_api_version IN NUMBER,
6159 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6160 x_return_status OUT NOCOPY VARCHAR2,
6161 x_msg_count OUT NOCOPY NUMBER,
6162 x_msg_data OUT NOCOPY VARCHAR2,
6163 p_krpv_tbl IN krpv_tbl_type,
6164 x_krpv_tbl OUT NOCOPY krpv_tbl_type) IS
6165
6166 l_api_version CONSTANT NUMBER := 1;
6167 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
6168 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6169 l_error_tbl OKC_API.ERROR_TBL_TYPE;
6170 BEGIN
6171 OKC_API.init_msg_list(p_init_msg_list);
6172 -- Make sure PL/SQL table has records in it before passing
6173 IF (p_krpv_tbl.COUNT > 0) THEN
6174 update_row (
6175 p_api_version => p_api_version,
6176 p_init_msg_list => OKC_API.G_FALSE,
6177 x_return_status => x_return_status,
6178 x_msg_count => x_msg_count,
6179 x_msg_data => x_msg_data,
6180 p_krpv_tbl => p_krpv_tbl,
6181 x_krpv_tbl => x_krpv_tbl,
6182 px_error_tbl => l_error_tbl);
6183 END IF;
6184 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6185 EXCEPTION
6186 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6187 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6188 (
6189 l_api_name,
6190 G_PKG_NAME,
6191 'OKC_API.G_RET_STS_ERROR',
6192 x_msg_count,
6193 x_msg_data,
6194 '_PVT'
6195 );
6196 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6197 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6198 (
6199 l_api_name,
6200 G_PKG_NAME,
6201 'OKC_API.G_RET_STS_UNEXP_ERROR',
6202 x_msg_count,
6203 x_msg_data,
6204 '_PVT'
6205 );
6206 WHEN OTHERS THEN
6207 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6208 (
6209 l_api_name,
6210 G_PKG_NAME,
6211 'OTHERS',
6212 x_msg_count,
6213 x_msg_data,
6214 '_PVT'
6215 );
6216 END update_row;
6217
6218 ---------------------------------------------------------------------------
6219 -- PROCEDURE delete_row
6220 ---------------------------------------------------------------------------
6221 --------------------------------------
6222 -- delete_row for:OKL_K_RATE_PARAMS --
6223 --------------------------------------
6224 PROCEDURE delete_row(
6225 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6226 x_return_status OUT NOCOPY VARCHAR2,
6227 x_msg_count OUT NOCOPY NUMBER,
6228 x_msg_data OUT NOCOPY VARCHAR2,
6229 p_krp_rec IN krp_rec_type) IS
6230
6231 l_api_version CONSTANT NUMBER := 1;
6232 l_api_name CONSTANT VARCHAR2(30) := 'B_delete_row';
6233 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6234 l_krp_rec krp_rec_type := p_krp_rec;
6235 l_row_notfound BOOLEAN := TRUE;
6236 BEGIN
6237 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6238 p_init_msg_list,
6239 '_PVT',
6240 x_return_status);
6241 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6242 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6243 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6244 RAISE OKC_API.G_EXCEPTION_ERROR;
6245 END IF;
6246
6247 DELETE FROM OKL_K_RATE_PARAMS
6248 WHERE PARAMETER_TYPE_CODE = p_krp_rec.parameter_type_code
6249 AND EFFECTIVE_FROM_DATE = p_krp_rec.effective_from_date
6250 AND KHR_ID = p_krp_rec.khr_id;
6251
6252 x_return_status := l_return_status;
6253 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6254 EXCEPTION
6255 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6256 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6257 (
6258 l_api_name,
6259 G_PKG_NAME,
6260 'OKC_API.G_RET_STS_ERROR',
6261 x_msg_count,
6262 x_msg_data,
6263 '_PVT'
6264 );
6265 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6266 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6267 (
6268 l_api_name,
6269 G_PKG_NAME,
6270 'OKC_API.G_RET_STS_UNEXP_ERROR',
6271 x_msg_count,
6272 x_msg_data,
6273 '_PVT'
6274 );
6275 WHEN OTHERS THEN
6276 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6277 (
6278 l_api_name,
6279 G_PKG_NAME,
6280 'OTHERS',
6281 x_msg_count,
6282 x_msg_data,
6283 '_PVT'
6284 );
6285 END delete_row;
6286 ----------------------------------------
6287 -- delete_row for:OKL_K_RATE_PARAMS_V --
6288 ----------------------------------------
6289 PROCEDURE delete_row(
6290 p_api_version IN NUMBER,
6291 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6292 x_return_status OUT NOCOPY VARCHAR2,
6293 x_msg_count OUT NOCOPY NUMBER,
6294 x_msg_data OUT NOCOPY VARCHAR2,
6295 p_krpv_rec IN krpv_rec_type) IS
6296
6297 l_api_version CONSTANT NUMBER := 1;
6298 l_api_name CONSTANT VARCHAR2(30) := 'V_delete_row';
6299 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6300 l_krpv_rec krpv_rec_type := p_krpv_rec;
6301 l_krp_rec krp_rec_type;
6302 BEGIN
6303 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6304 G_PKG_NAME,
6305 p_init_msg_list,
6306 l_api_version,
6307 p_api_version,
6308 '_PVT',
6309 x_return_status);
6310 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6311 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6312 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6313 RAISE OKC_API.G_EXCEPTION_ERROR;
6314 END IF;
6315 -----------------------------------------
6316 -- Move VIEW record to "Child" records --
6317 -----------------------------------------
6318 migrate(l_krpv_rec, l_krp_rec);
6319 -----------------------------------------------
6320 -- Call the DELETE_ROW for each child record --
6321 -----------------------------------------------
6322 delete_row(
6323 p_init_msg_list,
6324 l_return_status,
6325 x_msg_count,
6326 x_msg_data,
6327 l_krp_rec
6328 );
6329 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6330 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6331 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6332 RAISE OKC_API.G_EXCEPTION_ERROR;
6333 END IF;
6334 x_return_status := l_return_status;
6335 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6336 EXCEPTION
6337 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6338 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6339 (
6340 l_api_name,
6341 G_PKG_NAME,
6342 'OKC_API.G_RET_STS_ERROR',
6343 x_msg_count,
6344 x_msg_data,
6345 '_PVT'
6346 );
6347 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6348 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6349 (
6350 l_api_name,
6351 G_PKG_NAME,
6352 'OKC_API.G_RET_STS_UNEXP_ERROR',
6353 x_msg_count,
6354 x_msg_data,
6355 '_PVT'
6356 );
6357 WHEN OTHERS THEN
6358 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6359 (
6360 l_api_name,
6361 G_PKG_NAME,
6362 'OTHERS',
6363 x_msg_count,
6364 x_msg_data,
6365 '_PVT'
6366 );
6367 END delete_row;
6368 ---------------------------------------------------
6369 -- PL/SQL TBL delete_row for:OKL_K_RATE_PARAMS_V --
6370 ---------------------------------------------------
6371 PROCEDURE delete_row(
6372 p_api_version IN NUMBER,
6373 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6374 x_return_status OUT NOCOPY VARCHAR2,
6375 x_msg_count OUT NOCOPY NUMBER,
6376 x_msg_data OUT NOCOPY VARCHAR2,
6377 p_krpv_tbl IN krpv_tbl_type,
6378 px_error_tbl IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
6379
6380 l_api_version CONSTANT NUMBER := 1;
6381 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
6382 i NUMBER := 0;
6383 BEGIN
6384 OKC_API.init_msg_list(p_init_msg_list);
6385 -- Make sure PL/SQL table has records in it before passing
6386 IF (p_krpv_tbl.COUNT > 0) THEN
6387 i := p_krpv_tbl.FIRST;
6388 LOOP
6389 DECLARE
6390 l_error_rec OKC_API.ERROR_REC_TYPE;
6391 BEGIN
6392 l_error_rec.api_name := l_api_name;
6393 l_error_rec.api_package := G_PKG_NAME;
6394 l_error_rec.idx := i;
6395 delete_row (
6396 p_api_version => p_api_version,
6397 p_init_msg_list => OKC_API.G_FALSE,
6398 x_return_status => l_error_rec.error_type,
6399 x_msg_count => l_error_rec.msg_count,
6400 x_msg_data => l_error_rec.msg_data,
6401 p_krpv_rec => p_krpv_tbl(i));
6402 IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
6403 l_error_rec.sqlcode := SQLCODE;
6404 load_error_tbl(l_error_rec, px_error_tbl);
6405 ELSE
6406 x_msg_count := l_error_rec.msg_count;
6407 x_msg_data := l_error_rec.msg_data;
6408 END IF;
6409 EXCEPTION
6410 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6411 l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
6412 l_error_rec.sqlcode := SQLCODE;
6413 load_error_tbl(l_error_rec, px_error_tbl);
6414 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6415 l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
6416 l_error_rec.sqlcode := SQLCODE;
6417 load_error_tbl(l_error_rec, px_error_tbl);
6418 WHEN OTHERS THEN
6419 l_error_rec.error_type := 'OTHERS';
6420 l_error_rec.sqlcode := SQLCODE;
6421 load_error_tbl(l_error_rec, px_error_tbl);
6422 END;
6423 EXIT WHEN (i = p_krpv_tbl.LAST);
6424 i := p_krpv_tbl.NEXT(i);
6425 END LOOP;
6426 END IF;
6427 -- Loop through the error_tbl to find the error with the highest severity
6428 -- and return it.
6429 x_return_status := find_highest_exception(px_error_tbl);
6430 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6431 EXCEPTION
6432 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6433 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6434 (
6435 l_api_name,
6436 G_PKG_NAME,
6437 'OKC_API.G_RET_STS_ERROR',
6438 x_msg_count,
6439 x_msg_data,
6440 '_PVT'
6441 );
6442 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6443 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6444 (
6445 l_api_name,
6446 G_PKG_NAME,
6447 'OKC_API.G_RET_STS_UNEXP_ERROR',
6448 x_msg_count,
6449 x_msg_data,
6450 '_PVT'
6451 );
6452 WHEN OTHERS THEN
6453 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6454 (
6455 l_api_name,
6456 G_PKG_NAME,
6457 'OTHERS',
6458 x_msg_count,
6459 x_msg_data,
6460 '_PVT'
6461 );
6462 END delete_row;
6463
6464 ---------------------------------------------------
6465 -- PL/SQL TBL delete_row for:OKL_K_RATE_PARAMS_V --
6466 ---------------------------------------------------
6467 PROCEDURE delete_row(
6468 p_api_version IN NUMBER,
6469 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6470 x_return_status OUT NOCOPY VARCHAR2,
6471 x_msg_count OUT NOCOPY NUMBER,
6472 x_msg_data OUT NOCOPY VARCHAR2,
6473 p_krpv_tbl IN krpv_tbl_type) IS
6474
6475 l_api_version CONSTANT NUMBER := 1;
6476 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
6477 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6478 l_error_tbl OKC_API.ERROR_TBL_TYPE;
6479 BEGIN
6480 OKC_API.init_msg_list(p_init_msg_list);
6481 -- Make sure PL/SQL table has records in it before passing
6482 IF (p_krpv_tbl.COUNT > 0) THEN
6483 delete_row (
6484 p_api_version => p_api_version,
6485 p_init_msg_list => OKC_API.G_FALSE,
6486 x_return_status => x_return_status,
6487 x_msg_count => x_msg_count,
6488 x_msg_data => x_msg_data,
6489 p_krpv_tbl => p_krpv_tbl,
6490 px_error_tbl => l_error_tbl);
6491 END IF;
6492 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6493 EXCEPTION
6494 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6495 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6496 (
6497 l_api_name,
6498 G_PKG_NAME,
6499 'OKC_API.G_RET_STS_ERROR',
6500 x_msg_count,
6501 x_msg_data,
6502 '_PVT'
6503 );
6504 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6505 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6506 (
6507 l_api_name,
6508 G_PKG_NAME,
6509 'OKC_API.G_RET_STS_UNEXP_ERROR',
6510 x_msg_count,
6511 x_msg_data,
6512 '_PVT'
6513 );
6514 WHEN OTHERS THEN
6515 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6516 (
6517 l_api_name,
6518 G_PKG_NAME,
6519 'OTHERS',
6520 x_msg_count,
6521 x_msg_data,
6522 '_PVT'
6523 );
6524 END delete_row;
6525
6526 END OKL_KRP_PVT;