DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TRQ_PVT

Source


1 PACKAGE BODY OKL_TRQ_PVT AS
2 /* $Header: OKLSTRQB.pls 120.7 2007/03/14 12:25:35 dkagrawa noship $ */
3 
4  --Hand coded
5   G_STATUS_LOOKUP_TYPE            CONSTANT VARCHAR2(200)  := 'OKL_REQUEST_STATUS';
6   G_NO_MATCHING_RECORD         	  CONSTANT VARCHAR2(200)  := 'OKL_LLA_NO_MATCHING_RECORD';
7   G_APPLY_TO_CODE_LOOKUP_TYPE     CONSTANT VARCHAR2(200)  := 'UNKNOWN';
8   G_ADJ_FREQ_CODE_LOOKUP_TYPE     CONSTANT VARCHAR2(200)  := 'OKL_ADJ_FREQUENCY';
9   G_VAR_METHOD_CODE_LOOKUP_TYPE   CONSTANT VARCHAR2(200)  := 'OKL_VARIABLE_METHOD';
10   G_INT_METHOD_CODE_LOOKUP_TYPE   CONSTANT VARCHAR2(200)  := 'OKL_VAR_INTCALC';
11   G_CALC_METHOD_CODE_LOOKUP_TYPE  CONSTANT VARCHAR2(200)  := 'OKL_CALC_METHOD';
12   G_PAY_FREQ_CODE_LOOKUP_TYPE     CONSTANT VARCHAR2(200)  := 'UNKNOWN';
13 
14 
15 
16 
17 
18 --End Hand coding
19 
20   ---------------------------------------------------------------------------
21   -- PROCEDURE load_error_tbl
22   ---------------------------------------------------------------------------
23   PROCEDURE load_error_tbl (
24     px_error_rec                   IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
25     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
26 
27     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
28     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
29     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
30   BEGIN
31     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
32     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
33     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
34     -- automatically increments the index by 1, (making it 2), however, when the GET function
35     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
36     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
37     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
38     -- will only update the index variable when 1 and only 1 message is on the stack.
39     IF (last_msg_idx = 1) THEN
40       l_msg_idx := FND_MSG_PUB.G_FIRST;
41     END IF;
42     LOOP
43       fnd_msg_pub.get(
44             p_msg_index     => l_msg_idx,
45             p_encoded       => fnd_api.g_false,
46             p_data          => px_error_rec.msg_data,
47             p_msg_index_out => px_error_rec.msg_count);
48       px_error_tbl(j) := px_error_rec;
49       j := j + 1;
50     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
51     END LOOP;
52   END load_error_tbl;
53   ---------------------------------------------------------------------------
54   -- FUNCTION find_highest_exception
55   ---------------------------------------------------------------------------
56   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
57   -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
58   FUNCTION find_highest_exception(
59     p_error_tbl                    IN OKL_API.ERROR_TBL_TYPE
60   ) RETURN VARCHAR2 IS
61     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
62     i                              INTEGER := 1;
63   BEGIN
64     IF (p_error_tbl.COUNT > 0) THEN
65       i := p_error_tbl.FIRST;
66       LOOP
67         IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
68           IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
69             l_return_status := p_error_tbl(i).error_type;
70           END IF;
71         END IF;
72         EXIT WHEN (i = p_error_tbl.LAST);
73         i := p_error_tbl.NEXT(i);
74       END LOOP;
75     END IF;
76     RETURN(l_return_status);
77   END find_highest_exception;
78   ---------------------------------------------------------------------------
79   -- FUNCTION get_seq_id
80   ---------------------------------------------------------------------------
81   FUNCTION get_seq_id RETURN NUMBER IS
82   BEGIN
83     RETURN(okc_p_util.raw_to_number(sys_guid()));
84   END get_seq_id;
85 
86   ---------------------------------------------------------------------------
87   -- PROCEDURE qc
88   ---------------------------------------------------------------------------
89   PROCEDURE qc IS
90   BEGIN
91     null;
92   END qc;
93 
94   ---------------------------------------------------------------------------
95   -- PROCEDURE change_version
96   ---------------------------------------------------------------------------
97   PROCEDURE change_version IS
98   BEGIN
99     null;
100   END change_version;
101 
102   ---------------------------------------------------------------------------
103   -- PROCEDURE api_copy
104   ---------------------------------------------------------------------------
105   PROCEDURE api_copy IS
106   BEGIN
107     null;
108   END api_copy;
109 
110   ---------------------------------------------------------------------------
111   -- FUNCTION get_rec for: OKL_TRX_REQUESTS_V
112   ---------------------------------------------------------------------------
113   FUNCTION get_rec (
114     p_trqv_rec                     IN trqv_rec_type,
115     x_no_data_found                OUT NOCOPY BOOLEAN
116   ) RETURN trqv_rec_type IS
117     CURSOR okl_trqv_pk_csr (p_id IN NUMBER) IS
118     SELECT
119             ID,
120             OBJECT1_ID1,
121             OBJECT1_ID2,
122             JTOT_OBJECT1_CODE,
123             DNZ_KHR_ID,
124             REQUEST_TYPE_CODE,
125             APPLY_TO_CODE,
126             START_DATE,
127             END_DATE,
128             TERM_DURATION,
129             AMOUNT,
130             CURRENCY_CODE,
131             SUBSIDY_YN,
132             CASH_APPLIED_YN,
133             OBJECT_VERSION_NUMBER,
134             ATTRIBUTE_CATEGORY,
135             ATTRIBUTE1,
136             ATTRIBUTE2,
137             ATTRIBUTE3,
138             ATTRIBUTE4,
139             ATTRIBUTE5,
140             ATTRIBUTE6,
141             ATTRIBUTE7,
142             ATTRIBUTE8,
143             ATTRIBUTE9,
144             ATTRIBUTE10,
145             ATTRIBUTE11,
146             ATTRIBUTE12,
147             ATTRIBUTE13,
148             ATTRIBUTE14,
149             ATTRIBUTE15,
150             ORG_ID,
151             REQUEST_ID,
152             PROGRAM_APPLICATION_ID,
153             PROGRAM_ID,
154             PROGRAM_UPDATE_DATE,
155             CREATED_BY,
156             CREATION_DATE,
157             LAST_UPDATED_BY,
158             LAST_UPDATE_DATE,
159             LAST_UPDATE_LOGIN,
160             MINIMUM_RATE,
161             MAXIMUM_RATE,
162             TOLERANCE,
163             ADJUSTMENT_FREQUENCY_CODE,
164             BASE_RATE,
165             INDEX_NAME,
166             VARIABLE_METHOD_CODE,
167             ADDER,
168             DAYS_IN_YEAR,
169             DAYS_IN_MONTH,
170             INTEREST_METHOD_CODE,
171             INTEREST_START_DATE,
172             METHOD_OF_CALCULATION_CODE,
173             REQUEST_NUMBER,
174             DATE_OF_CONVERSION,
175             VARIABLE_RATE_YN,
176             REQUEST_STATUS_CODE,
177             YIELD,
178             RESIDUAL,
179             COMMENTS,
180             PAYMENT_FREQUENCY_CODE,
181             RESTRUCTURE_DATE,
182             PAST_DUE_YN,
183             REQUEST_REASON_CODE,
184             PARENT_KHR_ID,
185             YIELD_TYPE,
186             PAYMENT_AMOUNT,
187             PAYMENT_DATE,
188 	    PAYDOWN_TYPE,
189 	    CURRENCY_CONVERSION_TYPE,
190 	    CURRENCY_CONVERSION_RATE,
191 	    CURRENCY_CONVERSION_DATE,
192 	    LSM_ID,
193 	    RECEIPT_ID,
194 	    TCN_ID,
195             TRY_ID,
196 	    CUR_PRINCIPAL_BALANCE, --BUG#5083582
197 	    CUR_ACCUM_INTEREST, --BUG#5083582
198 	    LEGAL_ENTITY_ID
199       FROM OKL_TRX_REQUESTS
200      WHERE OKL_TRX_REQUESTS.id = p_id;
201     l_okl_trqv_pk                  okl_trqv_pk_csr%ROWTYPE;
202     l_trqv_rec                     trqv_rec_type;
203   BEGIN
204     x_no_data_found := TRUE;
205     -- Get current database values
206     OPEN okl_trqv_pk_csr (p_trqv_rec.id);
207     FETCH okl_trqv_pk_csr INTO
208               l_trqv_rec.id,
209               l_trqv_rec.object1_id1,
210               l_trqv_rec.object1_id2,
211               l_trqv_rec.jtot_object1_code,
212               l_trqv_rec.dnz_khr_id,
213               l_trqv_rec.request_type_code,
214               l_trqv_rec.apply_to_code,
215               l_trqv_rec.start_date,
216               l_trqv_rec.end_date,
217               l_trqv_rec.term_duration,
218               l_trqv_rec.AMOUNT,
219               l_trqv_rec.currency_code,
220               l_trqv_rec.subsidy_yn,
221               l_trqv_rec.cash_applied_yn,
222               l_trqv_rec.object_version_number,
223               l_trqv_rec.attribute_category,
224               l_trqv_rec.attribute1,
225               l_trqv_rec.attribute2,
226               l_trqv_rec.attribute3,
227               l_trqv_rec.attribute4,
228               l_trqv_rec.attribute5,
229               l_trqv_rec.attribute6,
230               l_trqv_rec.attribute7,
231               l_trqv_rec.attribute8,
232               l_trqv_rec.attribute9,
233               l_trqv_rec.attribute10,
234               l_trqv_rec.attribute11,
235               l_trqv_rec.attribute12,
236               l_trqv_rec.attribute13,
237               l_trqv_rec.attribute14,
238               l_trqv_rec.attribute15,
239               l_trqv_rec.org_id,
240               l_trqv_rec.request_id,
241               l_trqv_rec.program_application_id,
242               l_trqv_rec.program_id,
243               l_trqv_rec.program_update_date,
244               l_trqv_rec.created_by,
245               l_trqv_rec.creation_date,
246               l_trqv_rec.last_updated_by,
247               l_trqv_rec.last_update_date,
248               l_trqv_rec.last_update_login,
249               l_trqv_rec.minimum_rate,
250               l_trqv_rec.maximum_rate,
251               l_trqv_rec.tolerance,
252               l_trqv_rec.adjustment_frequency_code,
253               l_trqv_rec.base_rate,
254               l_trqv_rec.index_name,
255               l_trqv_rec.variable_method_code,
256               l_trqv_rec.adder,
257               l_trqv_rec.days_in_year,
258               l_trqv_rec.days_in_month,
259               l_trqv_rec.interest_method_code,
260               l_trqv_rec.interest_start_date,
261               l_trqv_rec.method_of_calculation_code,
262               l_trqv_rec.request_number,
263               l_trqv_rec.date_of_conversion,
264               l_trqv_rec.variable_rate_yn,
265               l_trqv_rec.request_status_code,
266               l_trqv_rec.yield,
267               l_trqv_rec.residual,
268               l_trqv_rec.comments,
269               l_trqv_rec.payment_frequency_code,
270               l_trqv_rec.restructure_date,
271               l_trqv_rec.past_due_yn,
272               l_trqv_rec.request_reason_code,
273               l_trqv_rec.parent_khr_id,
274               l_trqv_rec.yield_type,
275               l_trqv_rec.payment_amount,
276               l_trqv_rec.payment_date,
277               l_trqv_rec.paydown_type,
278               l_trqv_rec.currency_conversion_type,
279               l_trqv_rec.currency_conversion_rate,
280               l_trqv_rec.currency_conversion_date,
281               l_trqv_rec.lsm_id,
282               l_trqv_rec.receipt_id,
283               l_trqv_rec.tcn_id,
284               l_trqv_rec.try_id,
285 	      l_trqv_rec.CUR_PRINCIPAL_BALANCE, ----BUG#5083582
286 	      l_trqv_rec.CUR_ACCUM_INTEREST, --BUG#5083582
287               l_trqv_rec.legal_entity_id;
288     x_no_data_found := okl_trqv_pk_csr%NOTFOUND;
289     CLOSE okl_trqv_pk_csr;
290     RETURN(l_trqv_rec);
291   END get_rec;
292 
293   ------------------------------------------------------------------
294   -- This version of get_rec sets error messages if no data found --
295   ------------------------------------------------------------------
296   FUNCTION get_rec (
297     p_trqv_rec                     IN trqv_rec_type,
298     x_return_status                OUT NOCOPY VARCHAR2
299   ) RETURN trqv_rec_type IS
300     l_trqv_rec                     trqv_rec_type;
301     l_row_notfound                 BOOLEAN := TRUE;
302   BEGIN
303     x_return_status := OKL_API.G_RET_STS_SUCCESS;
304     l_trqv_rec := get_rec(p_trqv_rec, l_row_notfound);
305     IF (l_row_notfound) THEN
306       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
307       x_return_status := OKL_API.G_RET_STS_ERROR;
308     END IF;
309     RETURN(l_trqv_rec);
310   END get_rec;
311   -----------------------------------------------------------
312   -- So we don't have to pass an "l_row_notfound" variable --
313   -----------------------------------------------------------
314   FUNCTION get_rec (
315     p_trqv_rec                     IN trqv_rec_type
316   ) RETURN trqv_rec_type IS
317     l_row_not_found                BOOLEAN := TRUE;
318   BEGIN
319     RETURN(get_rec(p_trqv_rec, l_row_not_found));
320   END get_rec;
321   ---------------------------------------------------------------------------
322   -- FUNCTION get_rec for: OKL_TRX_REQUESTS
323   ---------------------------------------------------------------------------
324   FUNCTION get_rec (
325     p_trq_rec                      IN trq_rec_type,
326     x_no_data_found                OUT NOCOPY BOOLEAN
327   ) RETURN trq_rec_type IS
328     CURSOR okl_trq_pk_csr (p_id IN NUMBER) IS
329     SELECT
330             ID,
331             OBJECT1_ID1,
332             OBJECT1_ID2,
333             JTOT_OBJECT1_CODE,
334             DNZ_KHR_ID,
335             REQUEST_TYPE_CODE,
336             APPLY_TO_CODE,
337             START_DATE,
338             END_DATE,
339             TERM_DURATION,
340             AMOUNT,
341             CURRENCY_CODE,
342             SUBSIDY_YN,
343             CASH_APPLIED_YN,
344             OBJECT_VERSION_NUMBER,
345             ATTRIBUTE_CATEGORY,
346             ATTRIBUTE1,
347             ATTRIBUTE2,
348             ATTRIBUTE3,
349             ATTRIBUTE4,
350             ATTRIBUTE5,
351             ATTRIBUTE6,
352             ATTRIBUTE7,
353             ATTRIBUTE8,
354             ATTRIBUTE9,
355             ATTRIBUTE10,
356             ATTRIBUTE11,
357             ATTRIBUTE12,
358             ATTRIBUTE13,
359             ATTRIBUTE14,
360             ATTRIBUTE15,
361             ORG_ID,
362             REQUEST_ID,
363             PROGRAM_APPLICATION_ID,
364             PROGRAM_ID,
365             PROGRAM_UPDATE_DATE,
366             CREATED_BY,
367             CREATION_DATE,
368             LAST_UPDATED_BY,
369             LAST_UPDATE_DATE,
370             LAST_UPDATE_LOGIN,
371             MINIMUM_RATE,
372             MAXIMUM_RATE,
373             TOLERANCE,
374             ADJUSTMENT_FREQUENCY_CODE,
375             BASE_RATE,
376             INDEX_NAME,
377             VARIABLE_METHOD_CODE,
378             ADDER,
379             DAYS_IN_YEAR,
380             DAYS_IN_MONTH,
381             INTEREST_METHOD_CODE,
382             INTEREST_START_DATE,
383             METHOD_OF_CALCULATION_CODE,
384             REQUEST_NUMBER,
385             DATE_OF_CONVERSION,
386             VARIABLE_RATE_YN,
387             REQUEST_STATUS_CODE,
388             YIELD,
389             RESIDUAL,
390             COMMENTS,
391             PAYMENT_FREQUENCY_CODE,
392             RESTRUCTURE_DATE,
393             PAST_DUE_YN,
394             REQUEST_REASON_CODE,
395             PARENT_KHR_ID,
396             YIELD_TYPE,
397             PAYMENT_AMOUNT,
398             PAYMENT_DATE,
399 	    PAYDOWN_TYPE,
400             CURRENCY_CONVERSION_TYPE,
401             CURRENCY_CONVERSION_RATE,
402             CURRENCY_CONVERSION_DATE,
403 	    LSM_ID,
404             RECEIPT_ID,
405             TCN_ID,
406             TRY_ID,
407 	    LEGAL_ENTITY_ID
408       FROM Okl_Trx_Requests
409      WHERE okl_trx_requests.id  = p_id;
410     l_okl_trq_pk                   okl_trq_pk_csr%ROWTYPE;
411     l_trq_rec                      trq_rec_type;
412   BEGIN
413     x_no_data_found := TRUE;
414     -- Get current database values
415     OPEN okl_trq_pk_csr (p_trq_rec.id);
416     FETCH okl_trq_pk_csr INTO
417               l_trq_rec.id,
418               l_trq_rec.object1_id1,
419               l_trq_rec.object1_id2,
420               l_trq_rec.jtot_object1_code,
421               l_trq_rec.dnz_khr_id,
422               l_trq_rec.request_type_code,
423               l_trq_rec.apply_to_code,
424               l_trq_rec.start_date,
425               l_trq_rec.end_date,
426               l_trq_rec.term_duration,
427               l_trq_rec.AMOUNT,
428               l_trq_rec.currency_code,
429               l_trq_rec.subsidy_yn,
430               l_trq_rec.cash_applied_yn,
431               l_trq_rec.object_version_number,
432               l_trq_rec.attribute_category,
433               l_trq_rec.attribute1,
434               l_trq_rec.attribute2,
435               l_trq_rec.attribute3,
436               l_trq_rec.attribute4,
437               l_trq_rec.attribute5,
438               l_trq_rec.attribute6,
439               l_trq_rec.attribute7,
440               l_trq_rec.attribute8,
441               l_trq_rec.attribute9,
442               l_trq_rec.attribute10,
443               l_trq_rec.attribute11,
444               l_trq_rec.attribute12,
445               l_trq_rec.attribute13,
446               l_trq_rec.attribute14,
447               l_trq_rec.attribute15,
448               l_trq_rec.org_id,
449               l_trq_rec.request_id,
450               l_trq_rec.program_application_id,
451               l_trq_rec.program_id,
452               l_trq_rec.program_update_date,
453               l_trq_rec.created_by,
454               l_trq_rec.creation_date,
455               l_trq_rec.last_updated_by,
456               l_trq_rec.last_update_date,
457               l_trq_rec.last_update_login,
458               l_trq_rec.minimum_rate,
459               l_trq_rec.maximum_rate,
460               l_trq_rec.tolerance,
461               l_trq_rec.adjustment_frequency_code,
462               l_trq_rec.base_rate,
463               l_trq_rec.index_name,
464               l_trq_rec.variable_method_code,
465               l_trq_rec.adder,
466               l_trq_rec.days_in_year,
467               l_trq_rec.days_in_month,
468               l_trq_rec.interest_method_code,
469               l_trq_rec.interest_start_date,
470               l_trq_rec.method_of_calculation_code,
471               l_trq_rec.request_number,
472               l_trq_rec.date_of_conversion,
473               l_trq_rec.variable_rate_yn,
474               l_trq_rec.request_status_code,
475               l_trq_rec.yield,
476               l_trq_rec.residual,
477               l_trq_rec.comments,
478               l_trq_rec.payment_frequency_code,
479               l_trq_rec.restructure_date,
480               l_trq_rec.past_due_yn,
481               l_trq_rec.request_reason_code,
482               l_trq_rec.parent_khr_id,
483               l_trq_rec.yield_type,
484               l_trq_rec.payment_amount,
485               l_trq_rec.payment_date,
486               l_trq_rec.paydown_type,
487               l_trq_rec.currency_conversion_type,
488               l_trq_rec.currency_conversion_rate,
489               l_trq_rec.currency_conversion_date,
490               l_trq_rec.lsm_id,
491               l_trq_rec.receipt_id,
492               l_trq_rec.tcn_id,
493               l_trq_rec.try_id,
494 	      l_trq_rec.legal_entity_id;
495     x_no_data_found := okl_trq_pk_csr%NOTFOUND;
496     CLOSE okl_trq_pk_csr;
497     RETURN(l_trq_rec);
498   END get_rec;
499 
500   ------------------------------------------------------------------
501   -- This version of get_rec sets error messages if no data found --
502   ------------------------------------------------------------------
503   FUNCTION get_rec (
504     p_trq_rec                      IN trq_rec_type,
505     x_return_status                OUT NOCOPY VARCHAR2
506   ) RETURN trq_rec_type IS
507     l_trq_rec                      trq_rec_type;
508     l_row_notfound                 BOOLEAN := TRUE;
509   BEGIN
510     x_return_status := OKL_API.G_RET_STS_SUCCESS;
511     l_trq_rec := get_rec(p_trq_rec, l_row_notfound);
512     IF (l_row_notfound) THEN
513       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
514       x_return_status := OKL_API.G_RET_STS_ERROR;
515     END IF;
516     RETURN(l_trq_rec);
517   END get_rec;
518   -----------------------------------------------------------
519   -- So we don't have to pass an "l_row_notfound" variable --
520   -----------------------------------------------------------
521   FUNCTION get_rec (
522     p_trq_rec                      IN trq_rec_type
523   ) RETURN trq_rec_type IS
524     l_row_not_found                BOOLEAN := TRUE;
525   BEGIN
526     RETURN(get_rec(p_trq_rec, l_row_not_found));
527   END get_rec;
528   ---------------------------------------------------------------------------
529   -- FUNCTION null_out_defaults for: OKL_TRX_REQUESTS_V
530   ---------------------------------------------------------------------------
531   FUNCTION null_out_defaults (
532     p_trqv_rec   IN trqv_rec_type
533   ) RETURN trqv_rec_type IS
534     l_trqv_rec                     trqv_rec_type := p_trqv_rec;
535   BEGIN
536     IF (l_trqv_rec.id = OKL_API.G_MISS_NUM ) THEN
537       l_trqv_rec.id := NULL;
538     END IF;
539     IF (l_trqv_rec.object1_id1 = OKL_API.G_MISS_CHAR ) THEN
540       l_trqv_rec.object1_id1 := NULL;
541     END IF;
542     IF (l_trqv_rec.object1_id2 = OKL_API.G_MISS_CHAR ) THEN
543       l_trqv_rec.object1_id2 := NULL;
544     END IF;
545     IF (l_trqv_rec.jtot_object1_code = OKL_API.G_MISS_CHAR ) THEN
546       l_trqv_rec.jtot_object1_code := NULL;
547     END IF;
548     IF (l_trqv_rec.dnz_khr_id = OKL_API.G_MISS_NUM ) THEN
549       l_trqv_rec.dnz_khr_id := NULL;
550     END IF;
551     IF (l_trqv_rec.request_type_code = OKL_API.G_MISS_CHAR ) THEN
552       l_trqv_rec.request_type_code := NULL;
553     END IF;
554     IF (l_trqv_rec.apply_to_code = OKL_API.G_MISS_CHAR ) THEN
555       l_trqv_rec.apply_to_code := NULL;
556     END IF;
557     IF (l_trqv_rec.start_date = OKL_API.G_MISS_DATE ) THEN
558       l_trqv_rec.start_date := NULL;
559     END IF;
560     IF (l_trqv_rec.end_date = OKL_API.G_MISS_DATE ) THEN
561       l_trqv_rec.end_date := NULL;
562     END IF;
563     IF (l_trqv_rec.term_duration = OKL_API.G_MISS_NUM ) THEN
564       l_trqv_rec.term_duration := NULL;
565     END IF;
566     IF (l_trqv_rec.AMOUNT = OKL_API.G_MISS_NUM ) THEN
567       l_trqv_rec.AMOUNT := NULL;
568     END IF;
569     IF (l_trqv_rec.currency_code = OKL_API.G_MISS_CHAR ) THEN
570       l_trqv_rec.currency_code := NULL;
571     END IF;
572     IF (l_trqv_rec.subsidy_yn = OKL_API.G_MISS_CHAR ) THEN
573       l_trqv_rec.subsidy_yn := NULL;
574     END IF;
575     IF (l_trqv_rec.cash_applied_yn = OKL_API.G_MISS_CHAR ) THEN
576       l_trqv_rec.cash_applied_yn := NULL;
577     END IF;
578     IF (l_trqv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
579       l_trqv_rec.object_version_number := NULL;
580     END IF;
581     IF (l_trqv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
582       l_trqv_rec.attribute_category := NULL;
583     END IF;
584     IF (l_trqv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
585       l_trqv_rec.attribute1 := NULL;
586     END IF;
587     IF (l_trqv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
588       l_trqv_rec.attribute2 := NULL;
589     END IF;
590     IF (l_trqv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
591       l_trqv_rec.attribute3 := NULL;
592     END IF;
593     IF (l_trqv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
594       l_trqv_rec.attribute4 := NULL;
595     END IF;
596     IF (l_trqv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
597       l_trqv_rec.attribute5 := NULL;
598     END IF;
599     IF (l_trqv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
600       l_trqv_rec.attribute6 := NULL;
601     END IF;
602     IF (l_trqv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
603       l_trqv_rec.attribute7 := NULL;
604     END IF;
605     IF (l_trqv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
606       l_trqv_rec.attribute8 := NULL;
607     END IF;
608     IF (l_trqv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
609       l_trqv_rec.attribute9 := NULL;
610     END IF;
611     IF (l_trqv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
612       l_trqv_rec.attribute10 := NULL;
613     END IF;
614     IF (l_trqv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
615       l_trqv_rec.attribute11 := NULL;
616     END IF;
617     IF (l_trqv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
618       l_trqv_rec.attribute12 := NULL;
619     END IF;
620     IF (l_trqv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
621       l_trqv_rec.attribute13 := NULL;
622     END IF;
623     IF (l_trqv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
624       l_trqv_rec.attribute14 := NULL;
625     END IF;
626     IF (l_trqv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
627       l_trqv_rec.attribute15 := NULL;
628     END IF;
629     IF (l_trqv_rec.org_id = OKL_API.G_MISS_NUM ) THEN
630       l_trqv_rec.org_id := NULL;
631     END IF;
632     IF (l_trqv_rec.request_id = OKL_API.G_MISS_NUM ) THEN
633       l_trqv_rec.request_id := NULL;
634     END IF;
635     IF (l_trqv_rec.program_application_id = OKL_API.G_MISS_NUM ) THEN
636       l_trqv_rec.program_application_id := NULL;
637     END IF;
638     IF (l_trqv_rec.program_id = OKL_API.G_MISS_NUM ) THEN
639       l_trqv_rec.program_id := NULL;
640     END IF;
641     IF (l_trqv_rec.program_update_date = OKL_API.G_MISS_DATE ) THEN
642       l_trqv_rec.program_update_date := NULL;
643     END IF;
644     IF (l_trqv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
645       l_trqv_rec.created_by := NULL;
646     END IF;
647     IF (l_trqv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
648       l_trqv_rec.creation_date := NULL;
649     END IF;
650     IF (l_trqv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
651       l_trqv_rec.last_updated_by := NULL;
652     END IF;
653     IF (l_trqv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
654       l_trqv_rec.last_update_date := NULL;
655     END IF;
656     IF (l_trqv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
657       l_trqv_rec.last_update_login := NULL;
658     END IF;
659     IF (l_trqv_rec.minimum_rate = OKL_API.G_MISS_NUM ) THEN
660       l_trqv_rec.minimum_rate := NULL;
661     END IF;
662     IF (l_trqv_rec.maximum_rate = OKL_API.G_MISS_NUM ) THEN
663       l_trqv_rec.maximum_rate := NULL;
664     END IF;
665     IF (l_trqv_rec.tolerance = OKL_API.G_MISS_NUM ) THEN
666       l_trqv_rec.tolerance := NULL;
667     END IF;
668     IF (l_trqv_rec.adjustment_frequency_code = OKL_API.G_MISS_CHAR ) THEN
669       l_trqv_rec.adjustment_frequency_code := NULL;
670     END IF;
671     IF (l_trqv_rec.base_rate = OKL_API.G_MISS_NUM ) THEN
672       l_trqv_rec.base_rate := NULL;
673     END IF;
674     IF (l_trqv_rec.index_name = OKL_API.G_MISS_CHAR ) THEN
675       l_trqv_rec.index_name := NULL;
676     END IF;
677     IF (l_trqv_rec.variable_method_code = OKL_API.G_MISS_CHAR ) THEN
678       l_trqv_rec.variable_method_code := NULL;
679     END IF;
680     IF (l_trqv_rec.adder = OKL_API.G_MISS_NUM ) THEN
681       l_trqv_rec.adder := NULL;
682     END IF;
683     IF (l_trqv_rec.days_in_year = OKL_API.G_MISS_CHAR ) THEN
684       l_trqv_rec.days_in_year := NULL;
685     END IF;
686     IF (l_trqv_rec.days_in_month = OKL_API.G_MISS_CHAR ) THEN
687       l_trqv_rec.days_in_month := NULL;
688     END IF;
689     IF (l_trqv_rec.interest_method_code = OKL_API.G_MISS_CHAR ) THEN
690       l_trqv_rec.interest_method_code := NULL;
691     END IF;
692     IF (l_trqv_rec.interest_start_date = OKL_API.G_MISS_DATE ) THEN
693       l_trqv_rec.interest_start_date := NULL;
694     END IF;
695     IF (l_trqv_rec.method_of_calculation_code = OKL_API.G_MISS_CHAR ) THEN
696       l_trqv_rec.method_of_calculation_code := NULL;
697     END IF;
698     IF (l_trqv_rec.request_number = OKL_API.G_MISS_CHAR ) THEN
699       l_trqv_rec.request_number := NULL;
700     END IF;
701     IF (l_trqv_rec.date_of_conversion = OKL_API.G_MISS_DATE ) THEN
702       l_trqv_rec.date_of_conversion := NULL;
703     END IF;
704     IF (l_trqv_rec.variable_rate_yn = OKL_API.G_MISS_CHAR ) THEN
705       l_trqv_rec.variable_rate_yn := NULL;
706     END IF;
707     IF (l_trqv_rec.request_status_code = OKL_API.G_MISS_CHAR ) THEN
708       l_trqv_rec.request_status_code := NULL;
709     END IF;
710     IF (l_trqv_rec.yield = OKL_API.G_MISS_NUM ) THEN
711       l_trqv_rec.yield := NULL;
712     END IF;
713     IF (l_trqv_rec.residual = OKL_API.G_MISS_NUM ) THEN
714       l_trqv_rec.residual := NULL;
715     END IF;
716     IF (l_trqv_rec.comments = OKL_API.G_MISS_CHAR ) THEN
717       l_trqv_rec.comments := NULL;
718     END IF;
719     IF (l_trqv_rec.payment_frequency_code = OKL_API.G_MISS_CHAR ) THEN
720       l_trqv_rec.payment_frequency_code := NULL;
721     END IF;
722     IF (l_trqv_rec.restructure_date = OKL_API.G_MISS_DATE ) THEN
723       l_trqv_rec.restructure_date := NULL;
724     END IF;
725     IF (l_trqv_rec.past_due_yn = OKL_API.G_MISS_CHAR ) THEN
726       l_trqv_rec.past_due_yn := NULL;
727     END IF;
728      IF (l_trqv_rec.request_reason_code = OKL_API.G_MISS_CHAR ) THEN
729           l_trqv_rec.request_reason_code := NULL;
730     END IF;
731     IF (l_trqv_rec.parent_khr_id = OKL_API.G_MISS_NUM ) THEN
732       l_trqv_rec.parent_khr_id := NULL;
733     END IF;
734      IF (l_trqv_rec.yield_type = OKL_API.G_MISS_CHAR ) THEN
735           l_trqv_rec.yield_type := NULL;
736     END IF;
737      IF (l_trqv_rec.payment_amount = OKL_API.G_MISS_NUM ) THEN
738           l_trqv_rec.payment_amount := NULL;
739     END IF;
740      IF (l_trqv_rec.payment_date = OKL_API.G_MISS_DATE ) THEN
741           l_trqv_rec.payment_date := NULL;
742     END IF;
743      IF (l_trqv_rec.paydown_type = OKL_API.G_MISS_CHAR ) THEN
744           l_trqv_rec.paydown_type := NULL;
745     END IF;
746      IF (l_trqv_rec.currency_conversion_type = OKL_API.G_MISS_CHAR ) THEN
747           l_trqv_rec.currency_conversion_type := NULL;
748     END IF;
749      IF (l_trqv_rec.currency_conversion_rate = OKL_API.G_MISS_NUM ) THEN
750           l_trqv_rec.currency_conversion_rate := NULL;
751     END IF;
752      IF (l_trqv_rec.currency_conversion_date = OKL_API.G_MISS_DATE ) THEN
753           l_trqv_rec.currency_conversion_date := NULL;
754     END IF;
755      IF (l_trqv_rec.lsm_id = OKL_API.G_MISS_NUM ) THEN
756           l_trqv_rec.lsm_id := NULL;
757     END IF;
758      IF (l_trqv_rec.receipt_id = OKL_API.G_MISS_NUM ) THEN
759           l_trqv_rec.receipt_id := NULL;
760     END IF;
761      IF (l_trqv_rec.tcn_id = OKL_API.G_MISS_NUM ) THEN
762           l_trqv_rec.tcn_id := NULL;
763     END IF;
764      IF (l_trqv_rec.try_id = OKL_API.G_MISS_NUM ) THEN
765           l_trqv_rec.try_id := NULL;
766     END IF;
767     --BEGIN-VARANGAN-BUG#5083582
768     IF (l_trqv_rec.CUR_PRINCIPAL_BALANCE = OKL_API.G_MISS_NUM ) THEN
769           l_trqv_rec.CUR_PRINCIPAL_BALANCE := NULL;
770     END IF;
771 
772     IF (l_trqv_rec.CUR_ACCUM_INTEREST = OKL_API.G_MISS_NUM ) THEN
773           l_trqv_rec.CUR_ACCUM_INTEREST := NULL;
774     END IF;
775 
776     --END-VARANGAN-BUG#5083582
777     IF (l_trqv_rec.legal_entity_id = OKL_API.G_MISS_NUM ) THEN
778           l_trqv_rec.legal_entity_id := NULL;
779     END IF;
780 
781     RETURN(l_trqv_rec);
782   END null_out_defaults;
783   ---------------------------------
784   -- Validate_Attributes for: ID --
785   ---------------------------------
786   --Hand coded
787   PROCEDURE validate_id(
788     x_return_status                OUT NOCOPY VARCHAR2,
789     p_trqv_rec                           IN trqv_rec_type) IS
790 
791      l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
792 
793    BEGIN
794 
795      IF (p_trqv_rec.id = OKL_API.G_MISS_NUM OR
796          p_trqv_rec.id IS NULL)
797      THEN
798        OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
799        l_return_status := OKL_API.G_RET_STS_ERROR;
800 
801      END IF;
802      x_return_status := l_return_status;
803    EXCEPTION
804      WHEN OTHERS THEN
805        OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
806                            ,p_msg_name     => G_UNEXPECTED_ERROR
807                            ,p_token1       => G_SQLCODE_TOKEN
808                            ,p_token1_value => SQLCODE
809                            ,p_token2       => G_SQLERRM_TOKEN
810                            ,p_token2_value => SQLERRM);
811        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
812    END validate_id;
813 
814 
815   ---------------------------------
816   -- Validate_Attributes for: LEGAL_ENTITY_ID --
817   ---------------------------------
818   --Hand coded
819   PROCEDURE validate_legal_entity_id(
820     x_return_status                OUT NOCOPY VARCHAR2,
821     p_trqv_rec                     IN  trqv_rec_type) IS
822 
823      l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
824      l_exists           NUMBER(1);
825    BEGIN
826 
827      IF (p_trqv_rec.legal_entity_id = OKL_API.G_MISS_NUM OR
828          p_trqv_rec.legal_entity_id IS NULL)
829      THEN
830        OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'LEGAL_ENTITY_ID');
831        l_return_status := OKL_API.G_RET_STS_ERROR;
832      ELSE
833        l_exists := OKL_LEGAL_ENTITY_UTIL.check_le_id_exists(p_trqv_rec.legal_entity_id);
834        IF (l_exists <> 1) THEN
835          OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'LEGAL_ENTITY_ID');
836          l_return_status := OKL_API.G_RET_STS_ERROR;
837        END IF;
838      END IF;
839      x_return_status := l_return_status;
840    EXCEPTION
841      WHEN OTHERS THEN
842        OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
843                            ,p_msg_name     => G_UNEXPECTED_ERROR
844                            ,p_token1       => G_SQLCODE_TOKEN
845                            ,p_token1_value => SQLCODE
846                            ,p_token2       => G_SQLERRM_TOKEN
847                            ,p_token2_value => SQLERRM);
848        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
849    END validate_legal_entity_id;
850 
851 ---------------------------------
852   -- Validate_Attributes for: ORG_ID --
853   ---------------------------------
854   --Hand coded
855   PROCEDURE validate_org_id(
856     x_return_status                OUT NOCOPY VARCHAR2,
857     p_trqv_rec                     IN  trqv_rec_type) IS
858 
859      l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
860      l_exists           NUMBER(1);
861    BEGIN
862 
863      IF (p_trqv_rec.org_id = OKL_API.G_MISS_NUM OR
864          p_trqv_rec.org_id IS NULL)
865      THEN
866        OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'ORG_ID');
867        l_return_status := OKL_API.G_RET_STS_ERROR;
868      END IF;
869      x_return_status := l_return_status;
870    EXCEPTION
871      WHEN OTHERS THEN
872        OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
873                            ,p_msg_name     => G_UNEXPECTED_ERROR
874                            ,p_token1       => G_SQLCODE_TOKEN
875                            ,p_token1_value => SQLCODE
876                            ,p_token2       => G_SQLERRM_TOKEN
877                            ,p_token2_value => SQLERRM);
878        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
879    END validate_org_id;
880 
881   ------------------------------------------------
882   -- Validate_Attributes for: REQUEST_TYPE_CODE --
883   ------------------------------------------------
884   PROCEDURE validate_request_type_code(
885     x_return_status                OUT NOCOPY VARCHAR2,
886     p_trqv_rec            IN trqv_rec_type) IS
887 
888      l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
889 
890   BEGIN
891 
892     IF (p_trqv_rec.request_type_code = OKL_API.G_MISS_CHAR OR
893         p_trqv_rec.request_type_code IS NULL)
894     THEN
895       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'request_type_code');
896       l_return_status := OKL_API.G_RET_STS_ERROR;
897 
898     END IF;
899           x_return_status := l_return_status;
900 
901   EXCEPTION
902     WHEN OTHERS THEN
903       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
904                           ,p_msg_name     => G_UNEXPECTED_ERROR
905                           ,p_token1       => G_SQLCODE_TOKEN
906                           ,p_token1_value => SQLCODE
907                           ,p_token2       => G_SQLERRM_TOKEN
908                           ,p_token2_value => SQLERRM);
909       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
910   END validate_request_type_code;
911   ----------------------------------------------------
912   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
913   ----------------------------------------------------
914   PROCEDURE validate_object_version_number(
915     x_return_status                OUT NOCOPY VARCHAR2,
916     p_trqv_rec        IN trqv_rec_type) IS
917          l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
918 
919   BEGIN
920 
921     IF (p_trqv_rec.object_version_number = OKL_API.G_MISS_NUM OR
922         p_trqv_rec.object_version_number IS NULL)
923     THEN
924       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
925       l_return_status := OKL_API.G_RET_STS_ERROR;
926 
927     END IF;
928               x_return_status := l_return_status;
929 
930   EXCEPTION
931     WHEN OTHERS THEN
932       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
933                           ,p_msg_name     => G_UNEXPECTED_ERROR
934                           ,p_token1       => G_SQLCODE_TOKEN
935                           ,p_token1_value => SQLCODE
936                           ,p_token2       => G_SQLERRM_TOKEN
937                           ,p_token2_value => SQLERRM);
938       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
939   END validate_object_version_number;
940 
941   --------------------------------------------------
942   -- Validate_Attributes for: REQUEST_STATUS_CODE --
943   --------------------------------------------------
944   PROCEDURE validate_request_status_code(
945     x_return_status                OUT NOCOPY VARCHAR2,
946     p_trqv_rec        IN trqv_rec_type) IS
947     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
948   BEGIN
949 
950     -- initialize return status
951     x_return_status := OKL_API.G_RET_STS_SUCCESS;
952 
953     IF (p_trqv_rec.request_status_code = OKL_API.G_MISS_CHAR OR
954         p_trqv_rec.request_status_code IS NULL)
955     THEN
956       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'request_status_code');
957       l_return_status := OKL_API.G_RET_STS_ERROR;
958 
959     END IF;
960     --Hand coded this.
961     -- Enforce Foreign Key
962     l_return_status := OKL_UTIL.check_lookup_code(G_STATUS_LOOKUP_TYPE,
963                                                   p_trqv_rec.request_status_code);
964     IF l_return_status <> x_return_status THEN
965        -- Notify Error
966       OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'request_status_code');
967     END IF;
968 
969       x_return_status := l_return_status;
970 
971   EXCEPTION
972     WHEN OTHERS THEN
973       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
974                           ,p_msg_name     => G_UNEXPECTED_ERROR
975                           ,p_token1       => G_SQLCODE_TOKEN
976                           ,p_token1_value => SQLCODE
977                           ,p_token2       => G_SQLERRM_TOKEN
978                           ,p_token2_value => SQLERRM);
979       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
980   END validate_request_status_code;
981   --------------------------------------------
982   -- Validate_Attributes for: APPLY_TO_CODE --
983   --------------------------------------------
984   PROCEDURE validate_apply_to_code(
985     x_return_status                OUT NOCOPY VARCHAR2,
986     p_trqv_rec        IN trqv_rec_type) IS
987     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
988   BEGIN
989     x_return_status := OKL_API.G_RET_STS_SUCCESS;
990     --Hand coded this.
991     IF (p_trqv_rec.apply_to_code <> OKL_API.G_MISS_CHAR OR
992         p_trqv_rec.apply_to_code IS NOT NULL) THEN
993 
994         -- Enforce Foreign Key
995         l_return_status := OKL_UTIL.check_lookup_code(G_APPLY_TO_CODE_LOOKUP_TYPE,
996                                                       p_trqv_rec.apply_to_code);
997         IF l_return_status <> x_return_status THEN
998            -- Notify Error
999           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'apply_to_code');
1000         END IF;
1001     END IF;
1002 
1003     x_return_status := l_return_status;
1004 
1005   EXCEPTION
1006     WHEN OTHERS THEN
1007       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1008                           ,p_msg_name     => G_UNEXPECTED_ERROR
1009                           ,p_token1       => G_SQLCODE_TOKEN
1010                           ,p_token1_value => SQLCODE
1011                           ,p_token2       => G_SQLERRM_TOKEN
1012                           ,p_token2_value => SQLERRM);
1013       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1014   END validate_apply_to_code;
1015   --------------------------------------------------------
1016   -- Validate_Attributes for: ADJUSTMENT_FREQUENCY_CODE --
1017   --------------------------------------------------------
1018   PROCEDURE validate_adjustment1(
1019     x_return_status                OUT NOCOPY VARCHAR2,
1020     p_trqv_rec        IN trqv_rec_type) IS
1021     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1022   BEGIN
1023     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1024     --Hand coded this.
1025     IF (p_trqv_rec.adjustment_frequency_code <> OKL_API.G_MISS_CHAR OR
1026         p_trqv_rec.adjustment_frequency_code IS NOT NULL) THEN
1027 
1028         -- Enforce Foreign Key
1029         l_return_status := OKL_UTIL.check_lookup_code(G_ADJ_FREQ_CODE_LOOKUP_TYPE,
1030                                                       p_trqv_rec.adjustment_frequency_code);
1031         IF l_return_status <> x_return_status THEN
1032            -- Notify Error
1033           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'adjustment_frequency_code');
1034         END IF;
1035     END IF;
1036 
1037     x_return_status := l_return_status;
1038 
1039   EXCEPTION
1040     WHEN OTHERS THEN
1041       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1042                           ,p_msg_name     => G_UNEXPECTED_ERROR
1043                           ,p_token1       => G_SQLCODE_TOKEN
1044                           ,p_token1_value => SQLCODE
1045                           ,p_token2       => G_SQLERRM_TOKEN
1046                           ,p_token2_value => SQLERRM);
1047       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1048   END validate_adjustment1;
1049   ---------------------------------------------------
1050   -- Validate_Attributes for: VARIABLE_METHOD_CODE --
1051   ---------------------------------------------------
1052   PROCEDURE validate_variable_method_code(
1053     x_return_status                OUT NOCOPY VARCHAR2,
1054     p_trqv_rec        IN trqv_rec_type) IS
1055     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1056   BEGIN
1057     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1058     --Hand coded this.
1059     IF (p_trqv_rec.variable_method_code <> OKL_API.G_MISS_CHAR OR
1060         p_trqv_rec.variable_method_code IS NOT NULL) THEN
1061 
1062         -- Enforce Foreign Key
1063         l_return_status := OKL_UTIL.check_lookup_code(G_VAR_METHOD_CODE_LOOKUP_TYPE,
1064                                                       p_trqv_rec.variable_method_code);
1065         IF l_return_status <> x_return_status THEN
1066            -- Notify Error
1067           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'variable_method_code');
1068         END IF;
1069     END IF;
1070 
1071     x_return_status := l_return_status;
1072 
1073   EXCEPTION
1074     WHEN OTHERS THEN
1075       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1076                           ,p_msg_name     => G_UNEXPECTED_ERROR
1077                           ,p_token1       => G_SQLCODE_TOKEN
1078                           ,p_token1_value => SQLCODE
1079                           ,p_token2       => G_SQLERRM_TOKEN
1080                           ,p_token2_value => SQLERRM);
1081       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1082   END validate_variable_method_code;
1083   ---------------------------------------------------
1084   -- Validate_Attributes for: INTEREST_METHOD_CODE --
1085   ---------------------------------------------------
1086   PROCEDURE validate_interest_method_code(
1087     x_return_status                OUT NOCOPY VARCHAR2,
1088     p_trqv_rec        IN trqv_rec_type) IS
1089     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1090   BEGIN
1091     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1092     --Hand coded this.
1093     IF (p_trqv_rec.interest_method_code <> OKL_API.G_MISS_CHAR OR
1094         p_trqv_rec.interest_method_code IS NOT NULL) THEN
1095 
1096         -- Enforce Foreign Key
1097         l_return_status := OKL_UTIL.check_lookup_code(G_INT_METHOD_CODE_LOOKUP_TYPE,
1098                                                       p_trqv_rec.interest_method_code);
1099         IF l_return_status <> x_return_status THEN
1100            -- Notify Error
1101           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'interest_method_code');
1102         END IF;
1103     END IF;
1104 
1105     x_return_status := l_return_status;
1106 
1107   EXCEPTION
1108     WHEN OTHERS THEN
1109       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1110                           ,p_msg_name     => G_UNEXPECTED_ERROR
1111                           ,p_token1       => G_SQLCODE_TOKEN
1112                           ,p_token1_value => SQLCODE
1113                           ,p_token2       => G_SQLERRM_TOKEN
1114                           ,p_token2_value => SQLERRM);
1115       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1116   END validate_interest_method_code;
1117   ---------------------------------------------------------
1118   -- Validate_Attributes for: METHOD_OF_CALCULATION_CODE --
1119   ---------------------------------------------------------
1120   PROCEDURE validate_method_of_3(
1121     x_return_status                OUT NOCOPY VARCHAR2,
1122     p_trqv_rec        IN trqv_rec_type) IS
1123     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1124   BEGIN
1125     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1126     --Hand coded this.
1127 /*
1128     IF (p_trqv_rec.method_of_calculation_code <> OKL_API.G_MISS_CHAR OR
1129         p_trqv_rec.method_of_calculation_code IS NOT NULL) THEN
1130 
1131         -- Enforce Foreign Key
1132         l_return_status := OKL_UTIL.check_lookup_code(G_CALC_METHOD_CODE_LOOKUP_TYPE,
1133                                                       p_trqv_rec.method_of_calculation_code);
1134         IF l_return_status <> x_return_status THEN
1135            -- Notify Error
1136           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'method_of_calculation_code');
1137         END IF;
1138     END IF;
1139 
1140     x_return_status := l_return_status;
1141 */
1142 
1143   EXCEPTION
1144     WHEN OTHERS THEN
1145       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1146                           ,p_msg_name     => G_UNEXPECTED_ERROR
1147                           ,p_token1       => G_SQLCODE_TOKEN
1148                           ,p_token1_value => SQLCODE
1149                           ,p_token2       => G_SQLERRM_TOKEN
1150                           ,p_token2_value => SQLERRM);
1151       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1152   END validate_method_of_3;
1153   -----------------------------------------------------
1154   -- Validate_Attributes for: PAYMENT_FREQUENCY_CODE --
1155   -----------------------------------------------------
1156   PROCEDURE validate_payment_fr5(
1157     x_return_status                OUT NOCOPY VARCHAR2,
1158     p_trqv_rec        IN trqv_rec_type) IS
1159     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1160   BEGIN
1161     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1162     --Hand coded this.
1163     IF (p_trqv_rec.payment_frequency_code <> OKL_API.G_MISS_CHAR OR
1164         p_trqv_rec.payment_frequency_code IS NOT NULL) THEN
1165 
1166         -- Enforce Foreign Key
1167         l_return_status := OKL_UTIL.check_lookup_code(G_PAY_FREQ_CODE_LOOKUP_TYPE,
1168                                                       p_trqv_rec.payment_frequency_code);
1169         IF l_return_status <> x_return_status THEN
1170            -- Notify Error
1171           OKL_API.set_message(G_APP_NAME, G_NO_MATCHING_RECORD, G_COL_NAME_TOKEN, 'payment_frequency_code');
1172         END IF;
1173     END IF;
1174 
1175     x_return_status := l_return_status;
1176 
1177   EXCEPTION
1178     WHEN OTHERS THEN
1179       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1180                           ,p_msg_name     => G_UNEXPECTED_ERROR
1181                           ,p_token1       => G_SQLCODE_TOKEN
1182                           ,p_token1_value => SQLCODE
1183                           ,p_token2       => G_SQLERRM_TOKEN
1184                           ,p_token2_value => SQLERRM);
1185       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1186   END validate_payment_fr5;
1187 
1188 
1189   -----------------------------------------------------
1190   -- Validate_Attributes for: Currency Code --
1191   -----------------------------------------------------
1192 
1193 
1194   PROCEDURE validate_currency_code(
1195     x_return_status                OUT NOCOPY VARCHAR2,
1196     p_trqv_rec        IN trqv_rec_type) IS
1197     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1198     l_valid VARCHAR2(1);
1199   BEGIN
1200     -- initialize return status
1201     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1202     IF (p_trqv_rec.currency_code <> OKL_API.G_MISS_CHAR AND
1203        p_trqv_rec.currency_code IS NOT NULL) THEN
1204       -- check from currency values using the generic okl_util.validate_currency_code
1205       l_valid := OKL_ACCOUNTING_UTIL.validate_currency_code(p_trqv_rec.currency_code);
1206       IF l_valid <> OKL_API.G_TRUE THEN
1207         l_return_status := OKL_API.G_RET_STS_ERROR;
1208       END IF;
1209 
1210     END IF;
1211     IF (l_return_status <>  OKL_API.G_RET_STS_SUCCESS) THEN
1212       -- halt further validation of this column
1213       RAISE G_EXCEPTION_HALT_VALIDATION;
1214     END IF;
1215   EXCEPTION
1216     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1217       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1218                           p_msg_name     => g_invalid_value,
1219                           p_token1       => g_col_name_token,
1220                           p_token1_value => 'currency_code');
1221       x_return_status := OKC_API.G_RET_STS_ERROR;
1222     WHEN OTHERS THEN
1223       -- store SQL error message on message stack for caller
1224       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1225                           p_msg_name     => g_unexpected_error,
1226                           p_token1       => g_sqlcode_token,
1227                           p_token1_value => sqlcode,
1228                           p_token2       => g_sqlerrm_token,
1229                           p_token2_value => sqlerrm);
1230       -- notify caller of an UNEXPECTED error
1231       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1232   END validate_currency_code;
1233   ------------------------------------------------------------------------
1234   -- PROCEDURE validate_currency_con_type
1235   ------------------------------------------------------------------------
1236   PROCEDURE validate_currency_con_type(
1237     x_return_status                OUT NOCOPY VARCHAR2,
1238     p_trqv_rec        IN trqv_rec_type) IS
1239     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1240     l_Valid VARCHAR2(1);
1241   BEGIN
1242     -- initialize return status
1243     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1244     IF (p_trqv_rec.currency_conversion_type <> OKL_API.G_MISS_CHAR AND
1245        p_trqv_rec.currency_conversion_type IS NOT NULL) THEN
1246       -- check from currency values using the generic okl_util.validate_currency_con_type
1247       l_valid := OKL_ACCOUNTING_UTIL.validate_currency_con_type(p_trqv_rec.currency_conversion_type);
1248       IF l_valid <> OKL_API.G_TRUE THEN
1249         l_return_status := OKL_API.G_RET_STS_ERROR;
1250       END IF;
1251     END IF;
1252     IF (l_return_status <>  OKC_API.G_RET_STS_SUCCESS) THEN
1253       -- halt further validation of this column
1254       RAISE G_EXCEPTION_HALT_VALIDATION;
1255     END IF;
1256   EXCEPTION
1257     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1258       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1259                           p_msg_name     => g_invalid_value,
1260                           p_token1       => g_col_name_token,
1261                           p_token1_value => 'currency_conversion_type');
1262       x_return_status := OKC_API.G_RET_STS_ERROR;
1263     WHEN OTHERS THEN
1264       -- store SQL error message on message stack for caller
1265       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1266                           p_msg_name     => g_unexpected_error,
1267                           p_token1       => g_sqlcode_token,
1268                           p_token1_value => sqlcode,
1269                           p_token2       => g_sqlerrm_token,
1270                           p_token2_value => sqlerrm);
1271       -- notify caller of an UNEXPECTED error
1272       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1273   END validate_currency_con_type;
1274 
1275   ------------------------------------------------------------------------
1276   -- PROCEDURE validate_currency_record
1277   ------------------------------------------------------------------------
1278   PROCEDURE validate_currency_record(
1279     x_return_status                OUT NOCOPY VARCHAR2,
1280     p_trqv_rec        IN trqv_rec_type) IS
1281 
1282     l_count          NUMBER := 0;
1283     CURSOR l_check_id_csr(p_id OKL_TRX_REQUESTS.ID%TYPE) IS
1284     SELECT count(*)
1285     FROM OKL_TRX_REQUESTS
1286     WHERE id = p_id;
1287   BEGIN
1288     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1289     -- data is required
1290     OPEN  l_check_id_csr(p_id => p_trqv_rec.id);
1291     FETCH l_check_id_csr INTO l_count;
1292     CLOSE l_check_id_csr;
1293     -- In the insert mode, if any one of conversion_type, conversion_rate
1294     -- and conversion date are not null then all are mandory
1295     IF l_count = 0 THEN
1296       IF (p_trqv_rec.currency_conversion_type <> OKC_API.G_MISS_CHAR OR
1297          p_trqv_rec.currency_conversion_type IS NOT NULL) OR
1298          (p_trqv_rec.currency_conversion_rate <> OKC_API.G_MISS_NUM OR
1299          p_trqv_rec.currency_conversion_rate IS NOT NULL) OR
1300          (p_trqv_rec.currency_conversion_date <> OKC_API.G_MISS_DATE OR
1301          p_trqv_rec.currency_conversion_date IS NOT NULL) THEN
1302         RAISE G_EXCEPTION_HALT_VALIDATION;
1303       END IF;
1304     -- In the update mode, if all conversion_type, conversion_rate
1305     -- and conversion date are not null or null we are ok.
1306     -- Else we are not ok
1307     ELSE
1308       IF (p_trqv_rec.currency_conversion_type <> OKC_API.G_MISS_CHAR OR
1309          p_trqv_rec.currency_conversion_type IS NOT NULL) AND
1310          (p_trqv_rec.currency_conversion_rate <> OKC_API.G_MISS_NUM OR
1311          p_trqv_rec.currency_conversion_rate IS NOT NULL) AND
1312          (p_trqv_rec.currency_conversion_date <> OKC_API.G_MISS_DATE OR
1313          p_trqv_rec.currency_conversion_date IS NOT NULL) THEN
1314         x_return_status := OKC_API.G_RET_STS_SUCCESS;
1315       ELSIF (p_trqv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR OR
1316          p_trqv_rec.currency_conversion_type IS NULL) AND
1317          (p_trqv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM OR
1318          p_trqv_rec.currency_conversion_rate IS NULL) AND
1319          (p_trqv_rec.currency_conversion_date = OKC_API.G_MISS_DATE OR
1320          p_trqv_rec.currency_conversion_date IS NULL) THEN
1321         x_return_status := OKC_API.G_RET_STS_SUCCESS;
1322       ELSE
1323         RAISE G_EXCEPTION_HALT_VALIDATION;
1324       END IF;
1325     END IF;
1326   EXCEPTION
1327     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1328       OKC_API.set_message(p_app_name     => G_APP_NAME,
1329                           p_msg_name     => G_REQUIRED_VALUE,
1330                           p_token1       => G_COL_NAME_TOKEN,
1331                           p_token1_value => 'currency_conversion_type,currency_conversion_rate and currency_conversion_date');
1332       x_return_status := OKC_API.G_RET_STS_ERROR;
1333     WHEN OTHERS THEN
1334       -- store SQL error message on message stack for caller
1335       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1336                           p_msg_name     => g_unexpected_error,
1337                           p_token1       => g_sqlcode_token,
1338                           p_token1_value => sqlcode,
1339                           p_token2       => g_sqlerrm_token,
1340                           p_token2_value => sqlerrm);
1341       -- notify caller of an UNEXPECTED error
1342       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1343   END validate_currency_record;
1344 
1345 
1346   ---------------------------------------------------------------------------
1347   -- FUNCTION Validate_Attributes
1348   ---------------------------------------------------------------------------
1349   ------------------------------------------------
1350   -- Validate_Attributes for:OKL_TRX_REQUESTS_V --
1351   ------------------------------------------------
1352   FUNCTION Validate_Attributes (
1353     p_trqv_rec                     IN trqv_rec_type
1354   ) RETURN VARCHAR2 IS
1355     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1356     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1357   BEGIN
1358     -----------------------------
1359     -- Column Level Validation --
1360     -----------------------------
1361     -- ***
1362     -- id
1363     -- ***
1364     validate_id(l_return_status, p_trqv_rec);
1365     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1366       x_return_status := l_return_status;
1367       RAISE G_EXCEPTION_HALT_VALIDATION;
1368     END IF;
1369 
1370     -- ***
1371     -- legal_entity_id
1372     -- ***
1373     validate_legal_entity_id(l_return_status, p_trqv_rec);
1374     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1375       x_return_status := l_return_status;
1376       RAISE G_EXCEPTION_HALT_VALIDATION;
1377     END IF;
1378 
1379     -- ***
1380     -- org_id
1381     -- ***
1382     validate_org_id(l_return_status, p_trqv_rec);
1383     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1384       x_return_status := l_return_status;
1385       RAISE G_EXCEPTION_HALT_VALIDATION;
1386     END IF;
1387 
1388     -- ***
1389     -- request_type_code
1390     -- ***
1391     validate_request_type_code(l_return_status, p_trqv_rec);
1392     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1393       x_return_status := l_return_status;
1394       RAISE G_EXCEPTION_HALT_VALIDATION;
1395     END IF;
1396 
1397     -- ***
1398     -- object_version_number
1399     -- ***
1400     validate_object_version_number(l_return_status, p_trqv_rec);
1401     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1402       x_return_status := l_return_status;
1403       RAISE G_EXCEPTION_HALT_VALIDATION;
1404     END IF;
1405 
1406     -- ***
1407     -- request_status_code
1408     -- ***
1409     validate_request_status_code(l_return_status, p_trqv_rec);
1410     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1411       x_return_status := l_return_status;
1412       RAISE G_EXCEPTION_HALT_VALIDATION;
1413     END IF;
1414 
1415     -- ***
1416     -- apply_to_code
1417     -- ***
1418     validate_apply_to_code(l_return_status, p_trqv_rec);
1419     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1420       x_return_status := l_return_status;
1421       RAISE G_EXCEPTION_HALT_VALIDATION;
1422     END IF;
1423 
1424 
1425 
1426     -- ***
1427     -- adjustment_frequency_code
1428     -- ***
1429     validate_adjustment1(l_return_status, p_trqv_rec);
1430     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1431       x_return_status := l_return_status;
1432       RAISE G_EXCEPTION_HALT_VALIDATION;
1433     END IF;
1434 
1435 
1436     -- ***
1437     -- variable_method_code
1438     -- ***
1439     validate_variable_method_code(l_return_status, p_trqv_rec);
1440     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1441       x_return_status := l_return_status;
1442       RAISE G_EXCEPTION_HALT_VALIDATION;
1443     END IF;
1444 
1445 
1446     -- ***
1447     -- interest_method_code
1448     -- ***
1449     validate_interest_method_code(l_return_status, p_trqv_rec);
1450     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1451       x_return_status := l_return_status;
1452       RAISE G_EXCEPTION_HALT_VALIDATION;
1453     END IF;
1454 
1455 
1456     -- ***
1457     -- method_of_calculation_code
1458     -- ***
1459     validate_method_of_3(l_return_status, p_trqv_rec);
1460     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1461       x_return_status := l_return_status;
1462       RAISE G_EXCEPTION_HALT_VALIDATION;
1463     END IF;
1464 
1465 
1466 
1467     -- ***
1468     -- payment_frequency_code
1469     -- ***
1470     validate_payment_fr5(l_return_status, p_trqv_rec);
1471     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1472       x_return_status := l_return_status;
1473       RAISE G_EXCEPTION_HALT_VALIDATION;
1474     END IF;
1475 
1476      -- ***
1477     -- Currency Record
1478     -- ***
1479     validate_currency_record(l_return_status, p_trqv_rec);
1480     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1481       x_return_status := l_return_status;
1482       RAISE G_EXCEPTION_HALT_VALIDATION;
1483     END IF;
1484 
1485     -- ***
1486     -- Currency code
1487     -- ***
1488     validate_currency_code(l_return_status, p_trqv_rec);
1489     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1490       x_return_status := l_return_status;
1491       RAISE G_EXCEPTION_HALT_VALIDATION;
1492     END IF;
1493 
1494     -- ***
1495     -- Currency conversion Type
1496     -- ***
1497     validate_currency_con_type(l_return_status, p_trqv_rec);
1498     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1499       x_return_status := l_return_status;
1500       RAISE G_EXCEPTION_HALT_VALIDATION;
1501     END IF;
1502 
1503     RETURN(x_return_status);
1504   EXCEPTION
1505     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1506       RETURN(x_return_status);
1507     WHEN OTHERS THEN
1508       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1509                           ,p_msg_name     => G_UNEXPECTED_ERROR
1510                           ,p_token1       => G_SQLCODE_TOKEN
1511                           ,p_token1_value => SQLCODE
1512                           ,p_token2       => G_SQLERRM_TOKEN
1513                           ,p_token2_value => SQLERRM);
1514       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1515       RETURN(x_return_status);
1516   END Validate_Attributes;
1517   ---------------------------------------------------------------------------
1518   -- PROCEDURE Validate_Record
1519   ---------------------------------------------------------------------------
1520   --------------------------------------------
1521   -- Validate Record for:OKL_TRX_REQUESTS_V --
1522   --------------------------------------------
1523   FUNCTION Validate_Record (
1524     p_trqv_rec IN trqv_rec_type,
1525     p_db_trqv_rec IN trqv_rec_type
1526   ) RETURN VARCHAR2 IS
1527     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1528   BEGIN
1529     RETURN (l_return_status);
1530   END Validate_Record;
1531 
1532   FUNCTION Validate_Record (
1533     p_trqv_rec IN trqv_rec_type
1534   ) RETURN VARCHAR2 IS
1535     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1536     l_db_trqv_rec                  trqv_rec_type := get_rec(p_trqv_rec);
1537   BEGIN
1538     l_return_status := Validate_Record(p_trqv_rec => p_trqv_rec,
1539                                        p_db_trqv_rec => l_db_trqv_rec);
1540     RETURN (l_return_status);
1541   END Validate_Record;
1542 
1543 --End Hand Coding
1544 
1545   ---------------------------------------------------------------------------
1546   -- PROCEDURE Migrate
1547   ---------------------------------------------------------------------------
1548   PROCEDURE migrate (
1549     p_from IN trqv_rec_type,
1550     p_to   IN OUT NOCOPY trq_rec_type
1551   ) IS
1552   BEGIN
1553     p_to.id := p_from.id;
1554     p_to.object1_id1 := p_from.object1_id1;
1555     p_to.object1_id2 := p_from.object1_id2;
1556     p_to.jtot_object1_code := p_from.jtot_object1_code;
1557     p_to.dnz_khr_id := p_from.dnz_khr_id;
1558     p_to.request_type_code := p_from.request_type_code;
1559     p_to.apply_to_code := p_from.apply_to_code;
1560     p_to.start_date := p_from.start_date;
1561     p_to.end_date := p_from.end_date;
1562     p_to.term_duration := p_from.term_duration;
1563     p_to.AMOUNT := p_from.AMOUNT;
1564     p_to.currency_code := p_from.currency_code;
1565     p_to.subsidy_yn := p_from.subsidy_yn;
1566     p_to.cash_applied_yn := p_from.cash_applied_yn;
1567     p_to.object_version_number := p_from.object_version_number;
1568     p_to.attribute_category := p_from.attribute_category;
1569     p_to.attribute1 := p_from.attribute1;
1570     p_to.attribute2 := p_from.attribute2;
1571     p_to.attribute3 := p_from.attribute3;
1572     p_to.attribute4 := p_from.attribute4;
1573     p_to.attribute5 := p_from.attribute5;
1574     p_to.attribute6 := p_from.attribute6;
1575     p_to.attribute7 := p_from.attribute7;
1576     p_to.attribute8 := p_from.attribute8;
1577     p_to.attribute9 := p_from.attribute9;
1578     p_to.attribute10 := p_from.attribute10;
1579     p_to.attribute11 := p_from.attribute11;
1580     p_to.attribute12 := p_from.attribute12;
1581     p_to.attribute13 := p_from.attribute13;
1582     p_to.attribute14 := p_from.attribute14;
1583     p_to.attribute15 := p_from.attribute15;
1584     p_to.org_id := p_from.org_id;
1585     p_to.request_id := p_from.request_id;
1586     p_to.program_application_id := p_from.program_application_id;
1587     p_to.program_id := p_from.program_id;
1588     p_to.program_update_date := p_from.program_update_date;
1589     p_to.created_by := p_from.created_by;
1590     p_to.creation_date := p_from.creation_date;
1591     p_to.last_updated_by := p_from.last_updated_by;
1592     p_to.last_update_date := p_from.last_update_date;
1593     p_to.last_update_login := p_from.last_update_login;
1594     p_to.minimum_rate := p_from.minimum_rate;
1595     p_to.maximum_rate := p_from.maximum_rate;
1596     p_to.tolerance := p_from.tolerance;
1597     p_to.adjustment_frequency_code := p_from.adjustment_frequency_code;
1598     p_to.base_rate := p_from.base_rate;
1599     p_to.index_name := p_from.index_name;
1600     p_to.variable_method_code := p_from.variable_method_code;
1601     p_to.adder := p_from.adder;
1602     p_to.days_in_year := p_from.days_in_year;
1603     p_to.days_in_month := p_from.days_in_month;
1604     p_to.interest_method_code := p_from.interest_method_code;
1605     p_to.interest_start_date := p_from.interest_start_date;
1606     p_to.method_of_calculation_code := p_from.method_of_calculation_code;
1607     p_to.request_number := p_from.request_number;
1608     p_to.date_of_conversion := p_from.date_of_conversion;
1609     p_to.variable_rate_yn := p_from.variable_rate_yn;
1610     p_to.request_status_code := p_from.request_status_code;
1611     p_to.yield := p_from.yield;
1612     p_to.residual := p_from.residual;
1613     p_to.comments := p_from.comments;
1614     p_to.payment_frequency_code := p_from.payment_frequency_code;
1615     p_to.restructure_date := p_from.restructure_date;
1616     p_to.past_due_yn := p_from.past_due_yn;
1617     p_to.request_reason_code := p_from.request_reason_code;
1618     p_to.parent_khr_id := p_from.parent_khr_id;
1619     p_to.yield_type := p_from.yield_type;
1620     p_to.payment_amount := p_from.payment_amount;
1621     p_to.payment_date := p_from.payment_date;
1622     p_to.paydown_type := p_from.paydown_type;
1623     p_to.currency_conversion_type := p_from.currency_conversion_type;
1624     p_to.currency_conversion_rate := p_from.currency_conversion_rate;
1625     p_to.currency_conversion_date := p_from.currency_conversion_date;
1626     p_to.lsm_id := p_from.lsm_id;
1627     p_to.receipt_id := p_from.receipt_id;
1628     p_to.tcn_id := p_from.tcn_id;
1629     p_to.try_id := p_from.try_id;
1630     p_to.CUR_PRINCIPAL_BALANCE := p_from.CUR_PRINCIPAL_BALANCE; --BUG#5083582
1631     p_to.CUR_ACCUM_INTEREST := p_from.CUR_ACCUM_INTEREST; --BUG#5083582
1632     p_to.legal_entity_id := p_from.legal_entity_id;
1633   END migrate;
1634   PROCEDURE migrate (
1635     p_from IN trq_rec_type,
1636     p_to   IN OUT NOCOPY trqv_rec_type
1637   ) IS
1638   BEGIN
1639     p_to.id := p_from.id;
1640     p_to.object1_id1 := p_from.object1_id1;
1641     p_to.object1_id2 := p_from.object1_id2;
1642     p_to.jtot_object1_code := p_from.jtot_object1_code;
1643     p_to.dnz_khr_id := p_from.dnz_khr_id;
1644     p_to.request_type_code := p_from.request_type_code;
1645     p_to.apply_to_code := p_from.apply_to_code;
1646     p_to.start_date := p_from.start_date;
1647     p_to.end_date := p_from.end_date;
1648     p_to.term_duration := p_from.term_duration;
1649     p_to.AMOUNT := p_from.AMOUNT;
1650     p_to.currency_code := p_from.currency_code;
1651     p_to.subsidy_yn := p_from.subsidy_yn;
1652     p_to.cash_applied_yn := p_from.cash_applied_yn;
1653     p_to.object_version_number := p_from.object_version_number;
1654     p_to.attribute_category := p_from.attribute_category;
1655     p_to.attribute1 := p_from.attribute1;
1656     p_to.attribute2 := p_from.attribute2;
1657     p_to.attribute3 := p_from.attribute3;
1658     p_to.attribute4 := p_from.attribute4;
1659     p_to.attribute5 := p_from.attribute5;
1660     p_to.attribute6 := p_from.attribute6;
1661     p_to.attribute7 := p_from.attribute7;
1662     p_to.attribute8 := p_from.attribute8;
1663     p_to.attribute9 := p_from.attribute9;
1664     p_to.attribute10 := p_from.attribute10;
1665     p_to.attribute11 := p_from.attribute11;
1666     p_to.attribute12 := p_from.attribute12;
1667     p_to.attribute13 := p_from.attribute13;
1668     p_to.attribute14 := p_from.attribute14;
1669     p_to.attribute15 := p_from.attribute15;
1670     p_to.org_id := p_from.org_id;
1671     p_to.request_id := p_from.request_id;
1672     p_to.program_application_id := p_from.program_application_id;
1673     p_to.program_id := p_from.program_id;
1674     p_to.program_update_date := p_from.program_update_date;
1675     p_to.created_by := p_from.created_by;
1676     p_to.creation_date := p_from.creation_date;
1677     p_to.last_updated_by := p_from.last_updated_by;
1678     p_to.last_update_date := p_from.last_update_date;
1679     p_to.last_update_login := p_from.last_update_login;
1680     p_to.minimum_rate := p_from.minimum_rate;
1681     p_to.maximum_rate := p_from.maximum_rate;
1682     p_to.tolerance := p_from.tolerance;
1683     p_to.adjustment_frequency_code := p_from.adjustment_frequency_code;
1684     p_to.base_rate := p_from.base_rate;
1685     p_to.index_name := p_from.index_name;
1686     p_to.variable_method_code := p_from.variable_method_code;
1687     p_to.adder := p_from.adder;
1688     p_to.days_in_year := p_from.days_in_year;
1689     p_to.days_in_month := p_from.days_in_month;
1690     p_to.interest_method_code := p_from.interest_method_code;
1691     p_to.interest_start_date := p_from.interest_start_date;
1692     p_to.method_of_calculation_code := p_from.method_of_calculation_code;
1693     p_to.request_number := p_from.request_number;
1694     p_to.date_of_conversion := p_from.date_of_conversion;
1695     p_to.variable_rate_yn := p_from.variable_rate_yn;
1696     p_to.request_status_code := p_from.request_status_code;
1697     p_to.yield := p_from.yield;
1698     p_to.residual := p_from.residual;
1699     p_to.comments := p_from.comments;
1700     p_to.payment_frequency_code := p_from.payment_frequency_code;
1701     p_to.restructure_date := p_from.restructure_date;
1702     p_to.past_due_yn := p_from.past_due_yn;
1703     p_to.request_reason_code := p_from.request_reason_code;
1704     p_to.parent_khr_id := p_from.parent_khr_id;
1705     p_to.yield_type := p_from.yield_type;
1706     p_to.payment_amount := p_from.payment_amount;
1707     p_to.payment_date := p_from.payment_date;
1708     p_to.paydown_type := p_from.paydown_type;
1709     p_to.currency_conversion_type := p_from.currency_conversion_type;
1710     p_to.currency_conversion_rate := p_from.currency_conversion_rate;
1711     p_to.currency_conversion_date := p_from.currency_conversion_date;
1712     p_to.lsm_id := p_from.lsm_id;
1713     p_to.receipt_id := p_from.receipt_id;
1714     p_to.tcn_id := p_from.tcn_id;
1715     p_to.try_id := p_from.try_id;
1716     p_to.CUR_PRINCIPAL_BALANCE := p_from.CUR_PRINCIPAL_BALANCE; --BUG#5083582
1717     p_to.CUR_ACCUM_INTEREST := p_from.CUR_ACCUM_INTEREST; --BUG#5083582
1718     p_to.legal_entity_id := p_from.legal_entity_id;
1719   END migrate;
1720   ---------------------------------------------------------------------------
1721   -- PROCEDURE validate_row
1722   ---------------------------------------------------------------------------
1723   -----------------------------------------
1724   -- validate_row for:OKL_TRX_REQUESTS_V --
1725   -----------------------------------------
1726   PROCEDURE validate_row(
1727     p_api_version                  IN NUMBER,
1728     p_init_msg_list                IN VARCHAR2 ,
1729     x_return_status                OUT NOCOPY VARCHAR2,
1730     x_msg_count                    OUT NOCOPY NUMBER,
1731     x_msg_data                     OUT NOCOPY VARCHAR2,
1732     p_trqv_rec                     IN trqv_rec_type) IS
1733 
1734     l_api_version                  CONSTANT NUMBER := 1;
1735     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1736     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1737     l_trqv_rec                     trqv_rec_type := p_trqv_rec;
1738     l_trq_rec                      trq_rec_type;
1739     l_trq_rec                      trq_rec_type;
1740   BEGIN
1741     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1742                                               G_PKG_NAME,
1743                                               p_init_msg_list,
1744                                               l_api_version,
1745                                               p_api_version,
1746                                               '_PVT',
1747                                               x_return_status);
1748     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1749       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1750     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1751       RAISE OKL_API.G_EXCEPTION_ERROR;
1752     END IF;
1753     --- Validate all non-missing attributes (Item Level Validation)
1754     l_return_status := Validate_Attributes(l_trqv_rec);
1755     --- If any errors happen abort API
1756     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1757       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1758     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1759       RAISE OKL_API.G_EXCEPTION_ERROR;
1760     END IF;
1761     l_return_status := Validate_Record(l_trqv_rec);
1762     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1763       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1764     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1765       RAISE OKL_API.G_EXCEPTION_ERROR;
1766     END IF;
1767     x_return_status := l_return_status;
1768   EXCEPTION
1769     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1770       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1771       (
1772         l_api_name,
1773         G_PKG_NAME,
1774         'OKL_API.G_RET_STS_ERROR',
1775         x_msg_count,
1776         x_msg_data,
1777         '_PVT'
1778       );
1779     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1780       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1781       (
1782         l_api_name,
1783         G_PKG_NAME,
1784         'OKL_API.G_RET_STS_UNEXP_ERROR',
1785         x_msg_count,
1786         x_msg_data,
1787         '_PVT'
1788       );
1789     WHEN OTHERS THEN
1790       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1791       (
1792         l_api_name,
1793         G_PKG_NAME,
1794         'OTHERS',
1795         x_msg_count,
1796         x_msg_data,
1797         '_PVT'
1798       );
1799   END validate_row;
1800   ----------------------------------------------------
1801   -- PL/SQL TBL validate_row for:OKL_TRX_REQUESTS_V --
1802   ----------------------------------------------------
1803   PROCEDURE validate_row(
1804     p_api_version                  IN NUMBER,
1805     p_init_msg_list                IN VARCHAR2 ,
1806     x_return_status                OUT NOCOPY VARCHAR2,
1807     x_msg_count                    OUT NOCOPY NUMBER,
1808     x_msg_data                     OUT NOCOPY VARCHAR2,
1809     p_trqv_tbl                     IN trqv_tbl_type,
1810     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1811 
1812     l_api_version                  CONSTANT NUMBER := 1;
1813     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1814     i                              NUMBER := 0;
1815   BEGIN
1816     OKL_API.init_msg_list(p_init_msg_list);
1817     -- Make sure PL/SQL table has records in it before passing
1818     IF (p_trqv_tbl.COUNT > 0) THEN
1819       i := p_trqv_tbl.FIRST;
1820       LOOP
1821         DECLARE
1822           l_error_rec         OKL_API.ERROR_REC_TYPE;
1823         BEGIN
1824           l_error_rec.api_name := l_api_name;
1825           l_error_rec.api_package := G_PKG_NAME;
1826           l_error_rec.idx := i;
1827           validate_row (
1828             p_api_version                  => p_api_version,
1829             p_init_msg_list                => OKL_API.G_FALSE,
1830             x_return_status                => l_error_rec.error_type,
1831             x_msg_count                    => l_error_rec.msg_count,
1832             x_msg_data                     => l_error_rec.msg_data,
1833             p_trqv_rec                     => p_trqv_tbl(i));
1834           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1835             l_error_rec.sqlcode := SQLCODE;
1836             load_error_tbl(l_error_rec, px_error_tbl);
1837           ELSE
1838             x_msg_count := l_error_rec.msg_count;
1839             x_msg_data := l_error_rec.msg_data;
1840           END IF;
1841         EXCEPTION
1842           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1843             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1844             l_error_rec.sqlcode := SQLCODE;
1845             load_error_tbl(l_error_rec, px_error_tbl);
1846           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1847             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1848             l_error_rec.sqlcode := SQLCODE;
1849             load_error_tbl(l_error_rec, px_error_tbl);
1850           WHEN OTHERS THEN
1851             l_error_rec.error_type := 'OTHERS';
1852             l_error_rec.sqlcode := SQLCODE;
1853             load_error_tbl(l_error_rec, px_error_tbl);
1854         END;
1855         EXIT WHEN (i = p_trqv_tbl.LAST);
1856         i := p_trqv_tbl.NEXT(i);
1857       END LOOP;
1858     END IF;
1859     -- Loop through the error_tbl to find the error with the highest severity
1860     -- and return it.
1861     x_return_status := find_highest_exception(px_error_tbl);
1862     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1863   EXCEPTION
1864     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1865       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1866       (
1867         l_api_name,
1868         G_PKG_NAME,
1869         'OKL_API.G_RET_STS_ERROR',
1870         x_msg_count,
1871         x_msg_data,
1872         '_PVT'
1873       );
1874     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1875       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1876       (
1877         l_api_name,
1878         G_PKG_NAME,
1879         'OKL_API.G_RET_STS_UNEXP_ERROR',
1880         x_msg_count,
1881         x_msg_data,
1882         '_PVT'
1883       );
1884     WHEN OTHERS THEN
1885       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1886       (
1887         l_api_name,
1888         G_PKG_NAME,
1889         'OTHERS',
1890         x_msg_count,
1891         x_msg_data,
1892         '_PVT'
1893       );
1894   END validate_row;
1895 
1896   ----------------------------------------------------
1897   -- PL/SQL TBL validate_row for:OKL_TRX_REQUESTS_V --
1898   ----------------------------------------------------
1899   PROCEDURE validate_row(
1900     p_api_version                  IN NUMBER,
1901     p_init_msg_list                IN VARCHAR2 ,
1902     x_return_status                OUT NOCOPY VARCHAR2,
1903     x_msg_count                    OUT NOCOPY NUMBER,
1904     x_msg_data                     OUT NOCOPY VARCHAR2,
1905     p_trqv_tbl                     IN trqv_tbl_type) IS
1906 
1907     l_api_version                  CONSTANT NUMBER := 1;
1908     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1909     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1910     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1911   BEGIN
1912     OKL_API.init_msg_list(p_init_msg_list);
1913     -- Make sure PL/SQL table has records in it before passing
1914     IF (p_trqv_tbl.COUNT > 0) THEN
1915       validate_row (
1916         p_api_version                  => p_api_version,
1917         p_init_msg_list                => OKL_API.G_FALSE,
1918         x_return_status                => x_return_status,
1919         x_msg_count                    => x_msg_count,
1920         x_msg_data                     => x_msg_data,
1921         p_trqv_tbl                     => p_trqv_tbl,
1922         px_error_tbl                   => l_error_tbl);
1923     END IF;
1924     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1925   EXCEPTION
1926     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1927       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1928       (
1929         l_api_name,
1930         G_PKG_NAME,
1931         'OKL_API.G_RET_STS_ERROR',
1932         x_msg_count,
1933         x_msg_data,
1934         '_PVT'
1935       );
1936     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1937       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1938       (
1939         l_api_name,
1940         G_PKG_NAME,
1941         'OKL_API.G_RET_STS_UNEXP_ERROR',
1942         x_msg_count,
1943         x_msg_data,
1944         '_PVT'
1945       );
1946     WHEN OTHERS THEN
1947       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1948       (
1949         l_api_name,
1950         G_PKG_NAME,
1951         'OTHERS',
1952         x_msg_count,
1953         x_msg_data,
1954         '_PVT'
1955       );
1956   END validate_row;
1957 
1958   ---------------------------------------------------------------------------
1959   -- PROCEDURE insert_row
1960   ---------------------------------------------------------------------------
1961   -------------------------------------
1962   -- insert_row for:OKL_TRX_REQUESTS --
1963   -------------------------------------
1964   PROCEDURE insert_row(
1965     p_init_msg_list                IN VARCHAR2 ,
1966     x_return_status                OUT NOCOPY VARCHAR2,
1967     x_msg_count                    OUT NOCOPY NUMBER,
1968     x_msg_data                     OUT NOCOPY VARCHAR2,
1969     p_trq_rec                      IN trq_rec_type,
1970     x_trq_rec                      OUT NOCOPY trq_rec_type) IS
1971 
1972     l_api_version                  CONSTANT NUMBER := 1;
1973     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1974     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1975     l_trq_rec                      trq_rec_type := p_trq_rec;
1976     l_def_trq_rec                  trq_rec_type;
1977     -----------------------------------------
1978     -- Set_Attributes for:OKL_TRX_REQUESTS --
1979     -----------------------------------------
1980     FUNCTION Set_Attributes (
1981       p_trq_rec IN trq_rec_type,
1982       x_trq_rec OUT NOCOPY trq_rec_type
1983     ) RETURN VARCHAR2 IS
1984       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1985     BEGIN
1986       x_trq_rec := p_trq_rec;
1987       RETURN(l_return_status);
1988     END Set_Attributes;
1989   BEGIN
1990     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1991                                               p_init_msg_list,
1992                                               '_PVT',
1993                                               x_return_status);
1994     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1995       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1996     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1997       RAISE OKL_API.G_EXCEPTION_ERROR;
1998     END IF;
1999     --- Setting item atributes
2000     l_return_status := Set_Attributes(
2001       p_trq_rec,                         -- IN
2002       l_trq_rec);                        -- OUT
2003     --- If any errors happen abort API
2004     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2005       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2006     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2007       RAISE OKL_API.G_EXCEPTION_ERROR;
2008     END IF;
2009     INSERT INTO OKL_TRX_REQUESTS(
2010       id,
2011       object1_id1,
2012       object1_id2,
2013       jtot_object1_code,
2014       dnz_khr_id,
2015       request_type_code,
2016       apply_to_code,
2017       start_date,
2018       end_date,
2019       term_duration,
2020       AMOUNT,
2021       currency_code,
2022       subsidy_yn,
2023       cash_applied_yn,
2024       object_version_number,
2025       attribute_category,
2026       attribute1,
2027       attribute2,
2028       attribute3,
2029       attribute4,
2030       attribute5,
2031       attribute6,
2032       attribute7,
2033       attribute8,
2034       attribute9,
2035       attribute10,
2036       attribute11,
2037       attribute12,
2038       attribute13,
2039       attribute14,
2040       attribute15,
2041       org_id,
2042       request_id,
2043       program_application_id,
2044       program_id,
2045       program_update_date,
2046       created_by,
2047       creation_date,
2048       last_updated_by,
2049       last_update_date,
2050       last_update_login,
2051       minimum_rate,
2052       maximum_rate,
2053       tolerance,
2054       adjustment_frequency_code,
2055       base_rate,
2056       index_name,
2057       variable_method_code,
2058       adder,
2059       days_in_year,
2060       days_in_month,
2061       interest_method_code,
2062       interest_start_date,
2063       method_of_calculation_code,
2064       request_number,
2065       date_of_conversion,
2066       variable_rate_yn,
2067       request_status_code,
2068       yield,
2069       residual,
2070       comments,
2071       payment_frequency_code,
2072       restructure_date,
2073       past_due_yn,
2074       request_reason_code,
2075       parent_khr_id,
2076       yield_type,
2077       payment_amount,
2078       payment_date,
2079       paydown_type,
2080       currency_conversion_type,
2081       currency_conversion_rate,
2082       currency_conversion_date,
2083       lsm_id,
2084       receipt_id,
2085       tcn_id,
2086       try_id,
2087       CUR_PRINCIPAL_BALANCE, --BUG#5083582
2088       CUR_ACCUM_INTEREST, --BUG#5083582
2089       legal_entity_id )
2090     VALUES (
2091       l_trq_rec.id,
2092       l_trq_rec.object1_id1,
2093       l_trq_rec.object1_id2,
2094       l_trq_rec.jtot_object1_code,
2095       l_trq_rec.dnz_khr_id,
2096       l_trq_rec.request_type_code,
2097       l_trq_rec.apply_to_code,
2098       l_trq_rec.start_date,
2099       l_trq_rec.end_date,
2100       l_trq_rec.term_duration,
2101       l_trq_rec.AMOUNT,
2102       l_trq_rec.currency_code,
2103       l_trq_rec.subsidy_yn,
2104       l_trq_rec.cash_applied_yn,
2105       l_trq_rec.object_version_number,
2106       l_trq_rec.attribute_category,
2107       l_trq_rec.attribute1,
2108       l_trq_rec.attribute2,
2109       l_trq_rec.attribute3,
2110       l_trq_rec.attribute4,
2111       l_trq_rec.attribute5,
2112       l_trq_rec.attribute6,
2113       l_trq_rec.attribute7,
2114       l_trq_rec.attribute8,
2115       l_trq_rec.attribute9,
2116       l_trq_rec.attribute10,
2117       l_trq_rec.attribute11,
2118       l_trq_rec.attribute12,
2119       l_trq_rec.attribute13,
2120       l_trq_rec.attribute14,
2121       l_trq_rec.attribute15,
2122       l_trq_rec.org_id,
2123       l_trq_rec.request_id,
2124       l_trq_rec.program_application_id,
2125       l_trq_rec.program_id,
2126       l_trq_rec.program_update_date,
2127       l_trq_rec.created_by,
2128       l_trq_rec.creation_date,
2129       l_trq_rec.last_updated_by,
2130       l_trq_rec.last_update_date,
2131       l_trq_rec.last_update_login,
2132       l_trq_rec.minimum_rate,
2133       l_trq_rec.maximum_rate,
2134       l_trq_rec.tolerance,
2135       l_trq_rec.adjustment_frequency_code,
2136       l_trq_rec.base_rate,
2137       l_trq_rec.index_name,
2138       l_trq_rec.variable_method_code,
2139       l_trq_rec.adder,
2140       l_trq_rec.days_in_year,
2141       l_trq_rec.days_in_month,
2142       l_trq_rec.interest_method_code,
2143       l_trq_rec.interest_start_date,
2144       l_trq_rec.method_of_calculation_code,
2145       l_trq_rec.request_number,
2146       l_trq_rec.date_of_conversion,
2147       l_trq_rec.variable_rate_yn,
2148       l_trq_rec.request_status_code,
2149       l_trq_rec.yield,
2150       l_trq_rec.residual,
2151       l_trq_rec.comments,
2152       l_trq_rec.payment_frequency_code,
2153       l_trq_rec.restructure_date,
2154       l_trq_rec.past_due_yn,
2155       l_trq_rec.request_reason_code,
2156       l_trq_rec.parent_khr_id,
2157       l_trq_rec.yield_type,
2158       l_trq_rec.payment_amount,
2159       l_trq_rec.payment_date,
2160       l_trq_rec.paydown_type,
2161       l_trq_rec.currency_conversion_type,
2162       l_trq_rec.currency_conversion_rate,
2163       l_trq_rec.currency_conversion_date,
2164       l_trq_rec.lsm_id,
2165       l_trq_rec.receipt_id,
2166       l_trq_rec.tcn_id,
2167       l_trq_rec.try_id,
2168       l_trq_rec.CUR_PRINCIPAL_BALANCE, --BUG#5083582
2169       l_trq_rec.CUR_ACCUM_INTEREST, --BUG#5083582
2170       l_trq_rec.legal_entity_id );
2171     -- Set OUT values
2172     x_trq_rec := l_trq_rec;
2173     x_return_status := l_return_status;
2174     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2175   EXCEPTION
2176     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2177       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2178       (
2179         l_api_name,
2180         G_PKG_NAME,
2181         'OKL_API.G_RET_STS_ERROR',
2182         x_msg_count,
2183         x_msg_data,
2184         '_PVT'
2185       );
2186     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2187       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2188       (
2189         l_api_name,
2190         G_PKG_NAME,
2191         'OKL_API.G_RET_STS_UNEXP_ERROR',
2192         x_msg_count,
2193         x_msg_data,
2194         '_PVT'
2195       );
2196     WHEN OTHERS THEN
2197       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2198       (
2199         l_api_name,
2200         G_PKG_NAME,
2201         'OTHERS',
2202         x_msg_count,
2203         x_msg_data,
2204         '_PVT'
2205       );
2206   END insert_row;
2207   ----------------------------------------
2208   -- insert_row for :OKL_TRX_REQUESTS_V --
2209   ----------------------------------------
2210   PROCEDURE insert_row(
2211     p_api_version                  IN NUMBER,
2212     p_init_msg_list                IN VARCHAR2 ,
2213     x_return_status                OUT NOCOPY VARCHAR2,
2214     x_msg_count                    OUT NOCOPY NUMBER,
2215     x_msg_data                     OUT NOCOPY VARCHAR2,
2216     p_trqv_rec                     IN trqv_rec_type,
2217     x_trqv_rec                     OUT NOCOPY trqv_rec_type) IS
2218 
2219     l_api_version                  CONSTANT NUMBER := 1;
2220     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2221     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2222     l_trqv_rec                     trqv_rec_type := p_trqv_rec;
2223     l_def_trqv_rec                 trqv_rec_type;
2224     l_trq_rec                      trq_rec_type;
2225     lx_trq_rec                     trq_rec_type;
2226     -------------------------------
2227     -- FUNCTION fill_who_columns --
2228     -------------------------------
2229     FUNCTION fill_who_columns (
2230       p_trqv_rec IN trqv_rec_type
2231     ) RETURN trqv_rec_type IS
2232       l_trqv_rec trqv_rec_type := p_trqv_rec;
2233     BEGIN
2234       l_trqv_rec.CREATION_DATE := SYSDATE;
2235       l_trqv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2236       l_trqv_rec.LAST_UPDATE_DATE := l_trqv_rec.CREATION_DATE;
2237       l_trqv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2238       l_trqv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2239       RETURN(l_trqv_rec);
2240     END fill_who_columns;
2241     -------------------------------------------
2242     -- Set_Attributes for:OKL_TRX_REQUESTS_V --
2243     -------------------------------------------
2244     FUNCTION Set_Attributes (
2245       p_trqv_rec IN trqv_rec_type,
2246       x_trqv_rec OUT NOCOPY trqv_rec_type
2247     ) RETURN VARCHAR2 IS
2248       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2249      --Hand coded
2250      CURSOR req_num_seq
2251        IS
2252       select OKL_TRQ_SEQ.nextval
2253       from dual;
2254      --End Hand coding
2255     BEGIN
2256       x_trqv_rec := p_trqv_rec;
2257       x_trqv_rec.OBJECT_VERSION_NUMBER := 1;
2258       --Hand coded this.
2259       OPEN req_num_seq;
2260       FETCH req_num_seq INTO x_trqv_rec.request_number;
2261       CLOSE req_num_seq;
2262       --end hand coding
2263 
2264       RETURN(l_return_status);
2265     END Set_Attributes;
2266 
2267   BEGIN
2268     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2269                                               G_PKG_NAME,
2270                                               p_init_msg_list,
2271                                               l_api_version,
2272                                               p_api_version,
2273                                               '_PVT',
2274                                               x_return_status);
2275     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2276       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2277     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2278       RAISE OKL_API.G_EXCEPTION_ERROR;
2279     END IF;
2280     l_trqv_rec := null_out_defaults(p_trqv_rec);
2281     -- Set primary key value
2282     l_trqv_rec.ID := get_seq_id;
2283     -- Setting item attributes
2284 
2285     IF l_trqv_rec.legal_entity_id IS NULL THEN
2286       l_trqv_rec.legal_entity_id := okl_legal_entity_util.get_khr_le_id(l_trqv_rec.dnz_khr_id);
2287     END IF;
2288     --dkagrawa added for MOAC issue
2289     IF l_trqv_rec.org_id IS NULL THEN
2290       l_trqv_rec.org_id := mo_global.get_current_org_id();
2291     END IF;
2292 
2293     l_return_Status := Set_Attributes(
2294       l_trqv_rec,                        -- IN
2295       l_def_trqv_rec);                   -- OUT
2296     --- If any errors happen abort API
2297     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2298       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2299     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2300       RAISE OKL_API.G_EXCEPTION_ERROR;
2301     END IF;
2302     l_def_trqv_rec := fill_who_columns(l_def_trqv_rec);
2303     --- Validate all non-missing attributes (Item Level Validation)
2304     l_return_status := Validate_Attributes(l_def_trqv_rec);
2305     --- If any errors happen abort API
2306     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2307       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2308     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2309       RAISE OKL_API.G_EXCEPTION_ERROR;
2310     END IF;
2311     l_return_status := Validate_Record(l_def_trqv_rec);
2312     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2313       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2314     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2315       RAISE OKL_API.G_EXCEPTION_ERROR;
2316     END IF;
2317     -----------------------------------------
2318     -- Move VIEW record to "Child" records --
2319     -----------------------------------------
2320     migrate(l_def_trqv_rec, l_trq_rec);
2321     -----------------------------------------------
2322     -- Call the INSERT_ROW for each child record --
2323     -----------------------------------------------
2324     insert_row(
2325       p_init_msg_list,
2326       l_return_status,
2327       x_msg_count,
2328       x_msg_data,
2329       l_trq_rec,
2330       lx_trq_rec
2331     );
2332     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2333       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2334     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2335       RAISE OKL_API.G_EXCEPTION_ERROR;
2336     END IF;
2337     migrate(lx_trq_rec, l_def_trqv_rec);
2338     -- Set OUT values
2339     x_trqv_rec := l_def_trqv_rec;
2340     x_return_status := l_return_status;
2341     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2342   EXCEPTION
2343     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2344       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2345       (
2346         l_api_name,
2347         G_PKG_NAME,
2348         'OKL_API.G_RET_STS_ERROR',
2349         x_msg_count,
2350         x_msg_data,
2351         '_PVT'
2352       );
2353     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2354       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2355       (
2356         l_api_name,
2357         G_PKG_NAME,
2358         'OKL_API.G_RET_STS_UNEXP_ERROR',
2359         x_msg_count,
2360         x_msg_data,
2361         '_PVT'
2362       );
2363     WHEN OTHERS THEN
2364       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2365       (
2366         l_api_name,
2367         G_PKG_NAME,
2368         'OTHERS',
2369         x_msg_count,
2370         x_msg_data,
2371         '_PVT'
2372       );
2373   END insert_row;
2374   ----------------------------------------
2375   -- PL/SQL TBL insert_row for:TRQV_TBL --
2376   ----------------------------------------
2377   PROCEDURE insert_row(
2378     p_api_version                  IN NUMBER,
2379     p_init_msg_list                IN VARCHAR2 ,
2380     x_return_status                OUT NOCOPY VARCHAR2,
2381     x_msg_count                    OUT NOCOPY NUMBER,
2382     x_msg_data                     OUT NOCOPY VARCHAR2,
2383     p_trqv_tbl                     IN trqv_tbl_type,
2384     x_trqv_tbl                     OUT NOCOPY trqv_tbl_type,
2385     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2386 
2387     l_api_version                  CONSTANT NUMBER := 1;
2388     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
2389     i                              NUMBER := 0;
2390   BEGIN
2391     OKL_API.init_msg_list(p_init_msg_list);
2392     -- Make sure PL/SQL table has records in it before passing
2393     IF (p_trqv_tbl.COUNT > 0) THEN
2394       i := p_trqv_tbl.FIRST;
2395       LOOP
2396         DECLARE
2397           l_error_rec         OKL_API.ERROR_REC_TYPE;
2398         BEGIN
2399           l_error_rec.api_name := l_api_name;
2400           l_error_rec.api_package := G_PKG_NAME;
2401           l_error_rec.idx := i;
2402           insert_row (
2403             p_api_version                  => p_api_version,
2404             p_init_msg_list                => OKL_API.G_FALSE,
2405             x_return_status                => l_error_rec.error_type,
2406             x_msg_count                    => l_error_rec.msg_count,
2407             x_msg_data                     => l_error_rec.msg_data,
2408             p_trqv_rec                     => p_trqv_tbl(i),
2409             x_trqv_rec                     => x_trqv_tbl(i));
2410           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2411             l_error_rec.sqlcode := SQLCODE;
2412             load_error_tbl(l_error_rec, px_error_tbl);
2413           ELSE
2414             x_msg_count := l_error_rec.msg_count;
2415             x_msg_data := l_error_rec.msg_data;
2416           END IF;
2417         EXCEPTION
2418           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2419             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2420             l_error_rec.sqlcode := SQLCODE;
2421             load_error_tbl(l_error_rec, px_error_tbl);
2422           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2423             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2424             l_error_rec.sqlcode := SQLCODE;
2425             load_error_tbl(l_error_rec, px_error_tbl);
2426           WHEN OTHERS THEN
2427             l_error_rec.error_type := 'OTHERS';
2428             l_error_rec.sqlcode := SQLCODE;
2429             load_error_tbl(l_error_rec, px_error_tbl);
2430         END;
2431         EXIT WHEN (i = p_trqv_tbl.LAST);
2432         i := p_trqv_tbl.NEXT(i);
2433       END LOOP;
2434     END IF;
2435     -- Loop through the error_tbl to find the error with the highest severity
2436     -- and return it.
2437     x_return_status := find_highest_exception(px_error_tbl);
2438     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2439   EXCEPTION
2440     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2441       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2442       (
2443         l_api_name,
2444         G_PKG_NAME,
2445         'OKL_API.G_RET_STS_ERROR',
2446         x_msg_count,
2447         x_msg_data,
2448         '_PVT'
2449       );
2450     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2451       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2452       (
2453         l_api_name,
2454         G_PKG_NAME,
2455         'OKL_API.G_RET_STS_UNEXP_ERROR',
2456         x_msg_count,
2457         x_msg_data,
2458         '_PVT'
2459       );
2460     WHEN OTHERS THEN
2461       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2462       (
2463         l_api_name,
2464         G_PKG_NAME,
2465         'OTHERS',
2466         x_msg_count,
2467         x_msg_data,
2468         '_PVT'
2469       );
2470   END insert_row;
2471 
2472   ----------------------------------------
2473   -- PL/SQL TBL insert_row for:TRQV_TBL --
2474   ----------------------------------------
2475   PROCEDURE insert_row(
2476     p_api_version                  IN NUMBER,
2477     p_init_msg_list                IN VARCHAR2 ,
2478     x_return_status                OUT NOCOPY VARCHAR2,
2479     x_msg_count                    OUT NOCOPY NUMBER,
2480     x_msg_data                     OUT NOCOPY VARCHAR2,
2481     p_trqv_tbl                     IN trqv_tbl_type,
2482     x_trqv_tbl                     OUT NOCOPY trqv_tbl_type) IS
2483 
2484     l_api_version                  CONSTANT NUMBER := 1;
2485     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
2486     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2487     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2488   BEGIN
2489     OKL_API.init_msg_list(p_init_msg_list);
2490     -- Make sure PL/SQL table has records in it before passing
2491     IF (p_trqv_tbl.COUNT > 0) THEN
2492       insert_row (
2493         p_api_version                  => p_api_version,
2494         p_init_msg_list                => OKL_API.G_FALSE,
2495         x_return_status                => x_return_status,
2496         x_msg_count                    => x_msg_count,
2497         x_msg_data                     => x_msg_data,
2498         p_trqv_tbl                     => p_trqv_tbl,
2499         x_trqv_tbl                     => x_trqv_tbl,
2500         px_error_tbl                   => l_error_tbl);
2501     END IF;
2502     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2503   EXCEPTION
2504     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2505       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2506       (
2507         l_api_name,
2508         G_PKG_NAME,
2509         'OKL_API.G_RET_STS_ERROR',
2510         x_msg_count,
2511         x_msg_data,
2512         '_PVT'
2513       );
2514     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2515       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2516       (
2517         l_api_name,
2518         G_PKG_NAME,
2519         'OKL_API.G_RET_STS_UNEXP_ERROR',
2520         x_msg_count,
2521         x_msg_data,
2522         '_PVT'
2523       );
2524     WHEN OTHERS THEN
2525       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2526       (
2527         l_api_name,
2528         G_PKG_NAME,
2529         'OTHERS',
2530         x_msg_count,
2531         x_msg_data,
2532         '_PVT'
2533       );
2534   END insert_row;
2535 
2536   ---------------------------------------------------------------------------
2537   -- PROCEDURE lock_row
2538   ---------------------------------------------------------------------------
2539   -----------------------------------
2540   -- lock_row for:OKL_TRX_REQUESTS --
2541   -----------------------------------
2542   PROCEDURE lock_row(
2543     p_init_msg_list                IN VARCHAR2 ,
2544     x_return_status                OUT NOCOPY VARCHAR2,
2545     x_msg_count                    OUT NOCOPY NUMBER,
2546     x_msg_data                     OUT NOCOPY VARCHAR2,
2547     p_trq_rec                      IN trq_rec_type) IS
2548 
2549     E_Resource_Busy                EXCEPTION;
2550     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2551     CURSOR lock_csr (p_trq_rec IN trq_rec_type) IS
2552     SELECT OBJECT_VERSION_NUMBER
2553       FROM OKL_TRX_REQUESTS
2554      WHERE ID = p_trq_rec.id
2555        AND OBJECT_VERSION_NUMBER = p_trq_rec.object_version_number
2556     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
2557 
2558     CURSOR lchk_csr (p_trq_rec IN trq_rec_type) IS
2559     SELECT OBJECT_VERSION_NUMBER
2560       FROM OKL_TRX_REQUESTS
2561      WHERE ID = p_trq_rec.id;
2562     l_api_version                  CONSTANT NUMBER := 1;
2563     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
2564     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2565     l_object_version_number        OKL_TRX_REQUESTS.OBJECT_VERSION_NUMBER%TYPE;
2566     lc_object_version_number       OKL_TRX_REQUESTS.OBJECT_VERSION_NUMBER%TYPE;
2567     l_row_notfound                 BOOLEAN := FALSE;
2568     lc_row_notfound                BOOLEAN := FALSE;
2569   BEGIN
2570     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2571                                               p_init_msg_list,
2572                                               '_PVT',
2573                                               x_return_status);
2574     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2575       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2576     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2577       RAISE OKL_API.G_EXCEPTION_ERROR;
2578     END IF;
2579     BEGIN
2580       OPEN lock_csr(p_trq_rec);
2581       FETCH lock_csr INTO l_object_version_number;
2582       l_row_notfound := lock_csr%NOTFOUND;
2583       CLOSE lock_csr;
2584     EXCEPTION
2585       WHEN E_Resource_Busy THEN
2586         IF (lock_csr%ISOPEN) THEN
2587           CLOSE lock_csr;
2588         END IF;
2589         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2590         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2591     END;
2592 
2593     IF ( l_row_notfound ) THEN
2594       OPEN lchk_csr(p_trq_rec);
2595       FETCH lchk_csr INTO lc_object_version_number;
2596       lc_row_notfound := lchk_csr%NOTFOUND;
2597       CLOSE lchk_csr;
2598     END IF;
2599     IF (lc_row_notfound) THEN
2600       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2601       RAISE OKL_API.G_EXCEPTION_ERROR;
2602     ELSIF lc_object_version_number > p_trq_rec.object_version_number THEN
2603       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2604       RAISE OKL_API.G_EXCEPTION_ERROR;
2605     ELSIF lc_object_version_number <> p_trq_rec.object_version_number THEN
2606       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2607       RAISE OKL_API.G_EXCEPTION_ERROR;
2608     ELSIF lc_object_version_number = -1 THEN
2609       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2610       RAISE OKL_API.G_EXCEPTION_ERROR;
2611     END IF;
2612     x_return_status := l_return_status;
2613     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2614   EXCEPTION
2615     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2616       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2617       (
2618         l_api_name,
2619         G_PKG_NAME,
2620         'OKL_API.G_RET_STS_ERROR',
2621         x_msg_count,
2622         x_msg_data,
2623         '_PVT'
2624       );
2625     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2626       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2627       (
2628         l_api_name,
2629         G_PKG_NAME,
2630         'OKL_API.G_RET_STS_UNEXP_ERROR',
2631         x_msg_count,
2632         x_msg_data,
2633         '_PVT'
2634       );
2635     WHEN OTHERS THEN
2636       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2637       (
2638         l_api_name,
2639         G_PKG_NAME,
2640         'OTHERS',
2641         x_msg_count,
2642         x_msg_data,
2643         '_PVT'
2644       );
2645   END lock_row;
2646   --------------------------------------
2647   -- lock_row for: OKL_TRX_REQUESTS_V --
2648   --------------------------------------
2649   PROCEDURE lock_row(
2650     p_api_version                  IN NUMBER,
2651     p_init_msg_list                IN VARCHAR2 ,
2652     x_return_status                OUT NOCOPY VARCHAR2,
2653     x_msg_count                    OUT NOCOPY NUMBER,
2654     x_msg_data                     OUT NOCOPY VARCHAR2,
2655     p_trqv_rec                     IN trqv_rec_type) IS
2656 
2657     l_api_version                  CONSTANT NUMBER := 1;
2658     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2659     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2660     l_trq_rec                      trq_rec_type;
2661   BEGIN
2662     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2663                                               G_PKG_NAME,
2664                                               p_init_msg_list,
2665                                               l_api_version,
2666                                               p_api_version,
2667                                               '_PVT',
2668                                               x_return_status);
2669     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2670       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2671     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2672       RAISE OKL_API.G_EXCEPTION_ERROR;
2673     END IF;
2674     -----------------------------------------
2675     -- Move VIEW record to "Child" records --
2676     -----------------------------------------
2677     migrate(p_trqv_rec, l_trq_rec);
2678     ---------------------------------------------
2679     -- Call the LOCK_ROW for each child record --
2680     ---------------------------------------------
2681     lock_row(
2682       p_init_msg_list,
2683       l_return_status,
2684       x_msg_count,
2685       x_msg_data,
2686       l_trq_rec
2687     );
2688     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2689       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2690     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2691       RAISE OKL_API.G_EXCEPTION_ERROR;
2692     END IF;
2693     x_return_status := l_return_status;
2694     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2695   EXCEPTION
2696     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2697       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2698       (
2699         l_api_name,
2700         G_PKG_NAME,
2701         'OKL_API.G_RET_STS_ERROR',
2702         x_msg_count,
2703         x_msg_data,
2704         '_PVT'
2705       );
2706     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2707       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2708       (
2709         l_api_name,
2710         G_PKG_NAME,
2711         'OKL_API.G_RET_STS_UNEXP_ERROR',
2712         x_msg_count,
2713         x_msg_data,
2714         '_PVT'
2715       );
2716     WHEN OTHERS THEN
2717       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2718       (
2719         l_api_name,
2720         G_PKG_NAME,
2721         'OTHERS',
2722         x_msg_count,
2723         x_msg_data,
2724         '_PVT'
2725       );
2726   END lock_row;
2727   --------------------------------------
2728   -- PL/SQL TBL lock_row for:TRQV_TBL --
2729   --------------------------------------
2730   PROCEDURE lock_row(
2731     p_api_version                  IN NUMBER,
2732     p_init_msg_list                IN VARCHAR2 ,
2733     x_return_status                OUT NOCOPY VARCHAR2,
2734     x_msg_count                    OUT NOCOPY NUMBER,
2735     x_msg_data                     OUT NOCOPY VARCHAR2,
2736     p_trqv_tbl                     IN trqv_tbl_type,
2737     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2738 
2739     l_api_version                  CONSTANT NUMBER := 1;
2740     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
2741     i                              NUMBER := 0;
2742   BEGIN
2743     OKL_API.init_msg_list(p_init_msg_list);
2744     -- Make sure PL/SQL table has recrods in it before passing
2745     IF (p_trqv_tbl.COUNT > 0) THEN
2746       i := p_trqv_tbl.FIRST;
2747       LOOP
2748         DECLARE
2749           l_error_rec         OKL_API.ERROR_REC_TYPE;
2750         BEGIN
2751           l_error_rec.api_name := l_api_name;
2752           l_error_rec.api_package := G_PKG_NAME;
2753           l_error_rec.idx := i;
2754           lock_row(
2755             p_api_version                  => p_api_version,
2756             p_init_msg_list                => OKL_API.G_FALSE,
2757             x_return_status                => l_error_rec.error_type,
2758             x_msg_count                    => l_error_rec.msg_count,
2759             x_msg_data                     => l_error_rec.msg_data,
2760             p_trqv_rec                     => p_trqv_tbl(i));
2761           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2762             l_error_rec.sqlcode := SQLCODE;
2763             load_error_tbl(l_error_rec, px_error_tbl);
2764           ELSE
2765             x_msg_count := l_error_rec.msg_count;
2766             x_msg_data := l_error_rec.msg_data;
2767           END IF;
2768         EXCEPTION
2769           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2770             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2771             l_error_rec.sqlcode := SQLCODE;
2772             load_error_tbl(l_error_rec, px_error_tbl);
2773           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2774             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2775             l_error_rec.sqlcode := SQLCODE;
2776             load_error_tbl(l_error_rec, px_error_tbl);
2777           WHEN OTHERS THEN
2778             l_error_rec.error_type := 'OTHERS';
2779             l_error_rec.sqlcode := SQLCODE;
2780             load_error_tbl(l_error_rec, px_error_tbl);
2781         END;
2782         EXIT WHEN (i = p_trqv_tbl.LAST);
2783         i := p_trqv_tbl.NEXT(i);
2784       END LOOP;
2785     END IF;
2786     -- Loop through the error_tbl to find the error with the highest severity
2787     -- and return it.
2788     x_return_status := find_highest_exception(px_error_tbl);
2789     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2790   EXCEPTION
2791     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2792       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2793       (
2794         l_api_name,
2795         G_PKG_NAME,
2796         'OKL_API.G_RET_STS_ERROR',
2797         x_msg_count,
2798         x_msg_data,
2799         '_PVT'
2800       );
2801     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2802       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2803       (
2804         l_api_name,
2805         G_PKG_NAME,
2806         'OKL_API.G_RET_STS_UNEXP_ERROR',
2807         x_msg_count,
2808         x_msg_data,
2809         '_PVT'
2810       );
2811     WHEN OTHERS THEN
2812       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2813       (
2814         l_api_name,
2815         G_PKG_NAME,
2816         'OTHERS',
2817         x_msg_count,
2818         x_msg_data,
2819         '_PVT'
2820       );
2821   END lock_row;
2822   --------------------------------------
2823   -- PL/SQL TBL lock_row for:TRQV_TBL --
2824   --------------------------------------
2825   PROCEDURE lock_row(
2826     p_api_version                  IN NUMBER,
2827     p_init_msg_list                IN VARCHAR2 ,
2828     x_return_status                OUT NOCOPY VARCHAR2,
2829     x_msg_count                    OUT NOCOPY NUMBER,
2830     x_msg_data                     OUT NOCOPY VARCHAR2,
2831     p_trqv_tbl                     IN trqv_tbl_type) IS
2832 
2833     l_api_version                  CONSTANT NUMBER := 1;
2834     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
2835     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2836     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2837   BEGIN
2838     OKL_API.init_msg_list(p_init_msg_list);
2839     -- Make sure PL/SQL table has recrods in it before passing
2840     IF (p_trqv_tbl.COUNT > 0) THEN
2841       lock_row(
2842         p_api_version                  => p_api_version,
2843         p_init_msg_list                => OKL_API.G_FALSE,
2844         x_return_status                => x_return_status,
2845         x_msg_count                    => x_msg_count,
2846         x_msg_data                     => x_msg_data,
2847         p_trqv_tbl                     => p_trqv_tbl,
2848         px_error_tbl                   => l_error_tbl);
2849     END IF;
2850     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2851   EXCEPTION
2852     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2853       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2854       (
2855         l_api_name,
2856         G_PKG_NAME,
2857         'OKL_API.G_RET_STS_ERROR',
2858         x_msg_count,
2859         x_msg_data,
2860         '_PVT'
2861       );
2862     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2863       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2864       (
2865         l_api_name,
2866         G_PKG_NAME,
2867         'OKL_API.G_RET_STS_UNEXP_ERROR',
2868         x_msg_count,
2869         x_msg_data,
2870         '_PVT'
2871       );
2872     WHEN OTHERS THEN
2873       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2874       (
2875         l_api_name,
2876         G_PKG_NAME,
2877         'OTHERS',
2878         x_msg_count,
2879         x_msg_data,
2880         '_PVT'
2881       );
2882   END lock_row;
2883   ---------------------------------------------------------------------------
2884   -- PROCEDURE update_row
2885   ---------------------------------------------------------------------------
2886   -------------------------------------
2887   -- update_row for:OKL_TRX_REQUESTS --
2888   -------------------------------------
2889   PROCEDURE update_row(
2890     p_init_msg_list                IN VARCHAR2 ,
2891     x_return_status                OUT NOCOPY VARCHAR2,
2892     x_msg_count                    OUT NOCOPY NUMBER,
2893     x_msg_data                     OUT NOCOPY VARCHAR2,
2894     p_trq_rec                      IN trq_rec_type,
2895     x_trq_rec                      OUT NOCOPY trq_rec_type) IS
2896 
2897     l_api_version                  CONSTANT NUMBER := 1;
2898     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2899     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2900     l_trq_rec                      trq_rec_type := p_trq_rec;
2901     l_def_trq_rec                  trq_rec_type;
2902     l_row_notfound                 BOOLEAN := TRUE;
2903     ----------------------------------
2904     -- FUNCTION populate_new_record --
2905     ----------------------------------
2906     FUNCTION populate_new_record (
2907       p_trq_rec IN trq_rec_type,
2908       x_trq_rec OUT NOCOPY trq_rec_type
2909     ) RETURN VARCHAR2 IS
2910       l_trq_rec                      trq_rec_type;
2911       l_row_notfound                 BOOLEAN := TRUE;
2912       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2913     BEGIN
2914       x_trq_rec := p_trq_rec;
2915       -- Get current database values
2916       l_trq_rec := get_rec(p_trq_rec, l_return_status);
2917       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2918         IF (x_trq_rec.id = OKL_API.G_MISS_NUM)
2919         THEN
2920           x_trq_rec.id := l_trq_rec.id;
2921         END IF;
2922         IF (x_trq_rec.object1_id1 = OKL_API.G_MISS_CHAR)
2923         THEN
2924           x_trq_rec.object1_id1 := l_trq_rec.object1_id1;
2925         END IF;
2926         IF (x_trq_rec.object1_id2 = OKL_API.G_MISS_CHAR)
2927         THEN
2928           x_trq_rec.object1_id2 := l_trq_rec.object1_id2;
2929         END IF;
2930         IF (x_trq_rec.jtot_object1_code = OKL_API.G_MISS_CHAR)
2931         THEN
2932           x_trq_rec.jtot_object1_code := l_trq_rec.jtot_object1_code;
2933         END IF;
2934         IF (x_trq_rec.dnz_khr_id = OKL_API.G_MISS_NUM)
2935         THEN
2936           x_trq_rec.dnz_khr_id := l_trq_rec.dnz_khr_id;
2937         END IF;
2938         IF (x_trq_rec.request_type_code = OKL_API.G_MISS_CHAR)
2939         THEN
2940           x_trq_rec.request_type_code := l_trq_rec.request_type_code;
2941         END IF;
2942         IF (x_trq_rec.apply_to_code = OKL_API.G_MISS_CHAR)
2943         THEN
2944           x_trq_rec.apply_to_code := l_trq_rec.apply_to_code;
2945         END IF;
2946         IF (x_trq_rec.start_date = OKL_API.G_MISS_DATE)
2947         THEN
2948           x_trq_rec.start_date := l_trq_rec.start_date;
2949         END IF;
2950         IF (x_trq_rec.end_date = OKL_API.G_MISS_DATE)
2951         THEN
2952           x_trq_rec.end_date := l_trq_rec.end_date;
2953         END IF;
2954         IF (x_trq_rec.term_duration = OKL_API.G_MISS_NUM)
2955         THEN
2956           x_trq_rec.term_duration := l_trq_rec.term_duration;
2957         END IF;
2958         IF (x_trq_rec.AMOUNT = OKL_API.G_MISS_NUM)
2959         THEN
2960           x_trq_rec.AMOUNT := l_trq_rec.AMOUNT;
2961         END IF;
2962         IF (x_trq_rec.currency_code = OKL_API.G_MISS_CHAR)
2963         THEN
2964           x_trq_rec.currency_code := l_trq_rec.currency_code;
2965         END IF;
2966         IF (x_trq_rec.subsidy_yn = OKL_API.G_MISS_CHAR)
2967         THEN
2968           x_trq_rec.subsidy_yn := l_trq_rec.subsidy_yn;
2969         END IF;
2970         IF (x_trq_rec.cash_applied_yn = OKL_API.G_MISS_CHAR)
2971         THEN
2972           x_trq_rec.cash_applied_yn := l_trq_rec.cash_applied_yn;
2973         END IF;
2974         IF (x_trq_rec.object_version_number = OKL_API.G_MISS_NUM)
2975         THEN
2976           x_trq_rec.object_version_number := l_trq_rec.object_version_number;
2977         END IF;
2978         IF (x_trq_rec.attribute_category = OKL_API.G_MISS_CHAR)
2979         THEN
2980           x_trq_rec.attribute_category := l_trq_rec.attribute_category;
2981         END IF;
2982         IF (x_trq_rec.attribute1 = OKL_API.G_MISS_CHAR)
2983         THEN
2984           x_trq_rec.attribute1 := l_trq_rec.attribute1;
2985         END IF;
2986         IF (x_trq_rec.attribute2 = OKL_API.G_MISS_CHAR)
2987         THEN
2988           x_trq_rec.attribute2 := l_trq_rec.attribute2;
2989         END IF;
2990         IF (x_trq_rec.attribute3 = OKL_API.G_MISS_CHAR)
2991         THEN
2992           x_trq_rec.attribute3 := l_trq_rec.attribute3;
2993         END IF;
2994         IF (x_trq_rec.attribute4 = OKL_API.G_MISS_CHAR)
2995         THEN
2996           x_trq_rec.attribute4 := l_trq_rec.attribute4;
2997         END IF;
2998         IF (x_trq_rec.attribute5 = OKL_API.G_MISS_CHAR)
2999         THEN
3000           x_trq_rec.attribute5 := l_trq_rec.attribute5;
3001         END IF;
3002         IF (x_trq_rec.attribute6 = OKL_API.G_MISS_CHAR)
3003         THEN
3004           x_trq_rec.attribute6 := l_trq_rec.attribute6;
3005         END IF;
3006         IF (x_trq_rec.attribute7 = OKL_API.G_MISS_CHAR)
3007         THEN
3008           x_trq_rec.attribute7 := l_trq_rec.attribute7;
3009         END IF;
3010         IF (x_trq_rec.attribute8 = OKL_API.G_MISS_CHAR)
3011         THEN
3012           x_trq_rec.attribute8 := l_trq_rec.attribute8;
3013         END IF;
3014         IF (x_trq_rec.attribute9 = OKL_API.G_MISS_CHAR)
3015         THEN
3016           x_trq_rec.attribute9 := l_trq_rec.attribute9;
3017         END IF;
3018         IF (x_trq_rec.attribute10 = OKL_API.G_MISS_CHAR)
3019         THEN
3020           x_trq_rec.attribute10 := l_trq_rec.attribute10;
3021         END IF;
3022         IF (x_trq_rec.attribute11 = OKL_API.G_MISS_CHAR)
3023         THEN
3024           x_trq_rec.attribute11 := l_trq_rec.attribute11;
3025         END IF;
3026         IF (x_trq_rec.attribute12 = OKL_API.G_MISS_CHAR)
3027         THEN
3028           x_trq_rec.attribute12 := l_trq_rec.attribute12;
3029         END IF;
3030         IF (x_trq_rec.attribute13 = OKL_API.G_MISS_CHAR)
3031         THEN
3032           x_trq_rec.attribute13 := l_trq_rec.attribute13;
3033         END IF;
3034         IF (x_trq_rec.attribute14 = OKL_API.G_MISS_CHAR)
3035         THEN
3036           x_trq_rec.attribute14 := l_trq_rec.attribute14;
3037         END IF;
3038         IF (x_trq_rec.attribute15 = OKL_API.G_MISS_CHAR)
3039         THEN
3040           x_trq_rec.attribute15 := l_trq_rec.attribute15;
3041         END IF;
3042         IF (x_trq_rec.org_id = OKL_API.G_MISS_NUM)
3043         THEN
3044           x_trq_rec.org_id := l_trq_rec.org_id;
3045         END IF;
3046         IF (x_trq_rec.request_id = OKL_API.G_MISS_NUM)
3047         THEN
3048           x_trq_rec.request_id := l_trq_rec.request_id;
3049         END IF;
3050         IF (x_trq_rec.program_application_id = OKL_API.G_MISS_NUM)
3051         THEN
3052           x_trq_rec.program_application_id := l_trq_rec.program_application_id;
3053         END IF;
3054         IF (x_trq_rec.program_id = OKL_API.G_MISS_NUM)
3055         THEN
3056           x_trq_rec.program_id := l_trq_rec.program_id;
3057         END IF;
3058         IF (x_trq_rec.program_update_date = OKL_API.G_MISS_DATE)
3059         THEN
3060           x_trq_rec.program_update_date := l_trq_rec.program_update_date;
3061         END IF;
3062         IF (x_trq_rec.created_by = OKL_API.G_MISS_NUM)
3063         THEN
3064           x_trq_rec.created_by := l_trq_rec.created_by;
3065         END IF;
3066         IF (x_trq_rec.creation_date = OKL_API.G_MISS_DATE)
3067         THEN
3068           x_trq_rec.creation_date := l_trq_rec.creation_date;
3069         END IF;
3070         IF (x_trq_rec.last_updated_by = OKL_API.G_MISS_NUM)
3071         THEN
3072           x_trq_rec.last_updated_by := l_trq_rec.last_updated_by;
3073         END IF;
3074         IF (x_trq_rec.last_update_date = OKL_API.G_MISS_DATE)
3075         THEN
3076           x_trq_rec.last_update_date := l_trq_rec.last_update_date;
3077         END IF;
3078         IF (x_trq_rec.last_update_login = OKL_API.G_MISS_NUM)
3079         THEN
3080           x_trq_rec.last_update_login := l_trq_rec.last_update_login;
3081         END IF;
3082         IF (x_trq_rec.minimum_rate = OKL_API.G_MISS_NUM)
3083         THEN
3084           x_trq_rec.minimum_rate := l_trq_rec.minimum_rate;
3085         END IF;
3086         IF (x_trq_rec.maximum_rate = OKL_API.G_MISS_NUM)
3087         THEN
3088           x_trq_rec.maximum_rate := l_trq_rec.maximum_rate;
3089         END IF;
3090         IF (x_trq_rec.tolerance = OKL_API.G_MISS_NUM)
3091         THEN
3092           x_trq_rec.tolerance := l_trq_rec.tolerance;
3093         END IF;
3094         IF (x_trq_rec.adjustment_frequency_code = OKL_API.G_MISS_CHAR)
3095         THEN
3096           x_trq_rec.adjustment_frequency_code := l_trq_rec.adjustment_frequency_code;
3097         END IF;
3098         IF (x_trq_rec.base_rate = OKL_API.G_MISS_NUM)
3099         THEN
3100           x_trq_rec.base_rate := l_trq_rec.base_rate;
3101         END IF;
3102         IF (x_trq_rec.index_name = OKL_API.G_MISS_CHAR)
3103         THEN
3104           x_trq_rec.index_name := l_trq_rec.index_name;
3105         END IF;
3106         IF (x_trq_rec.variable_method_code = OKL_API.G_MISS_CHAR)
3107         THEN
3108           x_trq_rec.variable_method_code := l_trq_rec.variable_method_code;
3109         END IF;
3110         IF (x_trq_rec.adder = OKL_API.G_MISS_NUM)
3111         THEN
3112           x_trq_rec.adder := l_trq_rec.adder;
3113         END IF;
3114         IF (x_trq_rec.days_in_year = OKL_API.G_MISS_CHAR)
3115         THEN
3116           x_trq_rec.days_in_year := l_trq_rec.days_in_year;
3117         END IF;
3118         IF (x_trq_rec.days_in_month = OKL_API.G_MISS_CHAR)
3119         THEN
3120           x_trq_rec.days_in_month := l_trq_rec.days_in_month;
3121         END IF;
3122         IF (x_trq_rec.interest_method_code = OKL_API.G_MISS_CHAR)
3123         THEN
3124           x_trq_rec.interest_method_code := l_trq_rec.interest_method_code;
3125         END IF;
3126         IF (x_trq_rec.interest_start_date = OKL_API.G_MISS_DATE)
3127         THEN
3128           x_trq_rec.interest_start_date := l_trq_rec.interest_start_date;
3129         END IF;
3130         IF (x_trq_rec.method_of_calculation_code = OKL_API.G_MISS_CHAR)
3131         THEN
3132           x_trq_rec.method_of_calculation_code := l_trq_rec.method_of_calculation_code;
3133         END IF;
3134         IF (x_trq_rec.request_number = OKL_API.G_MISS_CHAR)
3135         THEN
3136           x_trq_rec.request_number := l_trq_rec.request_number;
3137         END IF;
3138         IF (x_trq_rec.date_of_conversion = OKL_API.G_MISS_DATE)
3139         THEN
3140           x_trq_rec.date_of_conversion := l_trq_rec.date_of_conversion;
3141         END IF;
3142         IF (x_trq_rec.variable_rate_yn = OKL_API.G_MISS_CHAR)
3143         THEN
3144           x_trq_rec.variable_rate_yn := l_trq_rec.variable_rate_yn;
3145         END IF;
3146         IF (x_trq_rec.request_status_code = OKL_API.G_MISS_CHAR)
3147         THEN
3148           x_trq_rec.request_status_code := l_trq_rec.request_status_code;
3149         END IF;
3150         IF (x_trq_rec.yield = OKL_API.G_MISS_NUM)
3151         THEN
3152           x_trq_rec.yield := l_trq_rec.yield;
3153         END IF;
3154         IF (x_trq_rec.residual = OKL_API.G_MISS_NUM)
3155         THEN
3156           x_trq_rec.residual := l_trq_rec.residual;
3157         END IF;
3158         IF (x_trq_rec.comments = OKL_API.G_MISS_CHAR)
3159         THEN
3160           x_trq_rec.comments := l_trq_rec.comments;
3161         END IF;
3162         IF (x_trq_rec.payment_frequency_code = OKL_API.G_MISS_CHAR)
3163         THEN
3164           x_trq_rec.payment_frequency_code := l_trq_rec.payment_frequency_code;
3165         END IF;
3166         IF (x_trq_rec.restructure_date = OKL_API.G_MISS_DATE)
3167         THEN
3168           x_trq_rec.restructure_date := l_trq_rec.restructure_date;
3169         END IF;
3170         IF (x_trq_rec.past_due_yn = OKL_API.G_MISS_CHAR)
3171         THEN
3172           x_trq_rec.past_due_yn := l_trq_rec.past_due_yn;
3173         END IF;
3174         IF (x_trq_rec.request_reason_code = OKL_API.G_MISS_CHAR)
3175 	THEN
3176 	   x_trq_rec.request_reason_code := l_trq_rec.request_reason_code;
3177         END IF;
3178         IF (x_trq_rec.parent_khr_id = OKL_API.G_MISS_NUM)
3179 	THEN
3180 	   x_trq_rec.parent_khr_id := l_trq_rec.parent_khr_id;
3181         END IF;
3182         IF (x_trq_rec.yield_type = OKL_API.G_MISS_CHAR)
3183 	THEN
3184 	   x_trq_rec.yield_type := l_trq_rec.yield_type;
3185         END IF;
3186         IF (x_trq_rec.payment_amount = OKL_API.G_MISS_NUM)
3187 	THEN
3188 	   x_trq_rec.payment_amount := l_trq_rec.payment_amount;
3189         END IF;
3190         IF (x_trq_rec.payment_date = OKL_API.G_MISS_DATE)
3191 	THEN
3192 	   x_trq_rec.payment_date := l_trq_rec.payment_date;
3193         END IF;
3194         IF (x_trq_rec.paydown_type = OKL_API.G_MISS_CHAR)
3195         THEN
3196            x_trq_rec.paydown_type := l_trq_rec.paydown_type;
3197         END IF;
3198         IF (x_trq_rec.currency_conversion_type = OKL_API.G_MISS_CHAR)
3199         THEN
3200            x_trq_rec.currency_conversion_type := l_trq_rec.currency_conversion_type;
3201         END IF;
3202         IF (x_trq_rec.currency_conversion_rate = OKL_API.G_MISS_NUM)
3203         THEN
3204            x_trq_rec.currency_conversion_rate := l_trq_rec.currency_conversion_rate;
3205         END IF;
3206         IF (x_trq_rec.currency_conversion_date = OKL_API.G_MISS_DATE)
3207         THEN
3208            x_trq_rec.currency_conversion_date := l_trq_rec.currency_conversion_date;
3209         END IF;
3210         IF (x_trq_rec.lsm_id = OKL_API.G_MISS_NUM)
3211         THEN
3212            x_trq_rec.lsm_id := l_trq_rec.lsm_id;
3213         END IF;
3214         IF (x_trq_rec.receipt_id = OKL_API.G_MISS_NUM)
3215         THEN
3216            x_trq_rec.receipt_id := l_trq_rec.receipt_id;
3217         END IF;
3218         IF (x_trq_rec.tcn_id = OKL_API.G_MISS_NUM)
3219         THEN
3220            x_trq_rec.tcn_id := l_trq_rec.tcn_id;
3221         END IF;
3222         IF (x_trq_rec.try_id = OKL_API.G_MISS_NUM)
3223         THEN
3224            x_trq_rec.try_id := l_trq_rec.try_id;
3225         END IF;
3226         --BEGIN -VARANGAN-BUG#5083582
3227         IF (x_trq_rec.CUR_PRINCIPAL_BALANCE = OKL_API.G_MISS_NUM)
3228         THEN
3229            x_trq_rec.CUR_PRINCIPAL_BALANCE := l_trq_rec.CUR_PRINCIPAL_BALANCE;
3230         END IF;
3231 	IF (x_trq_rec.CUR_ACCUM_INTEREST = OKL_API.G_MISS_NUM)
3232         THEN
3233            x_trq_rec.CUR_ACCUM_INTEREST := l_trq_rec.CUR_ACCUM_INTEREST;
3234         END IF;
3235 	--END - VARANGAN-BUG#5083582
3236         IF (x_trq_rec.legal_entity_id = OKL_API.G_MISS_NUM)
3237         THEN
3238            x_trq_rec.legal_entity_id := l_trq_rec.legal_entity_id;
3239         END IF;
3240       END IF;
3241       RETURN(l_return_status);
3242     END populate_new_record;
3243     -----------------------------------------
3244     -- Set_Attributes for:OKL_TRX_REQUESTS --
3245     -----------------------------------------
3246     FUNCTION Set_Attributes (
3247       p_trq_rec IN trq_rec_type,
3248       x_trq_rec OUT NOCOPY trq_rec_type
3249     ) RETURN VARCHAR2 IS
3250       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3251     BEGIN
3252       x_trq_rec := p_trq_rec;
3253       x_trq_rec.OBJECT_VERSION_NUMBER := p_trq_rec.OBJECT_VERSION_NUMBER + 1;
3254       RETURN(l_return_status);
3255     END Set_Attributes;
3256   BEGIN
3257     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3258                                               p_init_msg_list,
3259                                               '_PVT',
3260                                               x_return_status);
3261     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3262       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3263     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3264       RAISE OKL_API.G_EXCEPTION_ERROR;
3265     END IF;
3266     --- Setting item attributes
3267     l_return_status := Set_Attributes(
3268       p_trq_rec,                         -- IN
3269       l_trq_rec);                        -- OUT
3270     --- If any errors happen abort API
3271     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3272       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3273     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3274       RAISE OKL_API.G_EXCEPTION_ERROR;
3275     END IF;
3276     l_return_status := populate_new_record(l_trq_rec, l_def_trq_rec);
3277     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3278       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3279     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3280       RAISE OKL_API.G_EXCEPTION_ERROR;
3281     END IF;
3282     UPDATE OKL_TRX_REQUESTS
3283     SET OBJECT1_ID1 = l_def_trq_rec.object1_id1,
3284         OBJECT1_ID2 = l_def_trq_rec.object1_id2,
3285         JTOT_OBJECT1_CODE = l_def_trq_rec.jtot_object1_code,
3286         DNZ_KHR_ID = l_def_trq_rec.dnz_khr_id,
3287         REQUEST_TYPE_CODE = l_def_trq_rec.request_type_code,
3288         APPLY_TO_CODE = l_def_trq_rec.apply_to_code,
3289         START_DATE = l_def_trq_rec.start_date,
3290         END_DATE = l_def_trq_rec.end_date,
3291         TERM_DURATION = l_def_trq_rec.term_duration,
3292         AMOUNT = l_def_trq_rec.AMOUNT,
3293         CURRENCY_CODE = l_def_trq_rec.currency_code,
3294         SUBSIDY_YN = l_def_trq_rec.subsidy_yn,
3295         CASH_APPLIED_YN = l_def_trq_rec.cash_applied_yn,
3296         OBJECT_VERSION_NUMBER = l_def_trq_rec.object_version_number,
3297         ATTRIBUTE_CATEGORY = l_def_trq_rec.attribute_category,
3298         ATTRIBUTE1 = l_def_trq_rec.attribute1,
3299         ATTRIBUTE2 = l_def_trq_rec.attribute2,
3300         ATTRIBUTE3 = l_def_trq_rec.attribute3,
3301         ATTRIBUTE4 = l_def_trq_rec.attribute4,
3302         ATTRIBUTE5 = l_def_trq_rec.attribute5,
3303         ATTRIBUTE6 = l_def_trq_rec.attribute6,
3304         ATTRIBUTE7 = l_def_trq_rec.attribute7,
3305         ATTRIBUTE8 = l_def_trq_rec.attribute8,
3306         ATTRIBUTE9 = l_def_trq_rec.attribute9,
3307         ATTRIBUTE10 = l_def_trq_rec.attribute10,
3308         ATTRIBUTE11 = l_def_trq_rec.attribute11,
3309         ATTRIBUTE12 = l_def_trq_rec.attribute12,
3310         ATTRIBUTE13 = l_def_trq_rec.attribute13,
3311         ATTRIBUTE14 = l_def_trq_rec.attribute14,
3312         ATTRIBUTE15 = l_def_trq_rec.attribute15,
3313         ORG_ID = l_def_trq_rec.org_id,
3314         REQUEST_ID = l_def_trq_rec.request_id,
3315         PROGRAM_APPLICATION_ID = l_def_trq_rec.program_application_id,
3316         PROGRAM_ID = l_def_trq_rec.program_id,
3317         PROGRAM_UPDATE_DATE = l_def_trq_rec.program_update_date,
3318         CREATED_BY = l_def_trq_rec.created_by,
3319         CREATION_DATE = l_def_trq_rec.creation_date,
3320         LAST_UPDATED_BY = l_def_trq_rec.last_updated_by,
3321         LAST_UPDATE_DATE = l_def_trq_rec.last_update_date,
3322         LAST_UPDATE_LOGIN = l_def_trq_rec.last_update_login,
3323         MINIMUM_RATE = l_def_trq_rec.minimum_rate,
3324         MAXIMUM_RATE = l_def_trq_rec.maximum_rate,
3325         TOLERANCE = l_def_trq_rec.tolerance,
3326         ADJUSTMENT_FREQUENCY_CODE = l_def_trq_rec.adjustment_frequency_code,
3327         BASE_RATE = l_def_trq_rec.base_rate,
3328         INDEX_NAME = l_def_trq_rec.index_name,
3329         VARIABLE_METHOD_CODE = l_def_trq_rec.variable_method_code,
3330         ADDER = l_def_trq_rec.adder,
3331         DAYS_IN_YEAR = l_def_trq_rec.days_in_year,
3332         DAYS_IN_MONTH = l_def_trq_rec.days_in_month,
3333         INTEREST_METHOD_CODE = l_def_trq_rec.interest_method_code,
3334         INTEREST_START_DATE = l_def_trq_rec.interest_start_date,
3335         METHOD_OF_CALCULATION_CODE = l_def_trq_rec.method_of_calculation_code,
3336         REQUEST_NUMBER = l_def_trq_rec.request_number,
3337         DATE_OF_CONVERSION = l_def_trq_rec.date_of_conversion,
3338         VARIABLE_RATE_YN = l_def_trq_rec.variable_rate_yn,
3339         REQUEST_STATUS_CODE = l_def_trq_rec.request_status_code,
3340         YIELD = l_def_trq_rec.yield,
3341         RESIDUAL = l_def_trq_rec.residual,
3342         COMMENTS = l_def_trq_rec.comments,
3343         PAYMENT_FREQUENCY_CODE = l_def_trq_rec.payment_frequency_code,
3344         RESTRUCTURE_DATE = l_def_trq_rec.restructure_date,
3345         PAST_DUE_YN = l_def_trq_rec.past_due_yn,
3346         REQUEST_REASON_CODE = l_def_trq_rec.request_reason_code,
3347         PARENT_KHR_ID = l_def_trq_rec.parent_khr_id,
3348         YIELD_TYPE = l_def_trq_rec.yield_type,
3349         PAYMENT_AMOUNT = l_def_trq_rec.payment_amount,
3350         PAYMENT_DATE = l_def_trq_rec.payment_date,
3351         PAYDOWN_TYPE = l_def_trq_rec.paydown_type,
3352         CURRENCY_CONVERSION_TYPE = l_def_trq_rec.currency_conversion_type,
3353         CURRENCY_CONVERSION_RATE = l_def_trq_rec.currency_conversion_rate,
3354         CURRENCY_CONVERSION_DATE = l_def_trq_rec.currency_conversion_date,
3355         LSM_ID = l_def_trq_rec.lsm_id,
3356         RECEIPT_ID = l_def_trq_rec.receipt_id,
3357         TCN_ID = l_def_trq_rec.tcn_id,
3358         TRY_ID = l_def_trq_rec.try_id,
3359 	LEGAL_ENTITY_ID = l_def_trq_rec.legal_entity_id
3360     WHERE ID = l_def_trq_rec.id;
3361 
3362     x_trq_rec := l_trq_rec;
3363     x_return_status := l_return_status;
3364     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3365   EXCEPTION
3366     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3367       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3368       (
3369         l_api_name,
3370         G_PKG_NAME,
3371         'OKL_API.G_RET_STS_ERROR',
3372         x_msg_count,
3373         x_msg_data,
3374         '_PVT'
3375       );
3376     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3377       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3378       (
3379         l_api_name,
3380         G_PKG_NAME,
3381         'OKL_API.G_RET_STS_UNEXP_ERROR',
3382         x_msg_count,
3383         x_msg_data,
3384         '_PVT'
3385       );
3386     WHEN OTHERS THEN
3387       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3388       (
3389         l_api_name,
3390         G_PKG_NAME,
3391         'OTHERS',
3392         x_msg_count,
3393         x_msg_data,
3394         '_PVT'
3395       );
3396   END update_row;
3397   ---------------------------------------
3398   -- update_row for:OKL_TRX_REQUESTS_V --
3399   ---------------------------------------
3400   PROCEDURE update_row(
3401     p_api_version                  IN NUMBER,
3402     p_init_msg_list                IN VARCHAR2 ,
3403     x_return_status                OUT NOCOPY VARCHAR2,
3404     x_msg_count                    OUT NOCOPY NUMBER,
3405     x_msg_data                     OUT NOCOPY VARCHAR2,
3406     p_trqv_rec                     IN trqv_rec_type,
3407     x_trqv_rec                     OUT NOCOPY trqv_rec_type) IS
3408 
3409     l_api_version                  CONSTANT NUMBER := 1;
3410     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
3411     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3412     l_trqv_rec                     trqv_rec_type := p_trqv_rec;
3413     l_def_trqv_rec                 trqv_rec_type;
3414     l_db_trqv_rec                  trqv_rec_type;
3415     l_trq_rec                      trq_rec_type;
3416     lx_trq_rec                     trq_rec_type;
3417     -------------------------------
3418     -- FUNCTION fill_who_columns --
3419     -------------------------------
3420     FUNCTION fill_who_columns (
3421       p_trqv_rec IN trqv_rec_type
3422     ) RETURN trqv_rec_type IS
3423       l_trqv_rec trqv_rec_type := p_trqv_rec;
3424     BEGIN
3425       l_trqv_rec.LAST_UPDATE_DATE := SYSDATE;
3426       l_trqv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3427       l_trqv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3428       RETURN(l_trqv_rec);
3429     END fill_who_columns;
3430     ----------------------------------
3431     -- FUNCTION populate_new_record --
3432     ----------------------------------
3433     FUNCTION populate_new_record (
3434       p_trqv_rec IN trqv_rec_type,
3435       x_trqv_rec OUT NOCOPY trqv_rec_type
3436     ) RETURN VARCHAR2 IS
3437       l_row_notfound                 BOOLEAN := TRUE;
3438       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3439     BEGIN
3440       x_trqv_rec := p_trqv_rec;
3441       -- Get current database values
3442       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
3443       --       so it may be verified through LOCK_ROW.
3444       l_db_trqv_rec := get_rec(p_trqv_rec, l_return_status);
3445       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3446         IF (x_trqv_rec.id = OKL_API.G_MISS_NUM)
3447         THEN
3448           x_trqv_rec.id := l_db_trqv_rec.id;
3449         END IF;
3450         IF (x_trqv_rec.object1_id1 = OKL_API.G_MISS_CHAR)
3451         THEN
3452           x_trqv_rec.object1_id1 := l_db_trqv_rec.object1_id1;
3453         END IF;
3454         IF (x_trqv_rec.object1_id2 = OKL_API.G_MISS_CHAR)
3455         THEN
3456           x_trqv_rec.object1_id2 := l_db_trqv_rec.object1_id2;
3457         END IF;
3458         IF (x_trqv_rec.jtot_object1_code = OKL_API.G_MISS_CHAR)
3459         THEN
3460           x_trqv_rec.jtot_object1_code := l_db_trqv_rec.jtot_object1_code;
3461         END IF;
3462         IF (x_trqv_rec.dnz_khr_id = OKL_API.G_MISS_NUM)
3463         THEN
3464           x_trqv_rec.dnz_khr_id := l_db_trqv_rec.dnz_khr_id;
3465         END IF;
3466         IF (x_trqv_rec.request_type_code = OKL_API.G_MISS_CHAR)
3467         THEN
3468           x_trqv_rec.request_type_code := l_db_trqv_rec.request_type_code;
3469         END IF;
3470         IF (x_trqv_rec.apply_to_code = OKL_API.G_MISS_CHAR)
3471         THEN
3472           x_trqv_rec.apply_to_code := l_db_trqv_rec.apply_to_code;
3473         END IF;
3474         IF (x_trqv_rec.start_date = OKL_API.G_MISS_DATE)
3475         THEN
3476           x_trqv_rec.start_date := l_db_trqv_rec.start_date;
3477         END IF;
3478         IF (x_trqv_rec.end_date = OKL_API.G_MISS_DATE)
3479         THEN
3480           x_trqv_rec.end_date := l_db_trqv_rec.end_date;
3481         END IF;
3482         IF (x_trqv_rec.term_duration = OKL_API.G_MISS_NUM)
3483         THEN
3484           x_trqv_rec.term_duration := l_db_trqv_rec.term_duration;
3485         END IF;
3486         IF (x_trqv_rec.AMOUNT = OKL_API.G_MISS_NUM)
3487         THEN
3488           x_trqv_rec.AMOUNT := l_db_trqv_rec.AMOUNT;
3489         END IF;
3490         IF (x_trqv_rec.currency_code = OKL_API.G_MISS_CHAR)
3491         THEN
3492           x_trqv_rec.currency_code := l_db_trqv_rec.currency_code;
3493         END IF;
3494         IF (x_trqv_rec.subsidy_yn = OKL_API.G_MISS_CHAR)
3495         THEN
3496           x_trqv_rec.subsidy_yn := l_db_trqv_rec.subsidy_yn;
3497         END IF;
3498         IF (x_trqv_rec.cash_applied_yn = OKL_API.G_MISS_CHAR)
3499         THEN
3500           x_trqv_rec.cash_applied_yn := l_db_trqv_rec.cash_applied_yn;
3501         END IF;
3502         IF (x_trqv_rec.attribute_category = OKL_API.G_MISS_CHAR)
3503         THEN
3504           x_trqv_rec.attribute_category := l_db_trqv_rec.attribute_category;
3505         END IF;
3506         IF (x_trqv_rec.attribute1 = OKL_API.G_MISS_CHAR)
3507         THEN
3508           x_trqv_rec.attribute1 := l_db_trqv_rec.attribute1;
3509         END IF;
3510         IF (x_trqv_rec.attribute2 = OKL_API.G_MISS_CHAR)
3511         THEN
3512           x_trqv_rec.attribute2 := l_db_trqv_rec.attribute2;
3513         END IF;
3514         IF (x_trqv_rec.attribute3 = OKL_API.G_MISS_CHAR)
3515         THEN
3516           x_trqv_rec.attribute3 := l_db_trqv_rec.attribute3;
3517         END IF;
3518         IF (x_trqv_rec.attribute4 = OKL_API.G_MISS_CHAR)
3519         THEN
3520           x_trqv_rec.attribute4 := l_db_trqv_rec.attribute4;
3521         END IF;
3522         IF (x_trqv_rec.attribute5 = OKL_API.G_MISS_CHAR)
3523         THEN
3524           x_trqv_rec.attribute5 := l_db_trqv_rec.attribute5;
3525         END IF;
3526         IF (x_trqv_rec.attribute6 = OKL_API.G_MISS_CHAR)
3527         THEN
3528           x_trqv_rec.attribute6 := l_db_trqv_rec.attribute6;
3529         END IF;
3530         IF (x_trqv_rec.attribute7 = OKL_API.G_MISS_CHAR)
3531         THEN
3532           x_trqv_rec.attribute7 := l_db_trqv_rec.attribute7;
3533         END IF;
3534         IF (x_trqv_rec.attribute8 = OKL_API.G_MISS_CHAR)
3535         THEN
3536           x_trqv_rec.attribute8 := l_db_trqv_rec.attribute8;
3537         END IF;
3538         IF (x_trqv_rec.attribute9 = OKL_API.G_MISS_CHAR)
3539         THEN
3540           x_trqv_rec.attribute9 := l_db_trqv_rec.attribute9;
3541         END IF;
3542         IF (x_trqv_rec.attribute10 = OKL_API.G_MISS_CHAR)
3543         THEN
3544           x_trqv_rec.attribute10 := l_db_trqv_rec.attribute10;
3545         END IF;
3546         IF (x_trqv_rec.attribute11 = OKL_API.G_MISS_CHAR)
3547         THEN
3548           x_trqv_rec.attribute11 := l_db_trqv_rec.attribute11;
3549         END IF;
3550         IF (x_trqv_rec.attribute12 = OKL_API.G_MISS_CHAR)
3551         THEN
3552           x_trqv_rec.attribute12 := l_db_trqv_rec.attribute12;
3553         END IF;
3554         IF (x_trqv_rec.attribute13 = OKL_API.G_MISS_CHAR)
3555         THEN
3556           x_trqv_rec.attribute13 := l_db_trqv_rec.attribute13;
3557         END IF;
3558         IF (x_trqv_rec.attribute14 = OKL_API.G_MISS_CHAR)
3559         THEN
3560           x_trqv_rec.attribute14 := l_db_trqv_rec.attribute14;
3561         END IF;
3562         IF (x_trqv_rec.attribute15 = OKL_API.G_MISS_CHAR)
3563         THEN
3564           x_trqv_rec.attribute15 := l_db_trqv_rec.attribute15;
3565         END IF;
3566         IF (x_trqv_rec.org_id = OKL_API.G_MISS_NUM)
3567         THEN
3568           x_trqv_rec.org_id := l_db_trqv_rec.org_id;
3569         END IF;
3570         IF (x_trqv_rec.request_id = OKL_API.G_MISS_NUM)
3571         THEN
3572           x_trqv_rec.request_id := l_db_trqv_rec.request_id;
3573         END IF;
3574         IF (x_trqv_rec.program_application_id = OKL_API.G_MISS_NUM)
3575         THEN
3576           x_trqv_rec.program_application_id := l_db_trqv_rec.program_application_id;
3577         END IF;
3578         IF (x_trqv_rec.program_id = OKL_API.G_MISS_NUM)
3579         THEN
3580           x_trqv_rec.program_id := l_db_trqv_rec.program_id;
3581         END IF;
3582         IF (x_trqv_rec.program_update_date = OKL_API.G_MISS_DATE)
3583         THEN
3584           x_trqv_rec.program_update_date := l_db_trqv_rec.program_update_date;
3585         END IF;
3586         IF (x_trqv_rec.created_by = OKL_API.G_MISS_NUM)
3587         THEN
3588           x_trqv_rec.created_by := l_db_trqv_rec.created_by;
3589         END IF;
3590         IF (x_trqv_rec.creation_date = OKL_API.G_MISS_DATE)
3591         THEN
3592           x_trqv_rec.creation_date := l_db_trqv_rec.creation_date;
3593         END IF;
3594         IF (x_trqv_rec.last_updated_by = OKL_API.G_MISS_NUM)
3595         THEN
3596           x_trqv_rec.last_updated_by := l_db_trqv_rec.last_updated_by;
3597         END IF;
3598         IF (x_trqv_rec.last_update_date = OKL_API.G_MISS_DATE)
3599         THEN
3600           x_trqv_rec.last_update_date := l_db_trqv_rec.last_update_date;
3601         END IF;
3602         IF (x_trqv_rec.last_update_login = OKL_API.G_MISS_NUM)
3603         THEN
3604           x_trqv_rec.last_update_login := l_db_trqv_rec.last_update_login;
3605         END IF;
3606         IF (x_trqv_rec.minimum_rate = OKL_API.G_MISS_NUM)
3607         THEN
3608           x_trqv_rec.minimum_rate := l_db_trqv_rec.minimum_rate;
3609         END IF;
3610         IF (x_trqv_rec.maximum_rate = OKL_API.G_MISS_NUM)
3611         THEN
3612           x_trqv_rec.maximum_rate := l_db_trqv_rec.maximum_rate;
3613         END IF;
3614         IF (x_trqv_rec.tolerance = OKL_API.G_MISS_NUM)
3615         THEN
3616           x_trqv_rec.tolerance := l_db_trqv_rec.tolerance;
3617         END IF;
3618         IF (x_trqv_rec.adjustment_frequency_code = OKL_API.G_MISS_CHAR)
3619         THEN
3620           x_trqv_rec.adjustment_frequency_code := l_db_trqv_rec.adjustment_frequency_code;
3621         END IF;
3622         IF (x_trqv_rec.base_rate = OKL_API.G_MISS_NUM)
3623         THEN
3624           x_trqv_rec.base_rate := l_db_trqv_rec.base_rate;
3625         END IF;
3626         IF (x_trqv_rec.index_name = OKL_API.G_MISS_CHAR)
3627         THEN
3628           x_trqv_rec.index_name := l_db_trqv_rec.index_name;
3629         END IF;
3630         IF (x_trqv_rec.variable_method_code = OKL_API.G_MISS_CHAR)
3631         THEN
3632           x_trqv_rec.variable_method_code := l_db_trqv_rec.variable_method_code;
3633         END IF;
3634         IF (x_trqv_rec.adder = OKL_API.G_MISS_NUM)
3635         THEN
3636           x_trqv_rec.adder := l_db_trqv_rec.adder;
3637         END IF;
3638         IF (x_trqv_rec.days_in_year = OKL_API.G_MISS_CHAR)
3639         THEN
3640           x_trqv_rec.days_in_year := l_db_trqv_rec.days_in_year;
3641         END IF;
3642         IF (x_trqv_rec.days_in_month = OKL_API.G_MISS_CHAR)
3643         THEN
3644           x_trqv_rec.days_in_month := l_db_trqv_rec.days_in_month;
3645         END IF;
3646         IF (x_trqv_rec.interest_method_code = OKL_API.G_MISS_CHAR)
3647         THEN
3648           x_trqv_rec.interest_method_code := l_db_trqv_rec.interest_method_code;
3649         END IF;
3650         IF (x_trqv_rec.interest_start_date = OKL_API.G_MISS_DATE)
3651         THEN
3652           x_trqv_rec.interest_start_date := l_db_trqv_rec.interest_start_date;
3653         END IF;
3654         IF (x_trqv_rec.method_of_calculation_code = OKL_API.G_MISS_CHAR)
3655         THEN
3656           x_trqv_rec.method_of_calculation_code := l_db_trqv_rec.method_of_calculation_code;
3657         END IF;
3658         IF (x_trqv_rec.request_number = OKL_API.G_MISS_CHAR)
3659         THEN
3660           x_trqv_rec.request_number := l_db_trqv_rec.request_number;
3661         END IF;
3662         IF (x_trqv_rec.date_of_conversion = OKL_API.G_MISS_DATE)
3663         THEN
3664           x_trqv_rec.date_of_conversion := l_db_trqv_rec.date_of_conversion;
3665         END IF;
3666         IF (x_trqv_rec.variable_rate_yn = OKL_API.G_MISS_CHAR)
3667         THEN
3668           x_trqv_rec.variable_rate_yn := l_db_trqv_rec.variable_rate_yn;
3669         END IF;
3670         IF (x_trqv_rec.request_status_code = OKL_API.G_MISS_CHAR)
3671         THEN
3672           x_trqv_rec.request_status_code := l_db_trqv_rec.request_status_code;
3673         END IF;
3674         IF (x_trqv_rec.yield = OKL_API.G_MISS_NUM)
3675         THEN
3676           x_trqv_rec.yield := l_db_trqv_rec.yield;
3677         END IF;
3678         IF (x_trqv_rec.residual = OKL_API.G_MISS_NUM)
3679         THEN
3680           x_trqv_rec.residual := l_db_trqv_rec.residual;
3681         END IF;
3682         IF (x_trqv_rec.comments = OKL_API.G_MISS_CHAR)
3683         THEN
3684           x_trqv_rec.comments := l_db_trqv_rec.comments;
3685         END IF;
3686         IF (x_trqv_rec.payment_frequency_code = OKL_API.G_MISS_CHAR)
3687         THEN
3688           x_trqv_rec.payment_frequency_code := l_db_trqv_rec.payment_frequency_code;
3689         END IF;
3690         IF (x_trqv_rec.restructure_date = OKL_API.G_MISS_DATE)
3691         THEN
3692           x_trqv_rec.restructure_date := l_db_trqv_rec.restructure_date;
3693         END IF;
3694         IF (x_trqv_rec.past_due_yn = OKL_API.G_MISS_CHAR)
3695         THEN
3696           x_trqv_rec.past_due_yn := l_db_trqv_rec.past_due_yn;
3697         END IF;
3698         IF (x_trqv_rec.request_reason_code = OKL_API.G_MISS_CHAR)
3699 	THEN
3700 	  x_trqv_rec.request_reason_code := l_db_trqv_rec.request_reason_code;
3701         END IF;
3702         IF (x_trqv_rec.parent_khr_id = OKL_API.G_MISS_NUM)
3703 	THEN
3704 	  x_trqv_rec.parent_khr_id := l_db_trqv_rec.parent_khr_id;
3705         END IF;
3706         IF (x_trqv_rec.yield_type = OKL_API.G_MISS_CHAR)
3707 	THEN
3708 	  x_trqv_rec.yield_type := l_db_trqv_rec.yield_type;
3709         END IF;
3710         IF (x_trqv_rec.payment_amount = OKL_API.G_MISS_NUM)
3711 	THEN
3712 	  x_trqv_rec.payment_amount := l_db_trqv_rec.payment_amount;
3713         END IF;
3714         IF (x_trqv_rec.payment_date = OKL_API.G_MISS_DATE)
3715 	THEN
3716 	  x_trqv_rec.payment_date := l_db_trqv_rec.payment_date;
3717         END IF;
3718         IF (x_trqv_rec.paydown_type = OKL_API.G_MISS_CHAR)
3719         THEN
3720           x_trqv_rec.paydown_type := l_db_trqv_rec.paydown_type;
3721         END IF;
3722         IF (x_trqv_rec.currency_conversion_type = OKL_API.G_MISS_CHAR)
3723         THEN
3724           x_trqv_rec.currency_conversion_type := l_db_trqv_rec.currency_conversion_type;
3725         END IF;
3726         IF (x_trqv_rec.currency_conversion_rate = OKL_API.G_MISS_NUM)
3727         THEN
3728           x_trqv_rec.currency_conversion_rate := l_db_trqv_rec.currency_conversion_rate;
3729         END IF;
3730         IF (x_trqv_rec.currency_conversion_date = OKL_API.G_MISS_DATE)
3731         THEN
3732           x_trqv_rec.currency_conversion_date := l_db_trqv_rec.currency_conversion_date;
3733         END IF;
3734         IF (x_trqv_rec.lsm_id = OKL_API.G_MISS_NUM)
3735         THEN
3736           x_trqv_rec.lsm_id := l_db_trqv_rec.lsm_id;
3737         END IF;
3738         IF (x_trqv_rec.receipt_id = OKL_API.G_MISS_NUM)
3739         THEN
3740           x_trqv_rec.receipt_id := l_db_trqv_rec.receipt_id;
3741         END IF;
3742         IF (x_trqv_rec.tcn_id = OKL_API.G_MISS_NUM)
3743         THEN
3744           x_trqv_rec.tcn_id := l_db_trqv_rec.tcn_id;
3745         END IF;
3746         IF (x_trqv_rec.try_id = OKL_API.G_MISS_NUM)
3747         THEN
3748           x_trqv_rec.try_id := l_db_trqv_rec.try_id;
3749         END IF;
3750         IF (x_trqv_rec.legal_entity_id = OKL_API.G_MISS_NUM)
3751         THEN
3752           x_trqv_rec.legal_entity_id := l_db_trqv_rec.legal_entity_id;
3753         END IF;
3754       END IF;
3755       RETURN(l_return_status);
3756     END populate_new_record;
3757     -------------------------------------------
3758     -- Set_Attributes for:OKL_TRX_REQUESTS_V --
3759     -------------------------------------------
3760     FUNCTION Set_Attributes (
3761       p_trqv_rec IN trqv_rec_type,
3762       x_trqv_rec OUT NOCOPY trqv_rec_type
3763     ) RETURN VARCHAR2 IS
3764       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3765     BEGIN
3766       x_trqv_rec := p_trqv_rec;
3767       RETURN(l_return_status);
3768     END Set_Attributes;
3769   BEGIN
3770     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3771                                               G_PKG_NAME,
3772                                               p_init_msg_list,
3773                                               l_api_version,
3774                                               p_api_version,
3775                                               '_PVT',
3776                                               x_return_status);
3777     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3778       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3779     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3780       RAISE OKL_API.G_EXCEPTION_ERROR;
3781     END IF;
3782     --- Setting item attributes
3783     l_return_status := Set_Attributes(
3784       p_trqv_rec,                        -- IN
3785       x_trqv_rec);                       -- OUT
3786     --- If any errors happen abort API
3787     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3788       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3789     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3790       RAISE OKL_API.G_EXCEPTION_ERROR;
3791     END IF;
3792     l_return_status := populate_new_record(l_trqv_rec, l_def_trqv_rec);
3793     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3794       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3795     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3796       RAISE OKL_API.G_EXCEPTION_ERROR;
3797     END IF;
3798     l_def_trqv_rec := fill_who_columns(l_def_trqv_rec);
3799     --- Validate all non-missing attributes (Item Level Validation)
3800     l_return_status := Validate_Attributes(l_def_trqv_rec);
3801     --- If any errors happen abort API
3802     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3803       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3804     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3805       RAISE OKL_API.G_EXCEPTION_ERROR;
3806     END IF;
3807     l_return_status := Validate_Record(l_def_trqv_rec, l_db_trqv_rec);
3808     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3809       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3810     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3811       RAISE OKL_API.G_EXCEPTION_ERROR;
3812     END IF;
3813 
3814     -- Lock the Record
3815     lock_row(
3816       p_api_version                  => p_api_version,
3817       p_init_msg_list                => p_init_msg_list,
3818       x_return_status                => l_return_status,
3819       x_msg_count                    => x_msg_count,
3820       x_msg_data                     => x_msg_data,
3821       p_trqv_rec                     => p_trqv_rec);
3822     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3823       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3824     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3825       RAISE OKL_API.G_EXCEPTION_ERROR;
3826     END IF;
3827 
3828     -----------------------------------------
3829     -- Move VIEW record to "Child" records --
3830     -----------------------------------------
3831     migrate(l_def_trqv_rec, l_trq_rec);
3832     -----------------------------------------------
3833     -- Call the UPDATE_ROW for each child record --
3834     -----------------------------------------------
3835     update_row(
3836       p_init_msg_list,
3837       l_return_status,
3838       x_msg_count,
3839       x_msg_data,
3840       l_trq_rec,
3841       lx_trq_rec
3842     );
3843     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3844       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3845     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3846       RAISE OKL_API.G_EXCEPTION_ERROR;
3847     END IF;
3848     migrate(lx_trq_rec, l_def_trqv_rec);
3849     x_trqv_rec := l_def_trqv_rec;
3850     x_return_status := l_return_status;
3851     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3852   EXCEPTION
3853     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3854       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3855       (
3856         l_api_name,
3857         G_PKG_NAME,
3858         'OKL_API.G_RET_STS_ERROR',
3859         x_msg_count,
3860         x_msg_data,
3861         '_PVT'
3862       );
3863     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3864       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3865       (
3866         l_api_name,
3867         G_PKG_NAME,
3868         'OKL_API.G_RET_STS_UNEXP_ERROR',
3869         x_msg_count,
3870         x_msg_data,
3871         '_PVT'
3872       );
3873     WHEN OTHERS THEN
3874       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3875       (
3876         l_api_name,
3877         G_PKG_NAME,
3878         'OTHERS',
3879         x_msg_count,
3880         x_msg_data,
3881         '_PVT'
3882       );
3883   END update_row;
3884   ----------------------------------------
3885   -- PL/SQL TBL update_row for:trqv_tbl --
3886   ----------------------------------------
3887   PROCEDURE update_row(
3888     p_api_version                  IN NUMBER,
3889     p_init_msg_list                IN VARCHAR2 ,
3890     x_return_status                OUT NOCOPY VARCHAR2,
3891     x_msg_count                    OUT NOCOPY NUMBER,
3892     x_msg_data                     OUT NOCOPY VARCHAR2,
3893     p_trqv_tbl                     IN trqv_tbl_type,
3894     x_trqv_tbl                     OUT NOCOPY trqv_tbl_type,
3895     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3896 
3897     l_api_version                  CONSTANT NUMBER := 1;
3898     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
3899     i                              NUMBER := 0;
3900   BEGIN
3901     OKL_API.init_msg_list(p_init_msg_list);
3902     -- Make sure PL/SQL table has records in it before passing
3903     IF (p_trqv_tbl.COUNT > 0) THEN
3904       i := p_trqv_tbl.FIRST;
3905       LOOP
3906         DECLARE
3907           l_error_rec         OKL_API.ERROR_REC_TYPE;
3908         BEGIN
3909           l_error_rec.api_name := l_api_name;
3910           l_error_rec.api_package := G_PKG_NAME;
3911           l_error_rec.idx := i;
3912           update_row (
3913             p_api_version                  => p_api_version,
3914             p_init_msg_list                => OKL_API.G_FALSE,
3915             x_return_status                => l_error_rec.error_type,
3916             x_msg_count                    => l_error_rec.msg_count,
3917             x_msg_data                     => l_error_rec.msg_data,
3918             p_trqv_rec                     => p_trqv_tbl(i),
3919             x_trqv_rec                     => x_trqv_tbl(i));
3920           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3921             l_error_rec.sqlcode := SQLCODE;
3922             load_error_tbl(l_error_rec, px_error_tbl);
3923           ELSE
3924             x_msg_count := l_error_rec.msg_count;
3925             x_msg_data := l_error_rec.msg_data;
3926           END IF;
3927         EXCEPTION
3928           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3929             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3930             l_error_rec.sqlcode := SQLCODE;
3931             load_error_tbl(l_error_rec, px_error_tbl);
3932           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3933             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3934             l_error_rec.sqlcode := SQLCODE;
3935             load_error_tbl(l_error_rec, px_error_tbl);
3936           WHEN OTHERS THEN
3937             l_error_rec.error_type := 'OTHERS';
3938             l_error_rec.sqlcode := SQLCODE;
3939             load_error_tbl(l_error_rec, px_error_tbl);
3940         END;
3941         EXIT WHEN (i = p_trqv_tbl.LAST);
3942         i := p_trqv_tbl.NEXT(i);
3943       END LOOP;
3944     END IF;
3945     -- Loop through the error_tbl to find the error with the highest severity
3946     -- and return it.
3947     x_return_status := find_highest_exception(px_error_tbl);
3948     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3949   EXCEPTION
3950     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3951       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3952       (
3953         l_api_name,
3954         G_PKG_NAME,
3955         'OKL_API.G_RET_STS_ERROR',
3956         x_msg_count,
3957         x_msg_data,
3958         '_PVT'
3959       );
3960     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3961       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3962       (
3963         l_api_name,
3964         G_PKG_NAME,
3965         'OKL_API.G_RET_STS_UNEXP_ERROR',
3966         x_msg_count,
3967         x_msg_data,
3968         '_PVT'
3969       );
3970     WHEN OTHERS THEN
3971       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3972       (
3973         l_api_name,
3974         G_PKG_NAME,
3975         'OTHERS',
3976         x_msg_count,
3977         x_msg_data,
3978         '_PVT'
3979       );
3980   END update_row;
3981 
3982   ----------------------------------------
3983   -- PL/SQL TBL update_row for:TRQV_TBL --
3984   ----------------------------------------
3985   PROCEDURE update_row(
3986     p_api_version                  IN NUMBER,
3987     p_init_msg_list                IN VARCHAR2 ,
3988     x_return_status                OUT NOCOPY VARCHAR2,
3989     x_msg_count                    OUT NOCOPY NUMBER,
3990     x_msg_data                     OUT NOCOPY VARCHAR2,
3991     p_trqv_tbl                     IN trqv_tbl_type,
3992     x_trqv_tbl                     OUT NOCOPY trqv_tbl_type) IS
3993 
3994     l_api_version                  CONSTANT NUMBER := 1;
3995     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
3996     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3997     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3998   BEGIN
3999     OKL_API.init_msg_list(p_init_msg_list);
4000     -- Make sure PL/SQL table has records in it before passing
4001     IF (p_trqv_tbl.COUNT > 0) THEN
4002       update_row (
4003         p_api_version                  => p_api_version,
4004         p_init_msg_list                => OKL_API.G_FALSE,
4005         x_return_status                => x_return_status,
4006         x_msg_count                    => x_msg_count,
4007         x_msg_data                     => x_msg_data,
4008         p_trqv_tbl                     => p_trqv_tbl,
4009         x_trqv_tbl                     => x_trqv_tbl,
4010         px_error_tbl                   => l_error_tbl);
4011     END IF;
4012     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4013   EXCEPTION
4014     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4015       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4016       (
4017         l_api_name,
4018         G_PKG_NAME,
4019         'OKL_API.G_RET_STS_ERROR',
4020         x_msg_count,
4021         x_msg_data,
4022         '_PVT'
4023       );
4024     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4025       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4026       (
4027         l_api_name,
4028         G_PKG_NAME,
4029         'OKL_API.G_RET_STS_UNEXP_ERROR',
4030         x_msg_count,
4031         x_msg_data,
4032         '_PVT'
4033       );
4034     WHEN OTHERS THEN
4035       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4036       (
4037         l_api_name,
4038         G_PKG_NAME,
4039         'OTHERS',
4040         x_msg_count,
4041         x_msg_data,
4042         '_PVT'
4043       );
4044   END update_row;
4045 
4046   ---------------------------------------------------------------------------
4047   -- PROCEDURE delete_row
4048   ---------------------------------------------------------------------------
4049   -------------------------------------
4050   -- delete_row for:OKL_TRX_REQUESTS --
4051   -------------------------------------
4052   PROCEDURE delete_row(
4053     p_init_msg_list                IN VARCHAR2 ,
4054     x_return_status                OUT NOCOPY VARCHAR2,
4055     x_msg_count                    OUT NOCOPY NUMBER,
4056     x_msg_data                     OUT NOCOPY VARCHAR2,
4057     p_trq_rec                      IN trq_rec_type) IS
4058 
4059     l_api_version                  CONSTANT NUMBER := 1;
4060     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
4061     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4062     l_trq_rec                      trq_rec_type := p_trq_rec;
4063     l_row_notfound                 BOOLEAN := TRUE;
4064   BEGIN
4065     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4066                                               p_init_msg_list,
4067                                               '_PVT',
4068                                               x_return_status);
4069     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4070       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4071     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4072       RAISE OKL_API.G_EXCEPTION_ERROR;
4073     END IF;
4074 
4075     DELETE FROM OKL_TRX_REQUESTS
4076      WHERE ID = p_trq_rec.id;
4077 
4078     x_return_status := l_return_status;
4079     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4080   EXCEPTION
4081     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4082       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4083       (
4084         l_api_name,
4085         G_PKG_NAME,
4086         'OKL_API.G_RET_STS_ERROR',
4087         x_msg_count,
4088         x_msg_data,
4089         '_PVT'
4090       );
4091     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4092       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4093       (
4094         l_api_name,
4095         G_PKG_NAME,
4096         'OKL_API.G_RET_STS_UNEXP_ERROR',
4097         x_msg_count,
4098         x_msg_data,
4099         '_PVT'
4100       );
4101     WHEN OTHERS THEN
4102       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4103       (
4104         l_api_name,
4105         G_PKG_NAME,
4106         'OTHERS',
4107         x_msg_count,
4108         x_msg_data,
4109         '_PVT'
4110       );
4111   END delete_row;
4112   ---------------------------------------
4113   -- delete_row for:OKL_TRX_REQUESTS_V --
4114   ---------------------------------------
4115   PROCEDURE delete_row(
4116     p_api_version                  IN NUMBER,
4117     p_init_msg_list                IN VARCHAR2 ,
4118     x_return_status                OUT NOCOPY VARCHAR2,
4119     x_msg_count                    OUT NOCOPY NUMBER,
4120     x_msg_data                     OUT NOCOPY VARCHAR2,
4121     p_trqv_rec                     IN trqv_rec_type) IS
4122 
4123     l_api_version                  CONSTANT NUMBER := 1;
4124     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
4125     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4126     l_trqv_rec                     trqv_rec_type := p_trqv_rec;
4127     l_trq_rec                      trq_rec_type;
4128   BEGIN
4129     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4130                                               G_PKG_NAME,
4131                                               p_init_msg_list,
4132                                               l_api_version,
4133                                               p_api_version,
4134                                               '_PVT',
4135                                               x_return_status);
4136     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4137       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4138     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4139       RAISE OKL_API.G_EXCEPTION_ERROR;
4140     END IF;
4141     -----------------------------------------
4142     -- Move VIEW record to "Child" records --
4143     -----------------------------------------
4144     migrate(l_trqv_rec, l_trq_rec);
4145     -----------------------------------------------
4146     -- Call the DELETE_ROW for each child record --
4147     -----------------------------------------------
4148     delete_row(
4149       p_init_msg_list,
4150       l_return_status,
4151       x_msg_count,
4152       x_msg_data,
4153       l_trq_rec
4154     );
4155     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4156       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4157     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4158       RAISE OKL_API.G_EXCEPTION_ERROR;
4159     END IF;
4160     x_return_status := l_return_status;
4161     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4162   EXCEPTION
4163     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4164       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4165       (
4166         l_api_name,
4167         G_PKG_NAME,
4168         'OKL_API.G_RET_STS_ERROR',
4169         x_msg_count,
4170         x_msg_data,
4171         '_PVT'
4172       );
4173     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4174       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4175       (
4176         l_api_name,
4177         G_PKG_NAME,
4178         'OKL_API.G_RET_STS_UNEXP_ERROR',
4179         x_msg_count,
4180         x_msg_data,
4181         '_PVT'
4182       );
4183     WHEN OTHERS THEN
4184       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4185       (
4186         l_api_name,
4187         G_PKG_NAME,
4188         'OTHERS',
4189         x_msg_count,
4190         x_msg_data,
4191         '_PVT'
4192       );
4193   END delete_row;
4194   --------------------------------------------------
4195   -- PL/SQL TBL delete_row for:OKL_TRX_REQUESTS_V --
4196   --------------------------------------------------
4197   PROCEDURE delete_row(
4198     p_api_version                  IN NUMBER,
4199     p_init_msg_list                IN VARCHAR2 ,
4200     x_return_status                OUT NOCOPY VARCHAR2,
4201     x_msg_count                    OUT NOCOPY NUMBER,
4202     x_msg_data                     OUT NOCOPY VARCHAR2,
4203     p_trqv_tbl                     IN trqv_tbl_type,
4204     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
4205 
4206     l_api_version                  CONSTANT NUMBER := 1;
4207     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
4208     i                              NUMBER := 0;
4209   BEGIN
4210     OKL_API.init_msg_list(p_init_msg_list);
4211     -- Make sure PL/SQL table has records in it before passing
4212     IF (p_trqv_tbl.COUNT > 0) THEN
4213       i := p_trqv_tbl.FIRST;
4214       LOOP
4215         DECLARE
4216           l_error_rec         OKL_API.ERROR_REC_TYPE;
4217         BEGIN
4218           l_error_rec.api_name := l_api_name;
4219           l_error_rec.api_package := G_PKG_NAME;
4220           l_error_rec.idx := i;
4221           delete_row (
4222             p_api_version                  => p_api_version,
4223             p_init_msg_list                => OKL_API.G_FALSE,
4224             x_return_status                => l_error_rec.error_type,
4225             x_msg_count                    => l_error_rec.msg_count,
4226             x_msg_data                     => l_error_rec.msg_data,
4227             p_trqv_rec                     => p_trqv_tbl(i));
4228           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4229             l_error_rec.sqlcode := SQLCODE;
4230             load_error_tbl(l_error_rec, px_error_tbl);
4231           ELSE
4232             x_msg_count := l_error_rec.msg_count;
4233             x_msg_data := l_error_rec.msg_data;
4234           END IF;
4235         EXCEPTION
4236           WHEN OKL_API.G_EXCEPTION_ERROR THEN
4237             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4238             l_error_rec.sqlcode := SQLCODE;
4239             load_error_tbl(l_error_rec, px_error_tbl);
4240           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4241             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4242             l_error_rec.sqlcode := SQLCODE;
4243             load_error_tbl(l_error_rec, px_error_tbl);
4244           WHEN OTHERS THEN
4245             l_error_rec.error_type := 'OTHERS';
4246             l_error_rec.sqlcode := SQLCODE;
4247             load_error_tbl(l_error_rec, px_error_tbl);
4248         END;
4249         EXIT WHEN (i = p_trqv_tbl.LAST);
4250         i := p_trqv_tbl.NEXT(i);
4251       END LOOP;
4252     END IF;
4253     -- Loop through the error_tbl to find the error with the highest severity
4254     -- and return it.
4255     x_return_status := find_highest_exception(px_error_tbl);
4256     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4257   EXCEPTION
4258     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4259       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4260       (
4261         l_api_name,
4262         G_PKG_NAME,
4263         'OKL_API.G_RET_STS_ERROR',
4264         x_msg_count,
4265         x_msg_data,
4266         '_PVT'
4267       );
4268     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4269       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4270       (
4271         l_api_name,
4272         G_PKG_NAME,
4273         'OKL_API.G_RET_STS_UNEXP_ERROR',
4274         x_msg_count,
4275         x_msg_data,
4276         '_PVT'
4277       );
4278     WHEN OTHERS THEN
4279       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4280       (
4281         l_api_name,
4282         G_PKG_NAME,
4283         'OTHERS',
4284         x_msg_count,
4285         x_msg_data,
4286         '_PVT'
4287       );
4288   END delete_row;
4289 
4290   --------------------------------------------------
4291   -- PL/SQL TBL delete_row for:OKL_TRX_REQUESTS_V --
4292   --------------------------------------------------
4293   PROCEDURE delete_row(
4294     p_api_version                  IN NUMBER,
4295     p_init_msg_list                IN VARCHAR2 ,
4296     x_return_status                OUT NOCOPY VARCHAR2,
4297     x_msg_count                    OUT NOCOPY NUMBER,
4298     x_msg_data                     OUT NOCOPY VARCHAR2,
4299     p_trqv_tbl                     IN trqv_tbl_type) IS
4300 
4301     l_api_version                  CONSTANT NUMBER := 1;
4302     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
4303     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4304     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4305   BEGIN
4306     OKL_API.init_msg_list(p_init_msg_list);
4307     -- Make sure PL/SQL table has records in it before passing
4308     IF (p_trqv_tbl.COUNT > 0) THEN
4309       delete_row (
4310         p_api_version                  => p_api_version,
4311         p_init_msg_list                => OKL_API.G_FALSE,
4312         x_return_status                => x_return_status,
4313         x_msg_count                    => x_msg_count,
4314         x_msg_data                     => x_msg_data,
4315         p_trqv_tbl                     => p_trqv_tbl,
4316         px_error_tbl                   => l_error_tbl);
4317     END IF;
4318     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4319   EXCEPTION
4320     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4321       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4322       (
4323         l_api_name,
4324         G_PKG_NAME,
4325         'OKL_API.G_RET_STS_ERROR',
4326         x_msg_count,
4327         x_msg_data,
4328         '_PVT'
4329       );
4330     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4331       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4332       (
4333         l_api_name,
4334         G_PKG_NAME,
4335         'OKL_API.G_RET_STS_UNEXP_ERROR',
4336         x_msg_count,
4337         x_msg_data,
4338         '_PVT'
4339       );
4340     WHEN OTHERS THEN
4341       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4342       (
4343         l_api_name,
4344         G_PKG_NAME,
4345         'OTHERS',
4346         x_msg_count,
4347         x_msg_data,
4348         '_PVT'
4349       );
4350   END delete_row;
4351 
4352 END OKL_TRQ_PVT;