DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_KRP_PVT

Source


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