DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CRF_PVT

Source


1 PACKAGE BODY OKL_CRF_PVT AS
2 /* $Header: OKLSCRFB.pls 120.3 2007/07/16 12:08:48 dkagrawa noship $ */
3   ---------------------------------------------------------------------------
4   -- PROCEDURE load_error_tbl
5   ---------------------------------------------------------------------------
6   PROCEDURE load_error_tbl (
7     px_error_rec                   IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
8     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
9 
10     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
12     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
13   BEGIN
14     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
15     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
17     -- automatically increments the index by 1, (making it 2), however, when the GET function
18     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
20     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21     -- will only update the index variable when 1 and only 1 message is on the stack.
22     IF (last_msg_idx = 1) THEN
23       l_msg_idx := FND_MSG_PUB.G_FIRST;
24     END IF;
25     LOOP
26       fnd_msg_pub.get(
27             p_msg_index     => l_msg_idx,
28             p_encoded       => fnd_api.g_false,
29             p_data          => px_error_rec.msg_data,
30             p_msg_index_out => px_error_rec.msg_count);
31       px_error_tbl(j) := px_error_rec;
32       j := j + 1;
33     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34     END LOOP;
35   END load_error_tbl;
36   ---------------------------------------------------------------------------
37   -- FUNCTION find_highest_exception
38   ---------------------------------------------------------------------------
39   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40   -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
41   FUNCTION find_highest_exception(
42     p_error_tbl                    IN OKL_API.ERROR_TBL_TYPE
43   ) RETURN VARCHAR2 IS
44     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
45     i                              INTEGER := 1;
46   BEGIN
47     IF (p_error_tbl.COUNT > 0) THEN
48       i := p_error_tbl.FIRST;
49       LOOP
50         IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
51           IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
52             l_return_status := p_error_tbl(i).error_type;
53           END IF;
54         END IF;
55         EXIT WHEN (i = p_error_tbl.LAST);
56         i := p_error_tbl.NEXT(i);
57       END LOOP;
58     END IF;
59     RETURN(l_return_status);
60   END find_highest_exception;
61   ---------------------------------------------------------------------------
62   -- FUNCTION get_seq_id
63   ---------------------------------------------------------------------------
64   FUNCTION get_seq_id RETURN NUMBER IS
65   BEGIN
66     RETURN(okc_p_util.raw_to_number(sys_guid()));
67   END get_seq_id;
68 
69   ---------------------------------------------------------------------------
70   -- PROCEDURE qc
71   ---------------------------------------------------------------------------
72   PROCEDURE qc IS
73   BEGIN
74     null;
75   END qc;
76 
77   ---------------------------------------------------------------------------
78   -- PROCEDURE change_version
79   ---------------------------------------------------------------------------
80   PROCEDURE change_version IS
81   BEGIN
82     null;
83   END change_version;
84 
85   ---------------------------------------------------------------------------
86   -- PROCEDURE api_copy
87   ---------------------------------------------------------------------------
88   PROCEDURE api_copy IS
89   BEGIN
90     null;
91   END api_copy;
92 
93   ---------------------------------------------------------------------------
94   -- FUNCTION get_rec for: OKL_CURE_REFUNDS_V
95   ---------------------------------------------------------------------------
96   FUNCTION get_rec (
97     p_crfv_rec                     IN crfv_rec_type,
98     x_no_data_found                OUT NOCOPY BOOLEAN
99   ) RETURN crfv_rec_type IS
100     CURSOR okl_cure_refunds_pk_csr (p_cure_refund_id IN NUMBER) IS
101     SELECT
102             CURE_REFUND_ID,
103             REFUND_NUMBER,
104             STATUS,
105             AMOUNT,
106             BALANCE,
107             TAP_ID,
108             tai_id,
109             CURE_REFUND_STAGE_ID,
110             VENDOR_SITE_ID,
111             CHR_ID,
112             DISBURSEMENT_AMOUNT,
113             OFFSET_AMOUNT,
114             OFFSET_CONTRACT,
115             TOTAL_REFUND_DUE,
116             REFUND_DATE,
117             OBJECT_VERSION_NUMBER,
118             PROGRAM_ID,
119             REQUEST_ID,
120             PROGRAM_APPLICATION_ID,
121             PROGRAM_UPDATE_DATE,
122             ATTRIBUTE_CATEGORY,
123             ATTRIBUTE1,
124             ATTRIBUTE2,
125             ATTRIBUTE3,
126             ATTRIBUTE4,
127             ATTRIBUTE5,
128             ATTRIBUTE6,
129             ATTRIBUTE7,
130             ATTRIBUTE8,
131             ATTRIBUTE9,
132             ATTRIBUTE10,
133             ATTRIBUTE11,
134             ATTRIBUTE12,
135             ATTRIBUTE13,
136             ATTRIBUTE14,
137             ATTRIBUTE15,
138             CREATED_BY,
139             CREATION_DATE,
140             LAST_UPDATED_BY,
141             LAST_UPDATE_DATE,
142             LAST_UPDATE_LOGIN,
143             CURE_REFUND_HEADER_ID,
144             RECEIVED_AMOUNT
145       FROM OKL_CURE_REFUNDS
146      WHERE OKL_CURE_REFUNDS.cure_refund_id = p_cure_refund_id;
147     l_okl_cure_refunds_pk          okl_cure_refunds_pk_csr%ROWTYPE;
148     l_crfv_rec                     crfv_rec_type;
149   BEGIN
150     x_no_data_found := TRUE;
151     -- Get current database values
152     OPEN okl_cure_refunds_pk_csr (p_crfv_rec.cure_refund_id);
153     FETCH okl_cure_refunds_pk_csr INTO
154               l_crfv_rec.cure_refund_id,
155               l_crfv_rec.refund_number,
156               l_crfv_rec.status,
157               l_crfv_rec.amount,
158               l_crfv_rec.balance,
159               l_crfv_rec.tap_id,
160               l_crfv_rec.tai_id,
161               l_crfv_rec.CURE_REFUND_STAGE_ID,
162               l_crfv_rec.vendor_site_id,
163               l_crfv_rec.chr_id,
164               l_crfv_rec.disbursement_amount,
165               l_crfv_rec.OFFSET_amount,
166               l_crfv_rec.OFFSET_CONTRACT,
167               l_crfv_rec.total_refund_due,
168               l_crfv_rec.refund_date,
169               l_crfv_rec.object_version_number,
170               l_crfv_rec.program_id,
171               l_crfv_rec.request_id,
172               l_crfv_rec.program_application_id,
173               l_crfv_rec.program_update_date,
174               l_crfv_rec.attribute_category,
175               l_crfv_rec.attribute1,
176               l_crfv_rec.attribute2,
177               l_crfv_rec.attribute3,
178               l_crfv_rec.attribute4,
179               l_crfv_rec.attribute5,
180               l_crfv_rec.attribute6,
181               l_crfv_rec.attribute7,
182               l_crfv_rec.attribute8,
183               l_crfv_rec.attribute9,
184               l_crfv_rec.attribute10,
185               l_crfv_rec.attribute11,
186               l_crfv_rec.attribute12,
187               l_crfv_rec.attribute13,
188               l_crfv_rec.attribute14,
189               l_crfv_rec.attribute15,
190               l_crfv_rec.created_by,
191               l_crfv_rec.creation_date,
192               l_crfv_rec.last_updated_by,
193               l_crfv_rec.last_update_date,
194               l_crfv_rec.last_update_login,
195               l_crfv_rec.cure_refund_header_id,
196               l_crfv_rec.RECEIVED_AMOUNT;
197     x_no_data_found := okl_cure_refunds_pk_csr%NOTFOUND;
198     CLOSE okl_cure_refunds_pk_csr;
199     RETURN(l_crfv_rec);
200   END get_rec;
201 
202   ------------------------------------------------------------------
203   -- This version of get_rec sets error messages if no data found --
204   ------------------------------------------------------------------
205   FUNCTION get_rec (
206     p_crfv_rec                     IN crfv_rec_type,
207     x_return_status                OUT NOCOPY VARCHAR2
208   ) RETURN crfv_rec_type IS
209     l_crfv_rec                     crfv_rec_type;
210     l_row_notfound                 BOOLEAN := TRUE;
211   BEGIN
212     x_return_status := OKL_API.G_RET_STS_SUCCESS;
213     l_crfv_rec := get_rec(p_crfv_rec, l_row_notfound);
214     IF (l_row_notfound) THEN
215       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'CURE_REFUND_ID');
216       x_return_status := OKL_API.G_RET_STS_ERROR;
217     END IF;
218     RETURN(l_crfv_rec);
219   END get_rec;
220   -----------------------------------------------------------
221   -- So we don't have to pass an "l_row_notfound" variable --
222   -----------------------------------------------------------
223   FUNCTION get_rec (
224     p_crfv_rec                     IN crfv_rec_type
225   ) RETURN crfv_rec_type IS
226     l_row_not_found                BOOLEAN := TRUE;
227   BEGIN
228     RETURN(get_rec(p_crfv_rec, l_row_not_found));
229   END get_rec;
230   ---------------------------------------------------------------------------
231   -- FUNCTION get_rec for: OKL_CURE_REFUNDS
232   ---------------------------------------------------------------------------
233   FUNCTION get_rec (
234     p_crf_rec                      IN crf_rec_type,
235     x_no_data_found                OUT NOCOPY BOOLEAN
236   ) RETURN crf_rec_type IS
237     CURSOR okl_cure_refund_pk_csr (p_cure_refund_id IN NUMBER) IS
238     SELECT
239             CURE_REFUND_ID,
240             REFUND_NUMBER,
241             STATUS,
242             AMOUNT,
243             BALANCE,
244             TAP_ID,
245             tai_id,
246             CURE_REFUND_STAGE_ID,
247             VENDOR_SITE_ID,
248             CHR_ID,
249             DISBURSEMENT_AMOUNT,
250             offset_AMOUNT,
251             offset_contract,
252             TOTAL_REFUND_DUE,
253             REFUND_DATE,
254             OBJECT_VERSION_NUMBER,
255             REQUEST_ID,
256             PROGRAM_APPLICATION_ID,
257             PROGRAM_ID,
258             PROGRAM_UPDATE_DATE,
259             ATTRIBUTE_CATEGORY,
260             ATTRIBUTE1,
261             ATTRIBUTE2,
262             ATTRIBUTE3,
263             ATTRIBUTE4,
264             ATTRIBUTE5,
265             ATTRIBUTE6,
266             ATTRIBUTE7,
267             ATTRIBUTE8,
268             ATTRIBUTE9,
269             ATTRIBUTE10,
270             ATTRIBUTE11,
271             ATTRIBUTE12,
272             ATTRIBUTE13,
273             ATTRIBUTE14,
274             ATTRIBUTE15,
275             CREATED_BY,
276             CREATION_DATE,
277             LAST_UPDATED_BY,
278             LAST_UPDATE_DATE,
279             LAST_UPDATE_LOGIN,
280             CURE_REFUND_HEADER_ID,
281             received_amount
282       FROM Okl_Cure_Refunds
283      WHERE okl_cure_refunds.cure_refund_id = p_cure_refund_id;
284     l_okl_cure_refund_pk           okl_cure_refund_pk_csr%ROWTYPE;
285     l_crf_rec                      crf_rec_type;
286   BEGIN
287     x_no_data_found := TRUE;
288     -- Get current database values
289     OPEN okl_cure_refund_pk_csr (p_crf_rec.cure_refund_id);
290     FETCH okl_cure_refund_pk_csr INTO
291               l_crf_rec.cure_refund_id,
292               l_crf_rec.refund_number,
293               l_crf_rec.status,
294               l_crf_rec.amount,
295               l_crf_rec.balance,
296               l_crf_rec.tap_id,
297               l_crf_rec.tai_id,
298               l_crf_rec.CURE_REFUND_STAGE_ID,
299               l_crf_rec.vendor_site_id,
300               l_crf_rec.chr_id,
301               l_crf_rec.disbursement_amount,
302               l_crf_rec.offset_amount,
303               l_crf_rec.offset_contract,
304               l_crf_rec.total_refund_due,
305               l_crf_rec.refund_date,
306               l_crf_rec.object_version_number,
307               l_crf_rec.request_id,
308               l_crf_rec.program_application_id,
309               l_crf_rec.program_id,
310               l_crf_rec.program_update_date,
311               l_crf_rec.attribute_category,
312               l_crf_rec.attribute1,
313               l_crf_rec.attribute2,
314               l_crf_rec.attribute3,
315               l_crf_rec.attribute4,
316               l_crf_rec.attribute5,
317               l_crf_rec.attribute6,
318               l_crf_rec.attribute7,
319               l_crf_rec.attribute8,
320               l_crf_rec.attribute9,
321               l_crf_rec.attribute10,
322               l_crf_rec.attribute11,
323               l_crf_rec.attribute12,
324               l_crf_rec.attribute13,
325               l_crf_rec.attribute14,
326               l_crf_rec.attribute15,
327               l_crf_rec.created_by,
328               l_crf_rec.creation_date,
329               l_crf_rec.last_updated_by,
330               l_crf_rec.last_update_date,
331               l_crf_rec.last_update_login,
332               l_crf_rec.cure_refund_header_id,
333               l_crf_rec.received_amount;
334     x_no_data_found := okl_cure_refund_pk_csr%NOTFOUND;
335     CLOSE okl_cure_refund_pk_csr;
336     RETURN(l_crf_rec);
337   END get_rec;
338 
339   ------------------------------------------------------------------
340   -- This version of get_rec sets error messages if no data found --
341   ------------------------------------------------------------------
342   FUNCTION get_rec (
343     p_crf_rec                      IN crf_rec_type,
344     x_return_status                OUT NOCOPY VARCHAR2
345   ) RETURN crf_rec_type IS
346     l_crf_rec                      crf_rec_type;
347     l_row_notfound                 BOOLEAN := TRUE;
348   BEGIN
349     x_return_status := OKL_API.G_RET_STS_SUCCESS;
350     l_crf_rec := get_rec(p_crf_rec, l_row_notfound);
351     IF (l_row_notfound) THEN
352       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'CURE_REFUND_ID');
353       x_return_status := OKL_API.G_RET_STS_ERROR;
354     END IF;
355     RETURN(l_crf_rec);
356   END get_rec;
357   -----------------------------------------------------------
358   -- So we don't have to pass an "l_row_notfound" variable --
359   -----------------------------------------------------------
360   FUNCTION get_rec (
361     p_crf_rec                      IN crf_rec_type
362   ) RETURN crf_rec_type IS
363     l_row_not_found                BOOLEAN := TRUE;
364   BEGIN
365     RETURN(get_rec(p_crf_rec, l_row_not_found));
366   END get_rec;
367   ---------------------------------------------------------------------------
368   -- FUNCTION null_out_defaults for: OKL_CURE_REFUNDS_V
369   ---------------------------------------------------------------------------
370   FUNCTION null_out_defaults (
371     p_crfv_rec   IN crfv_rec_type
372   ) RETURN crfv_rec_type IS
373     l_crfv_rec                     crfv_rec_type := p_crfv_rec;
374   BEGIN
375     IF (l_crfv_rec.cure_refund_id = OKL_API.G_MISS_NUM ) THEN
376       l_crfv_rec.cure_refund_id := NULL;
377     END IF;
378     IF (l_crfv_rec.refund_number = OKL_API.G_MISS_CHAR ) THEN
379       l_crfv_rec.refund_number := NULL;
380     END IF;
381     IF (l_crfv_rec.status = OKL_API.G_MISS_CHAR ) THEN
382       l_crfv_rec.status := NULL;
383     END IF;
384     IF (l_crfv_rec.amount = OKL_API.G_MISS_NUM ) THEN
385       l_crfv_rec.amount := NULL;
386     END IF;
387     IF (l_crfv_rec.balance = OKL_API.G_MISS_NUM ) THEN
388       l_crfv_rec.balance := NULL;
389     END IF;
390     IF (l_crfv_rec.tap_id = OKL_API.G_MISS_NUM ) THEN
391       l_crfv_rec.tap_id := NULL;
392     END IF;
393     IF (l_crfv_rec.tai_id = OKL_API.G_MISS_NUM ) THEN
394       l_crfv_rec.tai_id := NULL;
395     END IF;
396     IF (l_crfv_rec.CURE_REFUND_STAGE_ID = OKL_API.G_MISS_NUM ) THEN
397       l_crfv_rec.CURE_REFUND_STAGE_ID := NULL;
398     END IF;
399     IF (l_crfv_rec.vendor_site_id = OKL_API.G_MISS_NUM ) THEN
400       l_crfv_rec.vendor_site_id := NULL;
401     END IF;
402     IF (l_crfv_rec.chr_id = OKL_API.G_MISS_NUM ) THEN
403       l_crfv_rec.chr_id := NULL;
404     END IF;
405     IF (l_crfv_rec.disbursement_amount = OKL_API.G_MISS_NUM ) THEN
406       l_crfv_rec.disbursement_amount := NULL;
407     END IF;
408     IF (l_crfv_rec.offset_amount = OKL_API.G_MISS_NUM ) THEN
409       l_crfv_rec.offset_amount := NULL;
410     END IF;
411     IF (l_crfv_rec.offset_contract = OKL_API.G_MISS_NUM ) THEN
412       l_crfv_rec.offset_contract := NULL;
413     END IF;
414     IF (l_crfv_rec.total_refund_due = OKL_API.G_MISS_NUM ) THEN
415       l_crfv_rec.total_refund_due := NULL;
416     END IF;
417     IF (l_crfv_rec.refund_date = OKL_API.G_MISS_DATE ) THEN
418       l_crfv_rec.refund_date := NULL;
419     END IF;
420     IF (l_crfv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
421       l_crfv_rec.object_version_number := NULL;
422     END IF;
423     IF (l_crfv_rec.program_id = OKL_API.G_MISS_NUM ) THEN
424       l_crfv_rec.program_id := NULL;
425     END IF;
426     IF (l_crfv_rec.request_id = OKL_API.G_MISS_NUM ) THEN
427       l_crfv_rec.request_id := NULL;
428     END IF;
429     IF (l_crfv_rec.program_application_id = OKL_API.G_MISS_NUM ) THEN
430       l_crfv_rec.program_application_id := NULL;
431     END IF;
432     IF (l_crfv_rec.program_update_date = OKL_API.G_MISS_DATE ) THEN
433       l_crfv_rec.program_update_date := NULL;
434     END IF;
435     IF (l_crfv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
436       l_crfv_rec.attribute_category := NULL;
437     END IF;
438     IF (l_crfv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
439       l_crfv_rec.attribute1 := NULL;
440     END IF;
441     IF (l_crfv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
442       l_crfv_rec.attribute2 := NULL;
443     END IF;
444     IF (l_crfv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
445       l_crfv_rec.attribute3 := NULL;
446     END IF;
447     IF (l_crfv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
448       l_crfv_rec.attribute4 := NULL;
449     END IF;
450     IF (l_crfv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
451       l_crfv_rec.attribute5 := NULL;
452     END IF;
453     IF (l_crfv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
454       l_crfv_rec.attribute6 := NULL;
455     END IF;
456     IF (l_crfv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
457       l_crfv_rec.attribute7 := NULL;
458     END IF;
459     IF (l_crfv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
460       l_crfv_rec.attribute8 := NULL;
461     END IF;
462     IF (l_crfv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
463       l_crfv_rec.attribute9 := NULL;
464     END IF;
465     IF (l_crfv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
466       l_crfv_rec.attribute10 := NULL;
467     END IF;
468     IF (l_crfv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
469       l_crfv_rec.attribute11 := NULL;
470     END IF;
471     IF (l_crfv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
472       l_crfv_rec.attribute12 := NULL;
473     END IF;
474     IF (l_crfv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
475       l_crfv_rec.attribute13 := NULL;
476     END IF;
477     IF (l_crfv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
478       l_crfv_rec.attribute14 := NULL;
479     END IF;
480     IF (l_crfv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
481       l_crfv_rec.attribute15 := NULL;
482     END IF;
483     IF (l_crfv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
484       l_crfv_rec.created_by := NULL;
485     END IF;
486     IF (l_crfv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
487       l_crfv_rec.creation_date := NULL;
488     END IF;
489     IF (l_crfv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
490       l_crfv_rec.last_updated_by := NULL;
491     END IF;
492     IF (l_crfv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
493       l_crfv_rec.last_update_date := NULL;
494     END IF;
495     IF (l_crfv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
496       l_crfv_rec.last_update_login := NULL;
497     END IF;
498     IF (l_crfv_rec.cure_refund_header_id = OKL_API.G_MISS_NUM ) THEN
499       l_crfv_rec.cure_refund_header_id := NULL;
500     END IF;
501     IF (l_crfv_rec.received_amount = OKL_API.G_MISS_NUM ) THEN
502       l_crfv_rec.received_amount := NULL;
503     END IF;
504     RETURN(l_crfv_rec);
505   END null_out_defaults;
506   ---------------------------------------------
507   -- Validate_Attributes for: CURE_REFUND_ID --
508   ---------------------------------------------
509   PROCEDURE validate_cure_refund_id(
510     x_return_status                OUT NOCOPY VARCHAR2,
511     p_crfv_rec                     IN crfv_rec_type) IS
512     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
513   BEGIN
514     IF (p_crfv_rec.cure_refund_id = OKL_API.G_MISS_NUM OR
515         p_crfv_rec.cure_refund_id IS NULL)
516     THEN
517       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'cure_refund_id');
518       l_return_status := OKL_API.G_RET_STS_ERROR;
519     END IF;
520     x_return_status := l_return_status;
521   EXCEPTION
522     WHEN OTHERS THEN
523       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
524                           ,p_msg_name     => G_UNEXPECTED_ERROR
525                           ,p_token1       => G_SQLCODE_TOKEN
526                           ,p_token1_value => SQLCODE
527                           ,p_token2       => G_SQLERRM_TOKEN
528                           ,p_token2_value => SQLERRM);
529       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
530   END validate_cure_refund_id;
531   --------------------------------------------
532   -- Validate_Attributes for: REFUND_NUMBER --
533   --------------------------------------------
534   PROCEDURE validate_refund_number(
535     x_return_status                OUT NOCOPY VARCHAR2,
536     p_crfv_rec                     IN crfv_rec_type) IS
537     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
538   BEGIN
539     IF (p_crfv_rec.refund_number = OKL_API.G_MISS_CHAR OR
540         p_crfv_rec.refund_number IS NULL)
541     THEN
542       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'refund_number');
543       l_return_status := OKL_API.G_RET_STS_ERROR;
544     END IF;
545     x_return_status := l_return_status;
546   EXCEPTION
547     WHEN OTHERS THEN
548       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
549                           ,p_msg_name     => G_UNEXPECTED_ERROR
550                           ,p_token1       => G_SQLCODE_TOKEN
551                           ,p_token1_value => SQLCODE
552                           ,p_token2       => G_SQLERRM_TOKEN
553                           ,p_token2_value => SQLERRM);
554       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
555   END validate_refund_number;
556   -------------------------------------
557   -- Validate_Attributes for: TAP_ID --
558   -------------------------------------
559   PROCEDURE validate_tap_id(
560     x_return_status                OUT NOCOPY VARCHAR2,
561     p_crfv_rec                     IN crfv_rec_type) IS
562     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
563   BEGIN
564     IF (p_crfv_rec.tap_id = OKL_API.G_MISS_NUM OR
565         p_crfv_rec.tap_id IS NULL)
566     THEN
567       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'tap_id');
568       l_return_status := OKL_API.G_RET_STS_ERROR;
569     END IF;
570     x_return_status := l_return_status;
571   EXCEPTION
572     WHEN OTHERS THEN
573       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
574                           ,p_msg_name     => G_UNEXPECTED_ERROR
575                           ,p_token1       => G_SQLCODE_TOKEN
576                           ,p_token1_value => SQLCODE
577                           ,p_token2       => G_SQLERRM_TOKEN
578                           ,p_token2_value => SQLERRM);
579       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
580   END validate_tap_id;
581   ---------------------------------------------
582   -- Validate_Attributes for: VENDOR_SITE_ID --
583   ---------------------------------------------
584   PROCEDURE validate_vendor_site_id(
585     x_return_status                OUT NOCOPY VARCHAR2,
586     p_crfv_rec                     IN crfv_rec_type) IS
587     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
588   BEGIN
589     IF (p_crfv_rec.vendor_site_id = OKL_API.G_MISS_NUM OR
590         p_crfv_rec.vendor_site_id IS NULL)
591     THEN
592       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'vendor_site_id');
593       l_return_status := OKL_API.G_RET_STS_ERROR;
594     END IF;
595     x_return_status := l_return_status;
596   EXCEPTION
597     WHEN OTHERS THEN
598       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
599                           ,p_msg_name     => G_UNEXPECTED_ERROR
600                           ,p_token1       => G_SQLCODE_TOKEN
601                           ,p_token1_value => SQLCODE
602                           ,p_token2       => G_SQLERRM_TOKEN
603                           ,p_token2_value => SQLERRM);
604       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
605   END validate_vendor_site_id;
606   -------------------------------------
607   -- Validate_Attributes for: CHR_ID --
608   -------------------------------------
609   PROCEDURE validate_chr_id(
610     x_return_status                OUT NOCOPY VARCHAR2,
611     p_crfv_rec                     IN crfv_rec_type) IS
612     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
613   BEGIN
614     IF (p_crfv_rec.chr_id = OKL_API.G_MISS_NUM OR
615         p_crfv_rec.chr_id IS NULL)
616     THEN
617       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'chr_id');
618       l_return_status := OKL_API.G_RET_STS_ERROR;
619     END IF;
620     x_return_status := l_return_status;
621   EXCEPTION
622     WHEN OTHERS THEN
623       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
624                           ,p_msg_name     => G_UNEXPECTED_ERROR
625                           ,p_token1       => G_SQLCODE_TOKEN
626                           ,p_token1_value => SQLCODE
627                           ,p_token2       => G_SQLERRM_TOKEN
628                           ,p_token2_value => SQLERRM);
629       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
630   END validate_chr_id;
631   --------------------------------------------------
632   -- Validate_Attributes for: DISBURSEMENT_AMOUNT --
633   --------------------------------------------------
634   PROCEDURE validate_disbursement_amount(
635     x_return_status                OUT NOCOPY VARCHAR2,
636     p_crfv_rec                     IN crfv_rec_type) IS
637     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
638   BEGIN
639     IF (p_crfv_rec.disbursement_amount = OKL_API.G_MISS_NUM OR
640         p_crfv_rec.disbursement_amount IS NULL)
641     THEN
642       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'disbursement_amount');
643       l_return_status := OKL_API.G_RET_STS_ERROR;
644     END IF;
645     x_return_status := l_return_status;
646   EXCEPTION
647     WHEN OTHERS THEN
648       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
649                           ,p_msg_name     => G_UNEXPECTED_ERROR
650                           ,p_token1       => G_SQLCODE_TOKEN
651                           ,p_token1_value => SQLCODE
652                           ,p_token2       => G_SQLERRM_TOKEN
653                           ,p_token2_value => SQLERRM);
654       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
655   END validate_disbursement_amount;
656   -----------------------------------------------
657   -- Validate_Attributes for: TOTAL_REFUND_DUE --
658   -----------------------------------------------
659   PROCEDURE validate_total_refund_due(
660     x_return_status                OUT NOCOPY VARCHAR2,
661     p_crfv_rec                     IN crfv_rec_type) IS
662     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
663   BEGIN
664     IF (p_crfv_rec.total_refund_due = OKL_API.G_MISS_NUM OR
665         p_crfv_rec.total_refund_due IS NULL)
666     THEN
667       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'total_refund_due');
668       l_return_status := OKL_API.G_RET_STS_ERROR;
669     END IF;
670     x_return_status := l_return_status;
671   EXCEPTION
672     WHEN OTHERS THEN
673       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
674                           ,p_msg_name     => G_UNEXPECTED_ERROR
675                           ,p_token1       => G_SQLCODE_TOKEN
676                           ,p_token1_value => SQLCODE
677                           ,p_token2       => G_SQLERRM_TOKEN
678                           ,p_token2_value => SQLERRM);
679       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
680   END validate_total_refund_due;
681   ----------------------------------------------------
682   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
683   ----------------------------------------------------
684   PROCEDURE validate_object_version_number(
685     x_return_status                OUT NOCOPY VARCHAR2,
686     p_crfv_rec                     IN crfv_rec_type) IS
687     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
688   BEGIN
689     IF (p_crfv_rec.object_version_number = OKL_API.G_MISS_NUM OR
690         p_crfv_rec.object_version_number IS NULL)
691     THEN
692       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
693       l_return_status := OKL_API.G_RET_STS_ERROR;
694     END IF;
695     x_return_status := l_return_status;
696   EXCEPTION
697     WHEN OTHERS THEN
698       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
699                           ,p_msg_name     => G_UNEXPECTED_ERROR
700                           ,p_token1       => G_SQLCODE_TOKEN
701                           ,p_token1_value => SQLCODE
702                           ,p_token2       => G_SQLERRM_TOKEN
703                           ,p_token2_value => SQLERRM);
704       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
705   END validate_object_version_number;
706   ---------------------------------------------------------------------------
707   -- FUNCTION Validate_Attributes
708   ---------------------------------------------------------------------------
709   ------------------------------------------------
710   -- Validate_Attributes for:OKL_CURE_REFUNDS_V --
711   ------------------------------------------------
712   FUNCTION Validate_Attributes (
713     p_crfv_rec                     IN crfv_rec_type
714   ) RETURN VARCHAR2 IS
715     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
716     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
717   BEGIN
718     -----------------------------
719     -- Column Level Validation --
720     -----------------------------
721     -- ***
722     -- cure_refund_id
723     -- ***
724     validate_cure_refund_id(x_return_status, p_crfv_rec);
725     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
726       l_return_status := x_return_status;
727       RAISE G_EXCEPTION_HALT_VALIDATION;
728     END IF;
729 
730     -- ***
731     -- refund_number
732     -- ***
733     /* validate_refund_number(x_return_status, p_crfv_rec);
734     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
735       l_return_status := x_return_status;
736       RAISE G_EXCEPTION_HALT_VALIDATION;
737     END IF;*/
738 
739     -- ***
740     -- tap_id
741     -- ***
742     /* validate_tap_id(x_return_status, p_crfv_rec);
743     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
744       l_return_status := x_return_status;
745       RAISE G_EXCEPTION_HALT_VALIDATION;
746     END IF; */
747 
748     -- ***
749     -- vendor_site_id
750     -- ***
751     /* validate_vendor_site_id(x_return_status, p_crfv_rec);
752     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
753       l_return_status := x_return_status;
754       RAISE G_EXCEPTION_HALT_VALIDATION;
755     END IF; */
756 
757     -- ***
758     -- chr_id
759     -- ***
760     validate_chr_id(x_return_status, p_crfv_rec);
761     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
762       l_return_status := x_return_status;
763       RAISE G_EXCEPTION_HALT_VALIDATION;
764     END IF;
765 
766     /* -- ***
767     -- disbursement_amount
768     -- ***
769     validate_disbursement_amount(x_return_status, p_crfv_rec);
770     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
771       l_return_status := x_return_status;
772       RAISE G_EXCEPTION_HALT_VALIDATION;
773     END IF; */
774 
775     -- ***
776     -- total_refund_due
777     -- ***
778     /* validate_total_refund_due(x_return_status, p_crfv_rec);
779     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
780       l_return_status := x_return_status;
781       RAISE G_EXCEPTION_HALT_VALIDATION;
782     END IF; */
783 
784     -- ***
785     -- object_version_number
786     -- ***
787     validate_object_version_number(x_return_status, p_crfv_rec);
788     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
789       l_return_status := x_return_status;
790       RAISE G_EXCEPTION_HALT_VALIDATION;
791     END IF;
792 
793     RETURN(l_return_status);
794   EXCEPTION
795     WHEN G_EXCEPTION_HALT_VALIDATION THEN
796       RETURN(l_return_status);
797     WHEN OTHERS THEN
798       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
799                           ,p_msg_name     => G_UNEXPECTED_ERROR
800                           ,p_token1       => G_SQLCODE_TOKEN
801                           ,p_token1_value => SQLCODE
802                           ,p_token2       => G_SQLERRM_TOKEN
803                           ,p_token2_value => SQLERRM);
804       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
805       RETURN(l_return_status);
806   END Validate_Attributes;
807   ---------------------------------------------------------------------------
808   -- PROCEDURE Validate_Record
809   ---------------------------------------------------------------------------
810   --------------------------------------------
811   -- Validate Record for:OKL_CURE_REFUNDS_V --
812   --------------------------------------------
813   FUNCTION Validate_Record (
814     p_crfv_rec IN crfv_rec_type,
815     p_db_crfv_rec IN crfv_rec_type
816   ) RETURN VARCHAR2 IS
817     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
818   BEGIN
819     RETURN (l_return_status);
820   END Validate_Record;
821   FUNCTION Validate_Record (
822     p_crfv_rec IN crfv_rec_type
823   ) RETURN VARCHAR2 IS
824     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
825     l_db_crfv_rec                  crfv_rec_type := get_rec(p_crfv_rec);
826   BEGIN
827     l_return_status := Validate_Record(p_crfv_rec => p_crfv_rec,
828                                        p_db_crfv_rec => l_db_crfv_rec);
829     RETURN (l_return_status);
830   END Validate_Record;
831 
832   ---------------------------------------------------------------------------
833   -- PROCEDURE Migrate
834   ---------------------------------------------------------------------------
835   PROCEDURE migrate (
836     p_from IN crfv_rec_type,
837     p_to   IN OUT NOCOPY crf_rec_type
838   ) IS
839   BEGIN
840     p_to.cure_refund_id := p_from.cure_refund_id;
841     p_to.refund_number := p_from.refund_number;
842     p_to.status := p_from.status;
843     p_to.amount := p_from.amount;
844     p_to.balance := p_from.balance;
845     p_to.tap_id := p_from.tap_id;
846     p_to.tai_id := p_from.tai_id;
847     p_to.CURE_REFUND_STAGE_ID := p_from.CURE_REFUND_STAGE_ID;
848     p_to.vendor_site_id := p_from.vendor_site_id;
849     p_to.chr_id := p_from.chr_id;
850     p_to.disbursement_amount := p_from.disbursement_amount;
851     p_to.offset_amount := p_from.offset_amount;
852     p_to.offset_contract := p_from.offset_contract;
853     p_to.total_refund_due := p_from.total_refund_due;
854     p_to.refund_date := p_from.refund_date;
855     p_to.object_version_number := p_from.object_version_number;
856     p_to.request_id := p_from.request_id;
857     p_to.program_application_id := p_from.program_application_id;
858     p_to.program_id := p_from.program_id;
859     p_to.program_update_date := p_from.program_update_date;
860     p_to.attribute_category := p_from.attribute_category;
861     p_to.attribute1 := p_from.attribute1;
862     p_to.attribute2 := p_from.attribute2;
863     p_to.attribute3 := p_from.attribute3;
864     p_to.attribute4 := p_from.attribute4;
865     p_to.attribute5 := p_from.attribute5;
866     p_to.attribute6 := p_from.attribute6;
867     p_to.attribute7 := p_from.attribute7;
868     p_to.attribute8 := p_from.attribute8;
869     p_to.attribute9 := p_from.attribute9;
870     p_to.attribute10 := p_from.attribute10;
871     p_to.attribute11 := p_from.attribute11;
872     p_to.attribute12 := p_from.attribute12;
873     p_to.attribute13 := p_from.attribute13;
874     p_to.attribute14 := p_from.attribute14;
875     p_to.attribute15 := p_from.attribute15;
876     p_to.created_by := p_from.created_by;
877     p_to.creation_date := p_from.creation_date;
878     p_to.last_updated_by := p_from.last_updated_by;
879     p_to.last_update_date := p_from.last_update_date;
880     p_to.last_update_login := p_from.last_update_login;
881     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
882     p_to.received_amount := p_from.received_amount;
883   END migrate;
884   PROCEDURE migrate (
885     p_from IN crf_rec_type,
886     p_to   IN OUT NOCOPY crfv_rec_type
887   ) IS
888   BEGIN
889     p_to.cure_refund_id := p_from.cure_refund_id;
890     p_to.refund_number := p_from.refund_number;
891     p_to.status := p_from.status;
892     p_to.amount := p_from.amount;
893     p_to.balance := p_from.balance;
894     p_to.tap_id := p_from.tap_id;
895     p_to.tai_id := p_from.tai_id;
896     p_to.CURE_REFUND_STAGE_ID := p_from.CURE_REFUND_STAGE_ID;
897     p_to.vendor_site_id := p_from.vendor_site_id;
898     p_to.chr_id := p_from.chr_id;
899     p_to.disbursement_amount := p_from.disbursement_amount;
900     p_to.offset_amount := p_from.offset_amount;
901     p_to.offset_contract := p_from.offset_contract;
902     p_to.total_refund_due := p_from.total_refund_due;
903     p_to.refund_date := p_from.refund_date;
904     p_to.object_version_number := p_from.object_version_number;
905     p_to.program_id := p_from.program_id;
906     p_to.request_id := p_from.request_id;
907     p_to.program_application_id := p_from.program_application_id;
908     p_to.program_update_date := p_from.program_update_date;
909     p_to.attribute_category := p_from.attribute_category;
910     p_to.attribute1 := p_from.attribute1;
911     p_to.attribute2 := p_from.attribute2;
912     p_to.attribute3 := p_from.attribute3;
913     p_to.attribute4 := p_from.attribute4;
914     p_to.attribute5 := p_from.attribute5;
915     p_to.attribute6 := p_from.attribute6;
916     p_to.attribute7 := p_from.attribute7;
917     p_to.attribute8 := p_from.attribute8;
918     p_to.attribute9 := p_from.attribute9;
919     p_to.attribute10 := p_from.attribute10;
920     p_to.attribute11 := p_from.attribute11;
921     p_to.attribute12 := p_from.attribute12;
922     p_to.attribute13 := p_from.attribute13;
923     p_to.attribute14 := p_from.attribute14;
924     p_to.attribute15 := p_from.attribute15;
925     p_to.created_by := p_from.created_by;
926     p_to.creation_date := p_from.creation_date;
927     p_to.last_updated_by := p_from.last_updated_by;
928     p_to.last_update_date := p_from.last_update_date;
929     p_to.last_update_login := p_from.last_update_login;
930     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
931     p_to.received_amount := p_from.received_amount;
932   END migrate;
933   ---------------------------------------------------------------------------
934   -- PROCEDURE validate_row
935   ---------------------------------------------------------------------------
936   -----------------------------------------
937   -- validate_row for:OKL_CURE_REFUNDS_V --
938   -----------------------------------------
939   PROCEDURE validate_row(
940     p_api_version                  IN NUMBER,
941     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
942     x_return_status                OUT NOCOPY VARCHAR2,
943     x_msg_count                    OUT NOCOPY NUMBER,
944     x_msg_data                     OUT NOCOPY VARCHAR2,
945     p_crfv_rec                     IN crfv_rec_type) IS
946 
947     l_api_version                  CONSTANT NUMBER := 1;
948     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
949     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
950     l_crfv_rec                     crfv_rec_type := p_crfv_rec;
951     l_crf_rec                      crf_rec_type;
952     l_crf_rec                      crf_rec_type;
953   BEGIN
954     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
955                                               G_PKG_NAME,
956                                               p_init_msg_list,
957                                               l_api_version,
958                                               p_api_version,
959                                               '_PVT',
960                                               x_return_status);
961     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
962       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
963     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
964       RAISE OKL_API.G_EXCEPTION_ERROR;
965     END IF;
966     --- Validate all non-missing attributes (Item Level Validation)
967     l_return_status := Validate_Attributes(l_crfv_rec);
968     --- If any errors happen abort API
969     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
970       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
971     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
972       RAISE OKL_API.G_EXCEPTION_ERROR;
973     END IF;
974     l_return_status := Validate_Record(l_crfv_rec);
975     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
976       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
977     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
978       RAISE OKL_API.G_EXCEPTION_ERROR;
979     END IF;
980     x_return_status := l_return_status;
981   EXCEPTION
982     WHEN OKL_API.G_EXCEPTION_ERROR THEN
983       x_return_status := OKL_API.HANDLE_EXCEPTIONS
984       (
985         l_api_name,
986         G_PKG_NAME,
987         'OKL_API.G_RET_STS_ERROR',
988         x_msg_count,
989         x_msg_data,
990         '_PVT'
991       );
992     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
993       x_return_status := OKL_API.HANDLE_EXCEPTIONS
994       (
995         l_api_name,
996         G_PKG_NAME,
997         'OKL_API.G_RET_STS_UNEXP_ERROR',
998         x_msg_count,
999         x_msg_data,
1000         '_PVT'
1001       );
1002     WHEN OTHERS THEN
1003       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1004       (
1005         l_api_name,
1006         G_PKG_NAME,
1007         'OTHERS',
1008         x_msg_count,
1009         x_msg_data,
1010         '_PVT'
1011       );
1012   END validate_row;
1013   ----------------------------------------------------
1014   -- PL/SQL TBL validate_row for:OKL_CURE_REFUNDS_V --
1015   ----------------------------------------------------
1016   PROCEDURE validate_row(
1017     p_api_version                  IN NUMBER,
1018     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1019     x_return_status                OUT NOCOPY VARCHAR2,
1020     x_msg_count                    OUT NOCOPY NUMBER,
1021     x_msg_data                     OUT NOCOPY VARCHAR2,
1022     p_crfv_tbl                     IN crfv_tbl_type,
1023     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1024 
1025     l_api_version                  CONSTANT NUMBER := 1;
1026     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1027     i                              NUMBER := 0;
1028   BEGIN
1029     OKL_API.init_msg_list(p_init_msg_list);
1030     -- Make sure PL/SQL table has records in it before passing
1031     IF (p_crfv_tbl.COUNT > 0) THEN
1032       i := p_crfv_tbl.FIRST;
1033       LOOP
1034         DECLARE
1035           l_error_rec         OKL_API.ERROR_REC_TYPE;
1036         BEGIN
1037           l_error_rec.api_name := l_api_name;
1038           l_error_rec.api_package := G_PKG_NAME;
1039           l_error_rec.idx := i;
1040           validate_row (
1041             p_api_version                  => p_api_version,
1042             p_init_msg_list                => OKL_API.G_FALSE,
1043             x_return_status                => l_error_rec.error_type,
1044             x_msg_count                    => l_error_rec.msg_count,
1045             x_msg_data                     => l_error_rec.msg_data,
1046             p_crfv_rec                     => p_crfv_tbl(i));
1047           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1048             l_error_rec.sqlcode := SQLCODE;
1049             load_error_tbl(l_error_rec, px_error_tbl);
1050           ELSE
1051             x_msg_count := l_error_rec.msg_count;
1052             x_msg_data := l_error_rec.msg_data;
1053           END IF;
1054         EXCEPTION
1055           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1056             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1057             l_error_rec.sqlcode := SQLCODE;
1058             load_error_tbl(l_error_rec, px_error_tbl);
1059           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1060             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1061             l_error_rec.sqlcode := SQLCODE;
1062             load_error_tbl(l_error_rec, px_error_tbl);
1063           WHEN OTHERS THEN
1064             l_error_rec.error_type := 'OTHERS';
1065             l_error_rec.sqlcode := SQLCODE;
1066             load_error_tbl(l_error_rec, px_error_tbl);
1067         END;
1068         EXIT WHEN (i = p_crfv_tbl.LAST);
1069         i := p_crfv_tbl.NEXT(i);
1070       END LOOP;
1071     END IF;
1072     -- Loop through the error_tbl to find the error with the highest severity
1073     -- and return it.
1074     x_return_status := find_highest_exception(px_error_tbl);
1075     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1076   EXCEPTION
1077     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1078       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1079       (
1080         l_api_name,
1081         G_PKG_NAME,
1082         'OKL_API.G_RET_STS_ERROR',
1083         x_msg_count,
1084         x_msg_data,
1085         '_PVT'
1086       );
1087     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1088       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1089       (
1090         l_api_name,
1091         G_PKG_NAME,
1092         'OKL_API.G_RET_STS_UNEXP_ERROR',
1093         x_msg_count,
1094         x_msg_data,
1095         '_PVT'
1096       );
1097     WHEN OTHERS THEN
1098       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1099       (
1100         l_api_name,
1101         G_PKG_NAME,
1102         'OTHERS',
1103         x_msg_count,
1104         x_msg_data,
1105         '_PVT'
1106       );
1107   END validate_row;
1108 
1109   ----------------------------------------------------
1110   -- PL/SQL TBL validate_row for:OKL_CURE_REFUNDS_V --
1111   ----------------------------------------------------
1112   PROCEDURE validate_row(
1113     p_api_version                  IN NUMBER,
1114     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1115     x_return_status                OUT NOCOPY VARCHAR2,
1116     x_msg_count                    OUT NOCOPY NUMBER,
1117     x_msg_data                     OUT NOCOPY VARCHAR2,
1118     p_crfv_tbl                     IN crfv_tbl_type) IS
1119 
1120     l_api_version                  CONSTANT NUMBER := 1;
1121     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1122     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1123     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1124   BEGIN
1125     OKL_API.init_msg_list(p_init_msg_list);
1126     -- Make sure PL/SQL table has records in it before passing
1127     IF (p_crfv_tbl.COUNT > 0) THEN
1128       validate_row (
1129         p_api_version                  => p_api_version,
1130         p_init_msg_list                => OKL_API.G_FALSE,
1131         x_return_status                => x_return_status,
1132         x_msg_count                    => x_msg_count,
1133         x_msg_data                     => x_msg_data,
1134         p_crfv_tbl                     => p_crfv_tbl,
1135         px_error_tbl                   => l_error_tbl);
1136     END IF;
1137     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1138   EXCEPTION
1139     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1140       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1141       (
1142         l_api_name,
1143         G_PKG_NAME,
1144         'OKL_API.G_RET_STS_ERROR',
1145         x_msg_count,
1146         x_msg_data,
1147         '_PVT'
1148       );
1149     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1150       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1151       (
1152         l_api_name,
1153         G_PKG_NAME,
1154         'OKL_API.G_RET_STS_UNEXP_ERROR',
1155         x_msg_count,
1156         x_msg_data,
1157         '_PVT'
1158       );
1159     WHEN OTHERS THEN
1160       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1161       (
1162         l_api_name,
1163         G_PKG_NAME,
1164         'OTHERS',
1165         x_msg_count,
1166         x_msg_data,
1167         '_PVT'
1168       );
1169   END validate_row;
1170 
1171   ---------------------------------------------------------------------------
1172   -- PROCEDURE insert_row
1173   ---------------------------------------------------------------------------
1174   -------------------------------------
1175   -- insert_row for:OKL_CURE_REFUNDS --
1176   -------------------------------------
1177   PROCEDURE insert_row(
1178     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1179     x_return_status                OUT NOCOPY VARCHAR2,
1180     x_msg_count                    OUT NOCOPY NUMBER,
1181     x_msg_data                     OUT NOCOPY VARCHAR2,
1182     p_crf_rec                      IN crf_rec_type,
1183     x_crf_rec                      OUT NOCOPY crf_rec_type) IS
1184 
1185     l_api_version                  CONSTANT NUMBER := 1;
1186     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1187     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1188     l_crf_rec                      crf_rec_type := p_crf_rec;
1189     l_def_crf_rec                  crf_rec_type;
1190     -----------------------------------------
1191     -- Set_Attributes for:OKL_CURE_REFUNDS --
1192     -----------------------------------------
1193     FUNCTION Set_Attributes (
1194       p_crf_rec IN crf_rec_type,
1195       x_crf_rec OUT NOCOPY crf_rec_type
1196     ) RETURN VARCHAR2 IS
1197       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1198     BEGIN
1199       x_crf_rec := p_crf_rec;
1200       RETURN(l_return_status);
1201     END Set_Attributes;
1202   BEGIN
1203     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1204                                               p_init_msg_list,
1205                                               '_PVT',
1206                                               x_return_status);
1207     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1208       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1209     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1210       RAISE OKL_API.G_EXCEPTION_ERROR;
1211     END IF;
1212     --- Setting item atributes
1213     l_return_status := Set_Attributes(
1214       p_crf_rec,                         -- IN
1215       l_crf_rec);                        -- OUT
1216     --- If any errors happen abort API
1217     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1218       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1219     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1220       RAISE OKL_API.G_EXCEPTION_ERROR;
1221     END IF;
1222     INSERT INTO OKL_CURE_REFUNDS(
1223       cure_refund_id,
1224       refund_number,
1225       status,
1226       amount,
1227       balance,
1228       tap_id,
1229       tai_id,
1230       cure_refund_stage_id,
1231       vendor_site_id,
1232       chr_id,
1233       disbursement_amount,
1234       offset_amount,
1235       offset_contract,
1236       total_refund_due,
1237       refund_date,
1238       object_version_number,
1239       request_id,
1240       program_application_id,
1241       program_id,
1242       program_update_date,
1243       attribute_category,
1244       attribute1,
1245       attribute2,
1246       attribute3,
1247       attribute4,
1248       attribute5,
1249       attribute6,
1250       attribute7,
1251       attribute8,
1252       attribute9,
1253       attribute10,
1254       attribute11,
1255       attribute12,
1256       attribute13,
1257       attribute14,
1258       attribute15,
1259       created_by,
1260       creation_date,
1261       last_updated_by,
1262       last_update_date,
1263       last_update_login,
1264       cure_refund_header_id,
1265       received_amount,
1266       org_id)
1267     VALUES (
1268       l_crf_rec.cure_refund_id,
1269       l_crf_rec.refund_number,
1270       l_crf_rec.status,
1271       l_crf_rec.amount,
1272       l_crf_rec.balance,
1273       l_crf_rec.tap_id,
1274       l_crf_rec.tai_id,
1275       l_crf_rec.cure_refund_stage_id,
1276       l_crf_rec.vendor_site_id,
1277       l_crf_rec.chr_id,
1278       l_crf_rec.disbursement_amount,
1279       l_crf_rec.offset_amount,
1280       l_crf_rec.offset_contract,
1281       l_crf_rec.total_refund_due,
1282       l_crf_rec.refund_date,
1283       l_crf_rec.object_version_number,
1284       l_crf_rec.request_id,
1285       l_crf_rec.program_application_id,
1286       l_crf_rec.program_id,
1287       l_crf_rec.program_update_date,
1288       l_crf_rec.attribute_category,
1289       l_crf_rec.attribute1,
1290       l_crf_rec.attribute2,
1291       l_crf_rec.attribute3,
1292       l_crf_rec.attribute4,
1293       l_crf_rec.attribute5,
1294       l_crf_rec.attribute6,
1295       l_crf_rec.attribute7,
1296       l_crf_rec.attribute8,
1297       l_crf_rec.attribute9,
1298       l_crf_rec.attribute10,
1299       l_crf_rec.attribute11,
1300       l_crf_rec.attribute12,
1301       l_crf_rec.attribute13,
1302       l_crf_rec.attribute14,
1303       l_crf_rec.attribute15,
1304       l_crf_rec.created_by,
1305       l_crf_rec.creation_date,
1306       l_crf_rec.last_updated_by,
1307       l_crf_rec.last_update_date,
1308       l_crf_rec.last_update_login,
1309       l_crf_rec.cure_refund_header_id,
1310       l_crf_rec.received_amount,
1311       mo_global.get_current_org_id());   --dkagrawa aded to fix moac issue
1312     -- Set OUT values
1313     x_crf_rec := l_crf_rec;
1314     x_return_status := l_return_status;
1315     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1316   EXCEPTION
1317     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1318       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1319       (
1320         l_api_name,
1321         G_PKG_NAME,
1322         'OKL_API.G_RET_STS_ERROR',
1323         x_msg_count,
1324         x_msg_data,
1325         '_PVT'
1326       );
1327     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1328       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1329       (
1330         l_api_name,
1331         G_PKG_NAME,
1332         'OKL_API.G_RET_STS_UNEXP_ERROR',
1333         x_msg_count,
1334         x_msg_data,
1335         '_PVT'
1336       );
1337     WHEN OTHERS THEN
1338       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1339       (
1340         l_api_name,
1341         G_PKG_NAME,
1342         'OTHERS',
1343         x_msg_count,
1344         x_msg_data,
1345         '_PVT'
1346       );
1347   END insert_row;
1348   ----------------------------------------
1349   -- insert_row for :OKL_CURE_REFUNDS_V --
1350   ----------------------------------------
1351   PROCEDURE insert_row(
1352     p_api_version                  IN NUMBER,
1353     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1354     x_return_status                OUT NOCOPY VARCHAR2,
1355     x_msg_count                    OUT NOCOPY NUMBER,
1356     x_msg_data                     OUT NOCOPY VARCHAR2,
1357     p_crfv_rec                     IN crfv_rec_type,
1358     x_crfv_rec                     OUT NOCOPY crfv_rec_type) IS
1359 
1360     l_api_version                  CONSTANT NUMBER := 1;
1361     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1362     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1363     l_crfv_rec                     crfv_rec_type := p_crfv_rec;
1364     l_def_crfv_rec                 crfv_rec_type;
1365     l_crf_rec                      crf_rec_type;
1366     lx_crf_rec                     crf_rec_type;
1367     -------------------------------
1368     -- FUNCTION fill_who_columns --
1369     -------------------------------
1370     FUNCTION fill_who_columns (
1371       p_crfv_rec IN crfv_rec_type
1372     ) RETURN crfv_rec_type IS
1373       l_crfv_rec crfv_rec_type := p_crfv_rec;
1374     BEGIN
1375       l_crfv_rec.CREATION_DATE := SYSDATE;
1376       l_crfv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1377       l_crfv_rec.LAST_UPDATE_DATE := l_crfv_rec.CREATION_DATE;
1378       l_crfv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1379       l_crfv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1380       RETURN(l_crfv_rec);
1381     END fill_who_columns;
1382     -------------------------------------------
1383     -- Set_Attributes for:OKL_CURE_REFUNDS_V --
1384     -------------------------------------------
1385     FUNCTION Set_Attributes (
1386       p_crfv_rec IN crfv_rec_type,
1387       x_crfv_rec OUT NOCOPY crfv_rec_type
1388     ) RETURN VARCHAR2 IS
1389       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1390     BEGIN
1391       x_crfv_rec := p_crfv_rec;
1392       x_crfv_rec.OBJECT_VERSION_NUMBER := 1;
1393       RETURN(l_return_status);
1394     END Set_Attributes;
1395   BEGIN
1396     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1397                                               G_PKG_NAME,
1398                                               p_init_msg_list,
1399                                               l_api_version,
1400                                               p_api_version,
1401                                               '_PVT',
1402                                               x_return_status);
1403     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1404       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1405     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1406       RAISE OKL_API.G_EXCEPTION_ERROR;
1407     END IF;
1408     l_crfv_rec := null_out_defaults(p_crfv_rec);
1409     -- Set primary key value
1410     l_crfv_rec.CURE_REFUND_ID := get_seq_id;
1411     -- Setting item attributes
1412     l_return_Status := Set_Attributes(
1413       l_crfv_rec,                        -- IN
1414       l_def_crfv_rec);                   -- OUT
1415     --- If any errors happen abort API
1416     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1417       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1418     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1419       RAISE OKL_API.G_EXCEPTION_ERROR;
1420     END IF;
1421     l_def_crfv_rec := fill_who_columns(l_def_crfv_rec);
1422     --- Validate all non-missing attributes (Item Level Validation)
1423     l_return_status := Validate_Attributes(l_def_crfv_rec);
1424     --- If any errors happen abort API
1425     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1426       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1427     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1428       RAISE OKL_API.G_EXCEPTION_ERROR;
1429     END IF;
1430     l_return_status := Validate_Record(l_def_crfv_rec);
1431     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1432       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1433     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1434       RAISE OKL_API.G_EXCEPTION_ERROR;
1435     END IF;
1436     -----------------------------------------
1437     -- Move VIEW record to "Child" records --
1438     -----------------------------------------
1439     migrate(l_def_crfv_rec, l_crf_rec);
1440     -----------------------------------------------
1441     -- Call the INSERT_ROW for each child record --
1442     -----------------------------------------------
1443     insert_row(
1444       p_init_msg_list,
1445       l_return_status,
1446       x_msg_count,
1447       x_msg_data,
1448       l_crf_rec,
1449       lx_crf_rec
1450     );
1451     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1452       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1453     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1454       RAISE OKL_API.G_EXCEPTION_ERROR;
1455     END IF;
1456     migrate(lx_crf_rec, l_def_crfv_rec);
1457     -- Set OUT values
1458     x_crfv_rec := l_def_crfv_rec;
1459     x_return_status := l_return_status;
1460     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1461   EXCEPTION
1462     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1463       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1464       (
1465         l_api_name,
1466         G_PKG_NAME,
1467         'OKL_API.G_RET_STS_ERROR',
1468         x_msg_count,
1469         x_msg_data,
1470         '_PVT'
1471       );
1472     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1473       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1474       (
1475         l_api_name,
1476         G_PKG_NAME,
1477         'OKL_API.G_RET_STS_UNEXP_ERROR',
1478         x_msg_count,
1479         x_msg_data,
1480         '_PVT'
1481       );
1482     WHEN OTHERS THEN
1483       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1484       (
1485         l_api_name,
1486         G_PKG_NAME,
1487         'OTHERS',
1488         x_msg_count,
1489         x_msg_data,
1490         '_PVT'
1491       );
1492   END insert_row;
1493   ----------------------------------------
1494   -- PL/SQL TBL insert_row for:CRFV_TBL --
1495   ----------------------------------------
1496   PROCEDURE insert_row(
1497     p_api_version                  IN NUMBER,
1498     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1499     x_return_status                OUT NOCOPY VARCHAR2,
1500     x_msg_count                    OUT NOCOPY NUMBER,
1501     x_msg_data                     OUT NOCOPY VARCHAR2,
1502     p_crfv_tbl                     IN crfv_tbl_type,
1503     x_crfv_tbl                     OUT NOCOPY crfv_tbl_type,
1504     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1505 
1506     l_api_version                  CONSTANT NUMBER := 1;
1507     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
1508     i                              NUMBER := 0;
1509   BEGIN
1510     OKL_API.init_msg_list(p_init_msg_list);
1511     -- Make sure PL/SQL table has records in it before passing
1512     IF (p_crfv_tbl.COUNT > 0) THEN
1513       i := p_crfv_tbl.FIRST;
1514       LOOP
1515         DECLARE
1516           l_error_rec         OKL_API.ERROR_REC_TYPE;
1517         BEGIN
1518           l_error_rec.api_name := l_api_name;
1519           l_error_rec.api_package := G_PKG_NAME;
1520           l_error_rec.idx := i;
1521           insert_row (
1522             p_api_version                  => p_api_version,
1523             p_init_msg_list                => OKL_API.G_FALSE,
1524             x_return_status                => l_error_rec.error_type,
1525             x_msg_count                    => l_error_rec.msg_count,
1526             x_msg_data                     => l_error_rec.msg_data,
1527             p_crfv_rec                     => p_crfv_tbl(i),
1528             x_crfv_rec                     => x_crfv_tbl(i));
1529           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1530             l_error_rec.sqlcode := SQLCODE;
1531             load_error_tbl(l_error_rec, px_error_tbl);
1532           ELSE
1533             x_msg_count := l_error_rec.msg_count;
1534             x_msg_data := l_error_rec.msg_data;
1535           END IF;
1536         EXCEPTION
1537           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1538             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1539             l_error_rec.sqlcode := SQLCODE;
1540             load_error_tbl(l_error_rec, px_error_tbl);
1541           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1542             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1543             l_error_rec.sqlcode := SQLCODE;
1544             load_error_tbl(l_error_rec, px_error_tbl);
1545           WHEN OTHERS THEN
1546             l_error_rec.error_type := 'OTHERS';
1547             l_error_rec.sqlcode := SQLCODE;
1548             load_error_tbl(l_error_rec, px_error_tbl);
1549         END;
1550         EXIT WHEN (i = p_crfv_tbl.LAST);
1551         i := p_crfv_tbl.NEXT(i);
1552       END LOOP;
1553     END IF;
1554     -- Loop through the error_tbl to find the error with the highest severity
1555     -- and return it.
1556     x_return_status := find_highest_exception(px_error_tbl);
1557     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1558   EXCEPTION
1559     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1560       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1561       (
1562         l_api_name,
1563         G_PKG_NAME,
1564         'OKL_API.G_RET_STS_ERROR',
1565         x_msg_count,
1566         x_msg_data,
1567         '_PVT'
1568       );
1569     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1570       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1571       (
1572         l_api_name,
1573         G_PKG_NAME,
1574         'OKL_API.G_RET_STS_UNEXP_ERROR',
1575         x_msg_count,
1576         x_msg_data,
1577         '_PVT'
1578       );
1579     WHEN OTHERS THEN
1580       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1581       (
1582         l_api_name,
1583         G_PKG_NAME,
1584         'OTHERS',
1585         x_msg_count,
1586         x_msg_data,
1587         '_PVT'
1588       );
1589   END insert_row;
1590 
1591   ----------------------------------------
1592   -- PL/SQL TBL insert_row for:CRFV_TBL --
1593   ----------------------------------------
1594   PROCEDURE insert_row(
1595     p_api_version                  IN NUMBER,
1596     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1597     x_return_status                OUT NOCOPY VARCHAR2,
1598     x_msg_count                    OUT NOCOPY NUMBER,
1599     x_msg_data                     OUT NOCOPY VARCHAR2,
1600     p_crfv_tbl                     IN crfv_tbl_type,
1601     x_crfv_tbl                     OUT NOCOPY crfv_tbl_type) IS
1602 
1603     l_api_version                  CONSTANT NUMBER := 1;
1604     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1605     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1606     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1607   BEGIN
1608     OKL_API.init_msg_list(p_init_msg_list);
1609     -- Make sure PL/SQL table has records in it before passing
1610     IF (p_crfv_tbl.COUNT > 0) THEN
1611       insert_row (
1612         p_api_version                  => p_api_version,
1613         p_init_msg_list                => OKL_API.G_FALSE,
1614         x_return_status                => x_return_status,
1615         x_msg_count                    => x_msg_count,
1616         x_msg_data                     => x_msg_data,
1617         p_crfv_tbl                     => p_crfv_tbl,
1618         x_crfv_tbl                     => x_crfv_tbl,
1619         px_error_tbl                   => l_error_tbl);
1620     END IF;
1621     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1622   EXCEPTION
1623     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1624       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1625       (
1626         l_api_name,
1627         G_PKG_NAME,
1628         'OKL_API.G_RET_STS_ERROR',
1629         x_msg_count,
1630         x_msg_data,
1631         '_PVT'
1632       );
1633     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1634       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1635       (
1636         l_api_name,
1637         G_PKG_NAME,
1638         'OKL_API.G_RET_STS_UNEXP_ERROR',
1639         x_msg_count,
1640         x_msg_data,
1641         '_PVT'
1642       );
1643     WHEN OTHERS THEN
1644       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1645       (
1646         l_api_name,
1647         G_PKG_NAME,
1648         'OTHERS',
1649         x_msg_count,
1650         x_msg_data,
1651         '_PVT'
1652       );
1653   END insert_row;
1654 
1655   ---------------------------------------------------------------------------
1656   -- PROCEDURE lock_row
1657   ---------------------------------------------------------------------------
1658   -----------------------------------
1659   -- lock_row for:OKL_CURE_REFUNDS --
1660   -----------------------------------
1661   PROCEDURE lock_row(
1662     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1663     x_return_status                OUT NOCOPY VARCHAR2,
1664     x_msg_count                    OUT NOCOPY NUMBER,
1665     x_msg_data                     OUT NOCOPY VARCHAR2,
1666     p_crf_rec                      IN crf_rec_type) IS
1667 
1668     E_Resource_Busy                EXCEPTION;
1669     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1670     CURSOR lock_csr (p_crf_rec IN crf_rec_type) IS
1671     SELECT OBJECT_VERSION_NUMBER
1672       FROM OKL_CURE_REFUNDS
1673      WHERE CURE_REFUND_ID = p_crf_rec.cure_refund_id
1674        AND OBJECT_VERSION_NUMBER = p_crf_rec.object_version_number
1675     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1676 
1677     CURSOR lchk_csr (p_crf_rec IN crf_rec_type) IS
1678     SELECT OBJECT_VERSION_NUMBER
1679       FROM OKL_CURE_REFUNDS
1680      WHERE CURE_REFUND_ID = p_crf_rec.cure_refund_id;
1681     l_api_version                  CONSTANT NUMBER := 1;
1682     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1683     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1684     l_object_version_number        OKL_CURE_REFUNDS.OBJECT_VERSION_NUMBER%TYPE;
1685     lc_object_version_number       OKL_CURE_REFUNDS.OBJECT_VERSION_NUMBER%TYPE;
1686     l_row_notfound                 BOOLEAN := FALSE;
1687     lc_row_notfound                BOOLEAN := FALSE;
1688   BEGIN
1689     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1690                                               p_init_msg_list,
1691                                               '_PVT',
1692                                               x_return_status);
1693     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1694       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1695     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1696       RAISE OKL_API.G_EXCEPTION_ERROR;
1697     END IF;
1698     BEGIN
1699       OPEN lock_csr(p_crf_rec);
1700       FETCH lock_csr INTO l_object_version_number;
1701       l_row_notfound := lock_csr%NOTFOUND;
1702       CLOSE lock_csr;
1703     EXCEPTION
1704       WHEN E_Resource_Busy THEN
1705         IF (lock_csr%ISOPEN) THEN
1706           CLOSE lock_csr;
1707         END IF;
1708         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1709         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1710     END;
1711 
1712     IF ( l_row_notfound ) THEN
1713       OPEN lchk_csr(p_crf_rec);
1714       FETCH lchk_csr INTO lc_object_version_number;
1715       lc_row_notfound := lchk_csr%NOTFOUND;
1716       CLOSE lchk_csr;
1717     END IF;
1718     IF (lc_row_notfound) THEN
1719       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1720       RAISE OKL_API.G_EXCEPTION_ERROR;
1721     ELSIF lc_object_version_number > p_crf_rec.object_version_number THEN
1722       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1723       RAISE OKL_API.G_EXCEPTION_ERROR;
1724     ELSIF lc_object_version_number <> p_crf_rec.object_version_number THEN
1725       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1726       RAISE OKL_API.G_EXCEPTION_ERROR;
1727     ELSIF lc_object_version_number = -1 THEN
1728       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1729       RAISE OKL_API.G_EXCEPTION_ERROR;
1730     END IF;
1731     x_return_status := l_return_status;
1732     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1733   EXCEPTION
1734     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1735       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1736       (
1737         l_api_name,
1738         G_PKG_NAME,
1739         'OKL_API.G_RET_STS_ERROR',
1740         x_msg_count,
1741         x_msg_data,
1742         '_PVT'
1743       );
1744     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1745       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1746       (
1747         l_api_name,
1748         G_PKG_NAME,
1749         'OKL_API.G_RET_STS_UNEXP_ERROR',
1750         x_msg_count,
1751         x_msg_data,
1752         '_PVT'
1753       );
1754     WHEN OTHERS THEN
1755       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1756       (
1757         l_api_name,
1758         G_PKG_NAME,
1759         'OTHERS',
1760         x_msg_count,
1761         x_msg_data,
1762         '_PVT'
1763       );
1764   END lock_row;
1765   --------------------------------------
1766   -- lock_row for: OKL_CURE_REFUNDS_V --
1767   --------------------------------------
1768   PROCEDURE lock_row(
1769     p_api_version                  IN NUMBER,
1770     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1771     x_return_status                OUT NOCOPY VARCHAR2,
1772     x_msg_count                    OUT NOCOPY NUMBER,
1773     x_msg_data                     OUT NOCOPY VARCHAR2,
1774     p_crfv_rec                     IN crfv_rec_type) IS
1775 
1776     l_api_version                  CONSTANT NUMBER := 1;
1777     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1778     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1779     l_crf_rec                      crf_rec_type;
1780   BEGIN
1781     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1782                                               G_PKG_NAME,
1783                                               p_init_msg_list,
1784                                               l_api_version,
1785                                               p_api_version,
1786                                               '_PVT',
1787                                               x_return_status);
1788     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1789       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1790     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1791       RAISE OKL_API.G_EXCEPTION_ERROR;
1792     END IF;
1793     -----------------------------------------
1794     -- Move VIEW record to "Child" records --
1795     -----------------------------------------
1796     migrate(p_crfv_rec, l_crf_rec);
1797     ---------------------------------------------
1798     -- Call the LOCK_ROW for each child record --
1799     ---------------------------------------------
1800     lock_row(
1801       p_init_msg_list,
1802       l_return_status,
1803       x_msg_count,
1804       x_msg_data,
1805       l_crf_rec
1806     );
1807     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1808       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1809     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1810       RAISE OKL_API.G_EXCEPTION_ERROR;
1811     END IF;
1812     x_return_status := l_return_status;
1813     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1814   EXCEPTION
1815     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1816       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1817       (
1818         l_api_name,
1819         G_PKG_NAME,
1820         'OKL_API.G_RET_STS_ERROR',
1821         x_msg_count,
1822         x_msg_data,
1823         '_PVT'
1824       );
1825     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1826       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1827       (
1828         l_api_name,
1829         G_PKG_NAME,
1830         'OKL_API.G_RET_STS_UNEXP_ERROR',
1831         x_msg_count,
1832         x_msg_data,
1833         '_PVT'
1834       );
1835     WHEN OTHERS THEN
1836       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1837       (
1838         l_api_name,
1839         G_PKG_NAME,
1840         'OTHERS',
1841         x_msg_count,
1842         x_msg_data,
1843         '_PVT'
1844       );
1845   END lock_row;
1846   --------------------------------------
1847   -- PL/SQL TBL lock_row for:CRFV_TBL --
1848   --------------------------------------
1849   PROCEDURE lock_row(
1850     p_api_version                  IN NUMBER,
1851     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1852     x_return_status                OUT NOCOPY VARCHAR2,
1853     x_msg_count                    OUT NOCOPY NUMBER,
1854     x_msg_data                     OUT NOCOPY VARCHAR2,
1855     p_crfv_tbl                     IN crfv_tbl_type,
1856     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1857 
1858     l_api_version                  CONSTANT NUMBER := 1;
1859     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1860     i                              NUMBER := 0;
1861   BEGIN
1862     OKL_API.init_msg_list(p_init_msg_list);
1863     -- Make sure PL/SQL table has recrods in it before passing
1864     IF (p_crfv_tbl.COUNT > 0) THEN
1865       i := p_crfv_tbl.FIRST;
1866       LOOP
1867         DECLARE
1868           l_error_rec         OKL_API.ERROR_REC_TYPE;
1869         BEGIN
1870           l_error_rec.api_name := l_api_name;
1871           l_error_rec.api_package := G_PKG_NAME;
1872           l_error_rec.idx := i;
1873           lock_row(
1874             p_api_version                  => p_api_version,
1875             p_init_msg_list                => OKL_API.G_FALSE,
1876             x_return_status                => l_error_rec.error_type,
1877             x_msg_count                    => l_error_rec.msg_count,
1878             x_msg_data                     => l_error_rec.msg_data,
1879             p_crfv_rec                     => p_crfv_tbl(i));
1880           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1881             l_error_rec.sqlcode := SQLCODE;
1882             load_error_tbl(l_error_rec, px_error_tbl);
1883           ELSE
1884             x_msg_count := l_error_rec.msg_count;
1885             x_msg_data := l_error_rec.msg_data;
1886           END IF;
1887         EXCEPTION
1888           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1889             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1890             l_error_rec.sqlcode := SQLCODE;
1891             load_error_tbl(l_error_rec, px_error_tbl);
1892           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1893             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1894             l_error_rec.sqlcode := SQLCODE;
1895             load_error_tbl(l_error_rec, px_error_tbl);
1896           WHEN OTHERS THEN
1897             l_error_rec.error_type := 'OTHERS';
1898             l_error_rec.sqlcode := SQLCODE;
1899             load_error_tbl(l_error_rec, px_error_tbl);
1900         END;
1901         EXIT WHEN (i = p_crfv_tbl.LAST);
1902         i := p_crfv_tbl.NEXT(i);
1903       END LOOP;
1904     END IF;
1905     -- Loop through the error_tbl to find the error with the highest severity
1906     -- and return it.
1907     x_return_status := find_highest_exception(px_error_tbl);
1908     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1909   EXCEPTION
1910     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1911       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1912       (
1913         l_api_name,
1914         G_PKG_NAME,
1915         'OKL_API.G_RET_STS_ERROR',
1916         x_msg_count,
1917         x_msg_data,
1918         '_PVT'
1919       );
1920     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1921       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1922       (
1923         l_api_name,
1924         G_PKG_NAME,
1925         'OKL_API.G_RET_STS_UNEXP_ERROR',
1926         x_msg_count,
1927         x_msg_data,
1928         '_PVT'
1929       );
1930     WHEN OTHERS THEN
1931       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1932       (
1933         l_api_name,
1934         G_PKG_NAME,
1935         'OTHERS',
1936         x_msg_count,
1937         x_msg_data,
1938         '_PVT'
1939       );
1940   END lock_row;
1941   --------------------------------------
1942   -- PL/SQL TBL lock_row for:CRFV_TBL --
1943   --------------------------------------
1944   PROCEDURE lock_row(
1945     p_api_version                  IN NUMBER,
1946     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1947     x_return_status                OUT NOCOPY VARCHAR2,
1948     x_msg_count                    OUT NOCOPY NUMBER,
1949     x_msg_data                     OUT NOCOPY VARCHAR2,
1950     p_crfv_tbl                     IN crfv_tbl_type) IS
1951 
1952     l_api_version                  CONSTANT NUMBER := 1;
1953     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1954     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1955     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1956   BEGIN
1957     OKL_API.init_msg_list(p_init_msg_list);
1958     -- Make sure PL/SQL table has recrods in it before passing
1959     IF (p_crfv_tbl.COUNT > 0) THEN
1960       lock_row(
1961         p_api_version                  => p_api_version,
1962         p_init_msg_list                => OKL_API.G_FALSE,
1963         x_return_status                => x_return_status,
1964         x_msg_count                    => x_msg_count,
1965         x_msg_data                     => x_msg_data,
1966         p_crfv_tbl                     => p_crfv_tbl,
1967         px_error_tbl                   => l_error_tbl);
1968     END IF;
1969     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1970   EXCEPTION
1971     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1972       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1973       (
1974         l_api_name,
1975         G_PKG_NAME,
1976         'OKL_API.G_RET_STS_ERROR',
1977         x_msg_count,
1978         x_msg_data,
1979         '_PVT'
1980       );
1981     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1982       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1983       (
1984         l_api_name,
1985         G_PKG_NAME,
1986         'OKL_API.G_RET_STS_UNEXP_ERROR',
1987         x_msg_count,
1988         x_msg_data,
1989         '_PVT'
1990       );
1991     WHEN OTHERS THEN
1992       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1993       (
1994         l_api_name,
1995         G_PKG_NAME,
1996         'OTHERS',
1997         x_msg_count,
1998         x_msg_data,
1999         '_PVT'
2000       );
2001   END lock_row;
2002   ---------------------------------------------------------------------------
2003   -- PROCEDURE update_row
2004   ---------------------------------------------------------------------------
2005   -------------------------------------
2006   -- update_row for:OKL_CURE_REFUNDS --
2007   -------------------------------------
2008   PROCEDURE update_row(
2009     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2010     x_return_status                OUT NOCOPY VARCHAR2,
2011     x_msg_count                    OUT NOCOPY NUMBER,
2012     x_msg_data                     OUT NOCOPY VARCHAR2,
2013     p_crf_rec                      IN crf_rec_type,
2014     x_crf_rec                      OUT NOCOPY crf_rec_type) IS
2015 
2016     l_api_version                  CONSTANT NUMBER := 1;
2017     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2018     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2019     l_crf_rec                      crf_rec_type := p_crf_rec;
2020     l_def_crf_rec                  crf_rec_type;
2021     l_row_notfound                 BOOLEAN := TRUE;
2022     ----------------------------------
2023     -- FUNCTION populate_new_record --
2024     ----------------------------------
2025     FUNCTION populate_new_record (
2026       p_crf_rec IN crf_rec_type,
2027       x_crf_rec OUT NOCOPY crf_rec_type
2028     ) RETURN VARCHAR2 IS
2029       l_crf_rec                      crf_rec_type;
2030       l_row_notfound                 BOOLEAN := TRUE;
2031       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2032     BEGIN
2033       x_crf_rec := p_crf_rec;
2034       -- Get current database values
2035       l_crf_rec := get_rec(p_crf_rec, l_return_status);
2036       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2037         IF (x_crf_rec.cure_refund_id = OKL_API.G_MISS_NUM)
2038         THEN
2039           x_crf_rec.cure_refund_id := l_crf_rec.cure_refund_id;
2040         END IF;
2041         IF (x_crf_rec.refund_number = OKL_API.G_MISS_CHAR)
2042         THEN
2043           x_crf_rec.refund_number := l_crf_rec.refund_number;
2044         END IF;
2045         IF (x_crf_rec.status = OKL_API.G_MISS_CHAR)
2046         THEN
2047           x_crf_rec.status := l_crf_rec.status;
2048         END IF;
2049         IF (x_crf_rec.amount = OKL_API.G_MISS_NUM)
2050         THEN
2051           x_crf_rec.amount := l_crf_rec.amount;
2052         END IF;
2053         IF (x_crf_rec.balance = OKL_API.G_MISS_NUM)
2054         THEN
2055           x_crf_rec.balance := l_crf_rec.balance;
2056         END IF;
2057         IF (x_crf_rec.tap_id = OKL_API.G_MISS_NUM)
2058         THEN
2059           x_crf_rec.tap_id := l_crf_rec.tap_id;
2060         END IF;
2061         IF (x_crf_rec.tai_id = OKL_API.G_MISS_NUM)
2062         THEN
2063           x_crf_rec.tai_id := l_crf_rec.tai_id;
2064         END IF;
2065         IF (x_crf_rec.cure_refund_stage_id = OKL_API.G_MISS_NUM)
2066         THEN
2067           x_crf_rec.cure_refund_stage_id := l_crf_rec.cure_refund_stage_id;
2068         END IF;
2069         IF (x_crf_rec.vendor_site_id = OKL_API.G_MISS_NUM)
2070         THEN
2071           x_crf_rec.vendor_site_id := l_crf_rec.vendor_site_id;
2072         END IF;
2073         IF (x_crf_rec.chr_id = OKL_API.G_MISS_NUM)
2074         THEN
2075           x_crf_rec.chr_id := l_crf_rec.chr_id;
2076         END IF;
2077         IF (x_crf_rec.disbursement_amount = OKL_API.G_MISS_NUM)
2078         THEN
2079           x_crf_rec.disbursement_amount := l_crf_rec.disbursement_amount;
2080         END IF;
2081 
2082         IF (x_crf_rec.offset_amount = OKL_API.G_MISS_NUM)
2083         THEN
2084           x_crf_rec.offset_amount := l_crf_rec.offset_amount;
2085         END IF;
2086         IF (x_crf_rec.offset_contract = OKL_API.G_MISS_NUM)
2087         THEN
2088           x_crf_rec.offset_contract := l_crf_rec.offset_contract;
2089         END IF;
2090 
2091         IF (x_crf_rec.total_refund_due = OKL_API.G_MISS_NUM)
2092         THEN
2093           x_crf_rec.total_refund_due := l_crf_rec.total_refund_due;
2094         END IF;
2095         IF (x_crf_rec.refund_date = OKL_API.G_MISS_DATE)
2096         THEN
2097           x_crf_rec.refund_date := l_crf_rec.refund_date;
2098         END IF;
2099         IF (x_crf_rec.object_version_number = OKL_API.G_MISS_NUM)
2100         THEN
2101           x_crf_rec.object_version_number := l_crf_rec.object_version_number;
2102         END IF;
2103         IF (x_crf_rec.request_id = OKL_API.G_MISS_NUM)
2104         THEN
2105           x_crf_rec.request_id := l_crf_rec.request_id;
2106         END IF;
2107         IF (x_crf_rec.program_application_id = OKL_API.G_MISS_NUM)
2108         THEN
2109           x_crf_rec.program_application_id := l_crf_rec.program_application_id;
2110         END IF;
2111         IF (x_crf_rec.program_id = OKL_API.G_MISS_NUM)
2112         THEN
2113           x_crf_rec.program_id := l_crf_rec.program_id;
2114         END IF;
2115         IF (x_crf_rec.program_update_date = OKL_API.G_MISS_DATE)
2116         THEN
2117           x_crf_rec.program_update_date := l_crf_rec.program_update_date;
2118         END IF;
2119         IF (x_crf_rec.attribute_category = OKL_API.G_MISS_CHAR)
2120         THEN
2121           x_crf_rec.attribute_category := l_crf_rec.attribute_category;
2122         END IF;
2123         IF (x_crf_rec.attribute1 = OKL_API.G_MISS_CHAR)
2124         THEN
2125           x_crf_rec.attribute1 := l_crf_rec.attribute1;
2126         END IF;
2127         IF (x_crf_rec.attribute2 = OKL_API.G_MISS_CHAR)
2128         THEN
2129           x_crf_rec.attribute2 := l_crf_rec.attribute2;
2130         END IF;
2131         IF (x_crf_rec.attribute3 = OKL_API.G_MISS_CHAR)
2132         THEN
2133           x_crf_rec.attribute3 := l_crf_rec.attribute3;
2134         END IF;
2135         IF (x_crf_rec.attribute4 = OKL_API.G_MISS_CHAR)
2136         THEN
2137           x_crf_rec.attribute4 := l_crf_rec.attribute4;
2138         END IF;
2139         IF (x_crf_rec.attribute5 = OKL_API.G_MISS_CHAR)
2140         THEN
2141           x_crf_rec.attribute5 := l_crf_rec.attribute5;
2142         END IF;
2143         IF (x_crf_rec.attribute6 = OKL_API.G_MISS_CHAR)
2144         THEN
2145           x_crf_rec.attribute6 := l_crf_rec.attribute6;
2146         END IF;
2147         IF (x_crf_rec.attribute7 = OKL_API.G_MISS_CHAR)
2148         THEN
2149           x_crf_rec.attribute7 := l_crf_rec.attribute7;
2150         END IF;
2151         IF (x_crf_rec.attribute8 = OKL_API.G_MISS_CHAR)
2152         THEN
2153           x_crf_rec.attribute8 := l_crf_rec.attribute8;
2154         END IF;
2155         IF (x_crf_rec.attribute9 = OKL_API.G_MISS_CHAR)
2156         THEN
2157           x_crf_rec.attribute9 := l_crf_rec.attribute9;
2158         END IF;
2159         IF (x_crf_rec.attribute10 = OKL_API.G_MISS_CHAR)
2160         THEN
2161           x_crf_rec.attribute10 := l_crf_rec.attribute10;
2162         END IF;
2163         IF (x_crf_rec.attribute11 = OKL_API.G_MISS_CHAR)
2164         THEN
2165           x_crf_rec.attribute11 := l_crf_rec.attribute11;
2166         END IF;
2167         IF (x_crf_rec.attribute12 = OKL_API.G_MISS_CHAR)
2168         THEN
2169           x_crf_rec.attribute12 := l_crf_rec.attribute12;
2170         END IF;
2171         IF (x_crf_rec.attribute13 = OKL_API.G_MISS_CHAR)
2172         THEN
2173           x_crf_rec.attribute13 := l_crf_rec.attribute13;
2174         END IF;
2175         IF (x_crf_rec.attribute14 = OKL_API.G_MISS_CHAR)
2176         THEN
2177           x_crf_rec.attribute14 := l_crf_rec.attribute14;
2178         END IF;
2179         IF (x_crf_rec.attribute15 = OKL_API.G_MISS_CHAR)
2180         THEN
2181           x_crf_rec.attribute15 := l_crf_rec.attribute15;
2182         END IF;
2183         IF (x_crf_rec.created_by = OKL_API.G_MISS_NUM)
2184         THEN
2185           x_crf_rec.created_by := l_crf_rec.created_by;
2186         END IF;
2187         IF (x_crf_rec.creation_date = OKL_API.G_MISS_DATE)
2188         THEN
2189           x_crf_rec.creation_date := l_crf_rec.creation_date;
2190         END IF;
2191         IF (x_crf_rec.last_updated_by = OKL_API.G_MISS_NUM)
2192         THEN
2193           x_crf_rec.last_updated_by := l_crf_rec.last_updated_by;
2194         END IF;
2195         IF (x_crf_rec.last_update_date = OKL_API.G_MISS_DATE)
2196         THEN
2197           x_crf_rec.last_update_date := l_crf_rec.last_update_date;
2198         END IF;
2199         IF (x_crf_rec.last_update_login = OKL_API.G_MISS_NUM)
2200         THEN
2201           x_crf_rec.last_update_login := l_crf_rec.last_update_login;
2202         END IF;
2203         IF (x_crf_rec.cure_refund_header_id = OKL_API.G_MISS_NUM)
2204         THEN
2205           x_crf_rec.cure_refund_header_id := l_crf_rec.cure_refund_header_id;
2206         END IF;
2207 
2208         IF (x_crf_rec.received_amount = OKL_API.G_MISS_NUM)
2209         THEN
2210           x_crf_rec.received_amount := l_crf_rec.received_amount;
2211         END IF;
2212 
2213       END IF;
2214       RETURN(l_return_status);
2215     END populate_new_record;
2216     -----------------------------------------
2217     -- Set_Attributes for:OKL_CURE_REFUNDS --
2218     -----------------------------------------
2219     FUNCTION Set_Attributes (
2220       p_crf_rec IN crf_rec_type,
2221       x_crf_rec OUT NOCOPY crf_rec_type
2222     ) RETURN VARCHAR2 IS
2223       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2224     BEGIN
2225       x_crf_rec := p_crf_rec;
2226       x_crf_rec.OBJECT_VERSION_NUMBER := p_crf_rec.OBJECT_VERSION_NUMBER + 1;
2227       RETURN(l_return_status);
2228     END Set_Attributes;
2229   BEGIN
2230     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2231                                               p_init_msg_list,
2232                                               '_PVT',
2233                                               x_return_status);
2234     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2235       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2236     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2237       RAISE OKL_API.G_EXCEPTION_ERROR;
2238     END IF;
2239     --- Setting item attributes
2240     l_return_status := Set_Attributes(
2241       p_crf_rec,                         -- IN
2242       l_crf_rec);                        -- OUT
2243     --- If any errors happen abort API
2244     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2245       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2246     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2247       RAISE OKL_API.G_EXCEPTION_ERROR;
2248     END IF;
2249     l_return_status := populate_new_record(l_crf_rec, l_def_crf_rec);
2250     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2251       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2252     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2253       RAISE OKL_API.G_EXCEPTION_ERROR;
2254     END IF;
2255     UPDATE OKL_CURE_REFUNDS
2256     SET REFUND_NUMBER = l_def_crf_rec.refund_number,
2257         STATUS = l_def_crf_rec.status,
2258         AMOUNT = l_def_crf_rec.amount,
2259         BALANCE = l_def_crf_rec.balance,
2260         TAP_ID = l_def_crf_rec.tap_id,
2261         TAi_ID = l_def_crf_rec.tai_id,
2262         cure_refund_stage_id = l_def_crf_rec.cure_refund_stage_id,
2263         VENDOR_SITE_ID = l_def_crf_rec.vendor_site_id,
2264         CHR_ID = l_def_crf_rec.chr_id,
2265         DISBURSEMENT_AMOUNT = l_def_crf_rec.disbursement_amount,
2266         offset_amount = l_def_crf_rec.offset_amount,
2267         offset_contract = l_def_crf_rec.offset_contract,
2268         TOTAL_REFUND_DUE = l_def_crf_rec.total_refund_due,
2269         REFUND_DATE = l_def_crf_rec.refund_date,
2270         OBJECT_VERSION_NUMBER = l_def_crf_rec.object_version_number,
2271         REQUEST_ID = l_def_crf_rec.request_id,
2272         PROGRAM_APPLICATION_ID = l_def_crf_rec.program_application_id,
2273         PROGRAM_ID = l_def_crf_rec.program_id,
2274         PROGRAM_UPDATE_DATE = l_def_crf_rec.program_update_date,
2275         ATTRIBUTE_CATEGORY = l_def_crf_rec.attribute_category,
2276         ATTRIBUTE1 = l_def_crf_rec.attribute1,
2277         ATTRIBUTE2 = l_def_crf_rec.attribute2,
2278         ATTRIBUTE3 = l_def_crf_rec.attribute3,
2279         ATTRIBUTE4 = l_def_crf_rec.attribute4,
2280         ATTRIBUTE5 = l_def_crf_rec.attribute5,
2281         ATTRIBUTE6 = l_def_crf_rec.attribute6,
2282         ATTRIBUTE7 = l_def_crf_rec.attribute7,
2283         ATTRIBUTE8 = l_def_crf_rec.attribute8,
2284         ATTRIBUTE9 = l_def_crf_rec.attribute9,
2285         ATTRIBUTE10 = l_def_crf_rec.attribute10,
2286         ATTRIBUTE11 = l_def_crf_rec.attribute11,
2287         ATTRIBUTE12 = l_def_crf_rec.attribute12,
2288         ATTRIBUTE13 = l_def_crf_rec.attribute13,
2289         ATTRIBUTE14 = l_def_crf_rec.attribute14,
2290         ATTRIBUTE15 = l_def_crf_rec.attribute15,
2291         CREATED_BY = l_def_crf_rec.created_by,
2292         CREATION_DATE = l_def_crf_rec.creation_date,
2293         LAST_UPDATED_BY = l_def_crf_rec.last_updated_by,
2294         LAST_UPDATE_DATE = l_def_crf_rec.last_update_date,
2295         LAST_UPDATE_LOGIN = l_def_crf_rec.last_update_login,
2296         CURE_REFUND_HEADER_ID = l_def_crf_rec.cure_refund_header_id,
2297         received_amount = l_def_crf_rec.received_amount
2298     WHERE CURE_REFUND_ID = l_def_crf_rec.cure_refund_id;
2299 
2300     x_crf_rec := l_crf_rec;
2301     x_return_status := l_return_status;
2302     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2303   EXCEPTION
2304     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2305       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2306       (
2307         l_api_name,
2308         G_PKG_NAME,
2309         'OKL_API.G_RET_STS_ERROR',
2310         x_msg_count,
2311         x_msg_data,
2312         '_PVT'
2313       );
2314     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2315       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2316       (
2317         l_api_name,
2318         G_PKG_NAME,
2319         'OKL_API.G_RET_STS_UNEXP_ERROR',
2320         x_msg_count,
2321         x_msg_data,
2322         '_PVT'
2323       );
2324     WHEN OTHERS THEN
2325       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2326       (
2327         l_api_name,
2328         G_PKG_NAME,
2329         'OTHERS',
2330         x_msg_count,
2331         x_msg_data,
2332         '_PVT'
2333       );
2334   END update_row;
2335   ---------------------------------------
2336   -- update_row for:OKL_CURE_REFUNDS_V --
2337   ---------------------------------------
2338   PROCEDURE update_row(
2339     p_api_version                  IN NUMBER,
2340     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2341     x_return_status                OUT NOCOPY VARCHAR2,
2342     x_msg_count                    OUT NOCOPY NUMBER,
2343     x_msg_data                     OUT NOCOPY VARCHAR2,
2344     p_crfv_rec                     IN crfv_rec_type,
2345     x_crfv_rec                     OUT NOCOPY crfv_rec_type) IS
2346 
2347     l_api_version                  CONSTANT NUMBER := 1;
2348     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2349     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2350     l_crfv_rec                     crfv_rec_type := p_crfv_rec;
2351     l_def_crfv_rec                 crfv_rec_type;
2352     l_db_crfv_rec                  crfv_rec_type;
2353     l_crf_rec                      crf_rec_type;
2354     lx_crf_rec                     crf_rec_type;
2355     -------------------------------
2356     -- FUNCTION fill_who_columns --
2357     -------------------------------
2358     FUNCTION fill_who_columns (
2359       p_crfv_rec IN crfv_rec_type
2360     ) RETURN crfv_rec_type IS
2361       l_crfv_rec crfv_rec_type := p_crfv_rec;
2362     BEGIN
2363       l_crfv_rec.LAST_UPDATE_DATE := SYSDATE;
2364       l_crfv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2365       l_crfv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2366       RETURN(l_crfv_rec);
2367     END fill_who_columns;
2368     ----------------------------------
2369     -- FUNCTION populate_new_record --
2370     ----------------------------------
2371     FUNCTION populate_new_record (
2372       p_crfv_rec IN crfv_rec_type,
2373       x_crfv_rec OUT NOCOPY crfv_rec_type
2374     ) RETURN VARCHAR2 IS
2375       l_row_notfound                 BOOLEAN := TRUE;
2376       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2377     BEGIN
2378       x_crfv_rec := p_crfv_rec;
2379       -- Get current database values
2380       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
2381       --       so it may be verified through LOCK_ROW.
2382       l_db_crfv_rec := get_rec(p_crfv_rec, l_return_status);
2383       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2384         IF (x_crfv_rec.cure_refund_id = OKL_API.G_MISS_NUM)
2385         THEN
2386           x_crfv_rec.cure_refund_id := l_db_crfv_rec.cure_refund_id;
2387         END IF;
2388         IF (x_crfv_rec.refund_number = OKL_API.G_MISS_CHAR)
2389         THEN
2390           x_crfv_rec.refund_number := l_db_crfv_rec.refund_number;
2391         END IF;
2392         IF (x_crfv_rec.status = OKL_API.G_MISS_CHAR)
2393         THEN
2394           x_crfv_rec.status := l_db_crfv_rec.status;
2395         END IF;
2396         IF (x_crfv_rec.amount = OKL_API.G_MISS_NUM)
2397         THEN
2398           x_crfv_rec.amount := l_db_crfv_rec.amount;
2399         END IF;
2400         IF (x_crfv_rec.balance = OKL_API.G_MISS_NUM)
2401         THEN
2402           x_crfv_rec.balance := l_db_crfv_rec.balance;
2403         END IF;
2404         IF (x_crfv_rec.tap_id = OKL_API.G_MISS_NUM)
2405         THEN
2406           x_crfv_rec.tap_id := l_db_crfv_rec.tap_id;
2407         END IF;
2408         IF (x_crfv_rec.tai_id = OKL_API.G_MISS_NUM)
2409         THEN
2410           x_crfv_rec.tai_id := l_db_crfv_rec.tai_id;
2411         END IF;
2412         IF (x_crfv_rec.cure_refund_stage_id = OKL_API.G_MISS_NUM)
2413         THEN
2414           x_crfv_rec.cure_refund_stage_id := l_db_crfv_rec.cure_refund_stage_id;
2415         END IF;
2416         IF (x_crfv_rec.vendor_site_id = OKL_API.G_MISS_NUM)
2417         THEN
2418           x_crfv_rec.vendor_site_id := l_db_crfv_rec.vendor_site_id;
2419         END IF;
2420         IF (x_crfv_rec.chr_id = OKL_API.G_MISS_NUM)
2421         THEN
2422           x_crfv_rec.chr_id := l_db_crfv_rec.chr_id;
2423         END IF;
2424 
2425         IF (x_crfv_rec.disbursement_amount = OKL_API.G_MISS_NUM)
2426         THEN
2427           x_crfv_rec.disbursement_amount := l_db_crfv_rec.disbursement_amount;
2428         END IF;
2429 
2430         IF (x_crfv_rec.offset_amount = OKL_API.G_MISS_NUM)
2431         THEN
2432           x_crfv_rec.offset_amount := l_db_crfv_rec.offset_amount;
2433         END IF;
2434         IF (x_crfv_rec.offset_contract = OKL_API.G_MISS_NUM)
2435         THEN
2436           x_crfv_rec.offset_contract := l_db_crfv_rec.offset_contract;
2437         END IF;
2438 
2439         IF (x_crfv_rec.total_refund_due = OKL_API.G_MISS_NUM)
2440         THEN
2441           x_crfv_rec.total_refund_due := l_db_crfv_rec.total_refund_due;
2442         END IF;
2443         IF (x_crfv_rec.refund_date = OKL_API.G_MISS_DATE)
2444         THEN
2445           x_crfv_rec.refund_date := l_db_crfv_rec.refund_date;
2446         END IF;
2447         IF (x_crfv_rec.program_id = OKL_API.G_MISS_NUM)
2448         THEN
2449           x_crfv_rec.program_id := l_db_crfv_rec.program_id;
2450         END IF;
2451         IF (x_crfv_rec.request_id = OKL_API.G_MISS_NUM)
2452         THEN
2453           x_crfv_rec.request_id := l_db_crfv_rec.request_id;
2454         END IF;
2455         IF (x_crfv_rec.program_application_id = OKL_API.G_MISS_NUM)
2456         THEN
2457           x_crfv_rec.program_application_id := l_db_crfv_rec.program_application_id;
2458         END IF;
2459         IF (x_crfv_rec.program_update_date = OKL_API.G_MISS_DATE)
2460         THEN
2461           x_crfv_rec.program_update_date := l_db_crfv_rec.program_update_date;
2462         END IF;
2463         IF (x_crfv_rec.attribute_category = OKL_API.G_MISS_CHAR)
2464         THEN
2465           x_crfv_rec.attribute_category := l_db_crfv_rec.attribute_category;
2466         END IF;
2467         IF (x_crfv_rec.attribute1 = OKL_API.G_MISS_CHAR)
2468         THEN
2469           x_crfv_rec.attribute1 := l_db_crfv_rec.attribute1;
2470         END IF;
2471         IF (x_crfv_rec.attribute2 = OKL_API.G_MISS_CHAR)
2472         THEN
2473           x_crfv_rec.attribute2 := l_db_crfv_rec.attribute2;
2474         END IF;
2475         IF (x_crfv_rec.attribute3 = OKL_API.G_MISS_CHAR)
2476         THEN
2477           x_crfv_rec.attribute3 := l_db_crfv_rec.attribute3;
2478         END IF;
2479         IF (x_crfv_rec.attribute4 = OKL_API.G_MISS_CHAR)
2480         THEN
2481           x_crfv_rec.attribute4 := l_db_crfv_rec.attribute4;
2482         END IF;
2483         IF (x_crfv_rec.attribute5 = OKL_API.G_MISS_CHAR)
2484         THEN
2485           x_crfv_rec.attribute5 := l_db_crfv_rec.attribute5;
2486         END IF;
2487         IF (x_crfv_rec.attribute6 = OKL_API.G_MISS_CHAR)
2488         THEN
2489           x_crfv_rec.attribute6 := l_db_crfv_rec.attribute6;
2490         END IF;
2491         IF (x_crfv_rec.attribute7 = OKL_API.G_MISS_CHAR)
2492         THEN
2493           x_crfv_rec.attribute7 := l_db_crfv_rec.attribute7;
2494         END IF;
2495         IF (x_crfv_rec.attribute8 = OKL_API.G_MISS_CHAR)
2496         THEN
2497           x_crfv_rec.attribute8 := l_db_crfv_rec.attribute8;
2498         END IF;
2499         IF (x_crfv_rec.attribute9 = OKL_API.G_MISS_CHAR)
2500         THEN
2501           x_crfv_rec.attribute9 := l_db_crfv_rec.attribute9;
2502         END IF;
2503         IF (x_crfv_rec.attribute10 = OKL_API.G_MISS_CHAR)
2504         THEN
2505           x_crfv_rec.attribute10 := l_db_crfv_rec.attribute10;
2506         END IF;
2507         IF (x_crfv_rec.attribute11 = OKL_API.G_MISS_CHAR)
2508         THEN
2509           x_crfv_rec.attribute11 := l_db_crfv_rec.attribute11;
2510         END IF;
2511         IF (x_crfv_rec.attribute12 = OKL_API.G_MISS_CHAR)
2512         THEN
2513           x_crfv_rec.attribute12 := l_db_crfv_rec.attribute12;
2514         END IF;
2515         IF (x_crfv_rec.attribute13 = OKL_API.G_MISS_CHAR)
2516         THEN
2517           x_crfv_rec.attribute13 := l_db_crfv_rec.attribute13;
2518         END IF;
2519         IF (x_crfv_rec.attribute14 = OKL_API.G_MISS_CHAR)
2520         THEN
2521           x_crfv_rec.attribute14 := l_db_crfv_rec.attribute14;
2522         END IF;
2523         IF (x_crfv_rec.attribute15 = OKL_API.G_MISS_CHAR)
2524         THEN
2525           x_crfv_rec.attribute15 := l_db_crfv_rec.attribute15;
2526         END IF;
2527         IF (x_crfv_rec.created_by = OKL_API.G_MISS_NUM)
2528         THEN
2529           x_crfv_rec.created_by := l_db_crfv_rec.created_by;
2530         END IF;
2531         IF (x_crfv_rec.creation_date = OKL_API.G_MISS_DATE)
2532         THEN
2533           x_crfv_rec.creation_date := l_db_crfv_rec.creation_date;
2534         END IF;
2535         IF (x_crfv_rec.last_updated_by = OKL_API.G_MISS_NUM)
2536         THEN
2537           x_crfv_rec.last_updated_by := l_db_crfv_rec.last_updated_by;
2538         END IF;
2539         IF (x_crfv_rec.last_update_date = OKL_API.G_MISS_DATE)
2540         THEN
2541           x_crfv_rec.last_update_date := l_db_crfv_rec.last_update_date;
2542         END IF;
2543         IF (x_crfv_rec.last_update_login = OKL_API.G_MISS_NUM)
2544         THEN
2545           x_crfv_rec.last_update_login := l_db_crfv_rec.last_update_login;
2546         END IF;
2547         IF (x_crfv_rec.cure_refund_header_id = OKL_API.G_MISS_NUM)
2548         THEN
2549           x_crfv_rec.cure_refund_header_id := l_db_crfv_rec.cure_refund_header_id;
2550         END IF;
2551 
2552         IF (x_crfv_rec.received_amount = OKL_API.G_MISS_NUM)
2553         THEN
2554           x_crfv_rec.received_amount := l_db_crfv_rec.received_amount;
2555         END IF;
2556 
2557       END IF;
2558       RETURN(l_return_status);
2559     END populate_new_record;
2560     -------------------------------------------
2561     -- Set_Attributes for:OKL_CURE_REFUNDS_V --
2562     -------------------------------------------
2563     FUNCTION Set_Attributes (
2564       p_crfv_rec IN crfv_rec_type,
2565       x_crfv_rec OUT NOCOPY crfv_rec_type
2566     ) RETURN VARCHAR2 IS
2567       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2568     BEGIN
2569       x_crfv_rec := p_crfv_rec;
2570       RETURN(l_return_status);
2571     END Set_Attributes;
2572   BEGIN
2573     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2574                                               G_PKG_NAME,
2575                                               p_init_msg_list,
2576                                               l_api_version,
2577                                               p_api_version,
2578                                               '_PVT',
2579                                               x_return_status);
2580     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2581       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2582     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2583       RAISE OKL_API.G_EXCEPTION_ERROR;
2584     END IF;
2585     --- Setting item attributes
2586     l_return_status := Set_Attributes(
2587       p_crfv_rec,                        -- IN
2588       x_crfv_rec);                       -- OUT
2589     --- If any errors happen abort API
2590     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2591       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2592     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2593       RAISE OKL_API.G_EXCEPTION_ERROR;
2594     END IF;
2595     l_return_status := populate_new_record(l_crfv_rec, l_def_crfv_rec);
2596     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2597       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2598     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2599       RAISE OKL_API.G_EXCEPTION_ERROR;
2600     END IF;
2601     l_def_crfv_rec := fill_who_columns(l_def_crfv_rec);
2602     --- Validate all non-missing attributes (Item Level Validation)
2603     l_return_status := Validate_Attributes(l_def_crfv_rec);
2604     --- If any errors happen abort API
2605     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2606       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2607     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2608       RAISE OKL_API.G_EXCEPTION_ERROR;
2609     END IF;
2610     l_return_status := Validate_Record(l_def_crfv_rec, l_db_crfv_rec);
2611     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2612       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2613     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2614       RAISE OKL_API.G_EXCEPTION_ERROR;
2615     END IF;
2616 
2617     -- Lock the Record
2618     lock_row(
2619       p_api_version                  => p_api_version,
2620       p_init_msg_list                => p_init_msg_list,
2621       x_return_status                => l_return_status,
2622       x_msg_count                    => x_msg_count,
2623       x_msg_data                     => x_msg_data,
2624       p_crfv_rec                     => p_crfv_rec);
2625     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2626       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2627     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2628       RAISE OKL_API.G_EXCEPTION_ERROR;
2629     END IF;
2630 
2631     -----------------------------------------
2632     -- Move VIEW record to "Child" records --
2633     -----------------------------------------
2634     migrate(l_def_crfv_rec, l_crf_rec);
2635     -----------------------------------------------
2636     -- Call the UPDATE_ROW for each child record --
2637     -----------------------------------------------
2638     update_row(
2639       p_init_msg_list,
2640       l_return_status,
2641       x_msg_count,
2642       x_msg_data,
2643       l_crf_rec,
2644       lx_crf_rec
2645     );
2646     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2647       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2648     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2649       RAISE OKL_API.G_EXCEPTION_ERROR;
2650     END IF;
2651     migrate(lx_crf_rec, l_def_crfv_rec);
2652     x_crfv_rec := l_def_crfv_rec;
2653     x_return_status := l_return_status;
2654     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2655   EXCEPTION
2656     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2657       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2658       (
2659         l_api_name,
2660         G_PKG_NAME,
2661         'OKL_API.G_RET_STS_ERROR',
2662         x_msg_count,
2663         x_msg_data,
2664         '_PVT'
2665       );
2666     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2667       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2668       (
2669         l_api_name,
2670         G_PKG_NAME,
2671         'OKL_API.G_RET_STS_UNEXP_ERROR',
2672         x_msg_count,
2673         x_msg_data,
2674         '_PVT'
2675       );
2676     WHEN OTHERS THEN
2677       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2678       (
2679         l_api_name,
2680         G_PKG_NAME,
2681         'OTHERS',
2682         x_msg_count,
2683         x_msg_data,
2684         '_PVT'
2685       );
2686   END update_row;
2687   ----------------------------------------
2688   -- PL/SQL TBL update_row for:crfv_tbl --
2689   ----------------------------------------
2690   PROCEDURE update_row(
2691     p_api_version                  IN NUMBER,
2692     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2693     x_return_status                OUT NOCOPY VARCHAR2,
2694     x_msg_count                    OUT NOCOPY NUMBER,
2695     x_msg_data                     OUT NOCOPY VARCHAR2,
2696     p_crfv_tbl                     IN crfv_tbl_type,
2697     x_crfv_tbl                     OUT NOCOPY crfv_tbl_type,
2698     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2699 
2700     l_api_version                  CONSTANT NUMBER := 1;
2701     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
2702     i                              NUMBER := 0;
2703   BEGIN
2704     OKL_API.init_msg_list(p_init_msg_list);
2705     -- Make sure PL/SQL table has records in it before passing
2706     IF (p_crfv_tbl.COUNT > 0) THEN
2707       i := p_crfv_tbl.FIRST;
2708       LOOP
2709         DECLARE
2710           l_error_rec         OKL_API.ERROR_REC_TYPE;
2711         BEGIN
2712           l_error_rec.api_name := l_api_name;
2713           l_error_rec.api_package := G_PKG_NAME;
2714           l_error_rec.idx := i;
2715           update_row (
2716             p_api_version                  => p_api_version,
2717             p_init_msg_list                => OKL_API.G_FALSE,
2718             x_return_status                => l_error_rec.error_type,
2719             x_msg_count                    => l_error_rec.msg_count,
2720             x_msg_data                     => l_error_rec.msg_data,
2721             p_crfv_rec                     => p_crfv_tbl(i),
2722             x_crfv_rec                     => x_crfv_tbl(i));
2723           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2724             l_error_rec.sqlcode := SQLCODE;
2725             load_error_tbl(l_error_rec, px_error_tbl);
2726           ELSE
2727             x_msg_count := l_error_rec.msg_count;
2728             x_msg_data := l_error_rec.msg_data;
2729           END IF;
2730         EXCEPTION
2731           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2732             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2733             l_error_rec.sqlcode := SQLCODE;
2734             load_error_tbl(l_error_rec, px_error_tbl);
2735           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2736             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2737             l_error_rec.sqlcode := SQLCODE;
2738             load_error_tbl(l_error_rec, px_error_tbl);
2739           WHEN OTHERS THEN
2740             l_error_rec.error_type := 'OTHERS';
2741             l_error_rec.sqlcode := SQLCODE;
2742             load_error_tbl(l_error_rec, px_error_tbl);
2743         END;
2744         EXIT WHEN (i = p_crfv_tbl.LAST);
2745         i := p_crfv_tbl.NEXT(i);
2746       END LOOP;
2747     END IF;
2748     -- Loop through the error_tbl to find the error with the highest severity
2749     -- and return it.
2750     x_return_status := find_highest_exception(px_error_tbl);
2751     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2752   EXCEPTION
2753     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2754       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2755       (
2756         l_api_name,
2757         G_PKG_NAME,
2758         'OKL_API.G_RET_STS_ERROR',
2759         x_msg_count,
2760         x_msg_data,
2761         '_PVT'
2762       );
2763     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2764       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2765       (
2766         l_api_name,
2767         G_PKG_NAME,
2768         'OKL_API.G_RET_STS_UNEXP_ERROR',
2769         x_msg_count,
2770         x_msg_data,
2771         '_PVT'
2772       );
2773     WHEN OTHERS THEN
2774       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2775       (
2776         l_api_name,
2777         G_PKG_NAME,
2778         'OTHERS',
2779         x_msg_count,
2780         x_msg_data,
2781         '_PVT'
2782       );
2783   END update_row;
2784 
2785   ----------------------------------------
2786   -- PL/SQL TBL update_row for:CRFV_TBL --
2787   ----------------------------------------
2788   PROCEDURE update_row(
2789     p_api_version                  IN NUMBER,
2790     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2791     x_return_status                OUT NOCOPY VARCHAR2,
2792     x_msg_count                    OUT NOCOPY NUMBER,
2793     x_msg_data                     OUT NOCOPY VARCHAR2,
2794     p_crfv_tbl                     IN crfv_tbl_type,
2795     x_crfv_tbl                     OUT NOCOPY crfv_tbl_type) IS
2796 
2797     l_api_version                  CONSTANT NUMBER := 1;
2798     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2799     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2800     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2801   BEGIN
2802     OKL_API.init_msg_list(p_init_msg_list);
2803     -- Make sure PL/SQL table has records in it before passing
2804     IF (p_crfv_tbl.COUNT > 0) THEN
2805       update_row (
2806         p_api_version                  => p_api_version,
2807         p_init_msg_list                => OKL_API.G_FALSE,
2808         x_return_status                => x_return_status,
2809         x_msg_count                    => x_msg_count,
2810         x_msg_data                     => x_msg_data,
2811         p_crfv_tbl                     => p_crfv_tbl,
2812         x_crfv_tbl                     => x_crfv_tbl,
2813         px_error_tbl                   => l_error_tbl);
2814     END IF;
2815     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2816   EXCEPTION
2817     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2818       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2819       (
2820         l_api_name,
2821         G_PKG_NAME,
2822         'OKL_API.G_RET_STS_ERROR',
2823         x_msg_count,
2824         x_msg_data,
2825         '_PVT'
2826       );
2827     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2828       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2829       (
2830         l_api_name,
2831         G_PKG_NAME,
2832         'OKL_API.G_RET_STS_UNEXP_ERROR',
2833         x_msg_count,
2834         x_msg_data,
2835         '_PVT'
2836       );
2837     WHEN OTHERS THEN
2838       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2839       (
2840         l_api_name,
2841         G_PKG_NAME,
2842         'OTHERS',
2843         x_msg_count,
2844         x_msg_data,
2845         '_PVT'
2846       );
2847   END update_row;
2848 
2849   ---------------------------------------------------------------------------
2850   -- PROCEDURE delete_row
2851   ---------------------------------------------------------------------------
2852   -------------------------------------
2853   -- delete_row for:OKL_CURE_REFUNDS --
2854   -------------------------------------
2855   PROCEDURE delete_row(
2856     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2857     x_return_status                OUT NOCOPY VARCHAR2,
2858     x_msg_count                    OUT NOCOPY NUMBER,
2859     x_msg_data                     OUT NOCOPY VARCHAR2,
2860     p_crf_rec                      IN crf_rec_type) IS
2861 
2862     l_api_version                  CONSTANT NUMBER := 1;
2863     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2864     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2865     l_crf_rec                      crf_rec_type := p_crf_rec;
2866     l_row_notfound                 BOOLEAN := TRUE;
2867   BEGIN
2868     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2869                                               p_init_msg_list,
2870                                               '_PVT',
2871                                               x_return_status);
2872     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2873       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2874     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2875       RAISE OKL_API.G_EXCEPTION_ERROR;
2876     END IF;
2877 
2878     DELETE FROM OKL_CURE_REFUNDS
2879      WHERE CURE_REFUND_ID = p_crf_rec.cure_refund_id;
2880 
2881     x_return_status := l_return_status;
2882     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2883   EXCEPTION
2884     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2885       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2886       (
2887         l_api_name,
2888         G_PKG_NAME,
2889         'OKL_API.G_RET_STS_ERROR',
2890         x_msg_count,
2891         x_msg_data,
2892         '_PVT'
2893       );
2894     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2895       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2896       (
2897         l_api_name,
2898         G_PKG_NAME,
2899         'OKL_API.G_RET_STS_UNEXP_ERROR',
2900         x_msg_count,
2901         x_msg_data,
2902         '_PVT'
2903       );
2904     WHEN OTHERS THEN
2905       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2906       (
2907         l_api_name,
2908         G_PKG_NAME,
2909         'OTHERS',
2910         x_msg_count,
2911         x_msg_data,
2912         '_PVT'
2913       );
2914   END delete_row;
2915   ---------------------------------------
2916   -- delete_row for:OKL_CURE_REFUNDS_V --
2917   ---------------------------------------
2918   PROCEDURE delete_row(
2919     p_api_version                  IN NUMBER,
2920     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2921     x_return_status                OUT NOCOPY VARCHAR2,
2922     x_msg_count                    OUT NOCOPY NUMBER,
2923     x_msg_data                     OUT NOCOPY VARCHAR2,
2924     p_crfv_rec                     IN crfv_rec_type) IS
2925 
2926     l_api_version                  CONSTANT NUMBER := 1;
2927     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2928     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2929     l_crfv_rec                     crfv_rec_type := p_crfv_rec;
2930     l_crf_rec                      crf_rec_type;
2931   BEGIN
2932     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2933                                               G_PKG_NAME,
2934                                               p_init_msg_list,
2935                                               l_api_version,
2936                                               p_api_version,
2937                                               '_PVT',
2938                                               x_return_status);
2939     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2940       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2941     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2942       RAISE OKL_API.G_EXCEPTION_ERROR;
2943     END IF;
2944     -----------------------------------------
2945     -- Move VIEW record to "Child" records --
2946     -----------------------------------------
2947     migrate(l_crfv_rec, l_crf_rec);
2948     -----------------------------------------------
2949     -- Call the DELETE_ROW for each child record --
2950     -----------------------------------------------
2951     delete_row(
2952       p_init_msg_list,
2953       l_return_status,
2954       x_msg_count,
2955       x_msg_data,
2956       l_crf_rec
2957     );
2958     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2959       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2960     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2961       RAISE OKL_API.G_EXCEPTION_ERROR;
2962     END IF;
2963     x_return_status := l_return_status;
2964     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2965   EXCEPTION
2966     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2967       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2968       (
2969         l_api_name,
2970         G_PKG_NAME,
2971         'OKL_API.G_RET_STS_ERROR',
2972         x_msg_count,
2973         x_msg_data,
2974         '_PVT'
2975       );
2976     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2977       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2978       (
2979         l_api_name,
2980         G_PKG_NAME,
2981         'OKL_API.G_RET_STS_UNEXP_ERROR',
2982         x_msg_count,
2983         x_msg_data,
2984         '_PVT'
2985       );
2986     WHEN OTHERS THEN
2987       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2988       (
2989         l_api_name,
2990         G_PKG_NAME,
2991         'OTHERS',
2992         x_msg_count,
2993         x_msg_data,
2994         '_PVT'
2995       );
2996   END delete_row;
2997   --------------------------------------------------
2998   -- PL/SQL TBL delete_row for:OKL_CURE_REFUNDS_V --
2999   --------------------------------------------------
3000   PROCEDURE delete_row(
3001     p_api_version                  IN NUMBER,
3002     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3003     x_return_status                OUT NOCOPY VARCHAR2,
3004     x_msg_count                    OUT NOCOPY NUMBER,
3005     x_msg_data                     OUT NOCOPY VARCHAR2,
3006     p_crfv_tbl                     IN crfv_tbl_type,
3007     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3008 
3009     l_api_version                  CONSTANT NUMBER := 1;
3010     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
3011     i                              NUMBER := 0;
3012   BEGIN
3013     OKL_API.init_msg_list(p_init_msg_list);
3014     -- Make sure PL/SQL table has records in it before passing
3015     IF (p_crfv_tbl.COUNT > 0) THEN
3016       i := p_crfv_tbl.FIRST;
3017       LOOP
3018         DECLARE
3019           l_error_rec         OKL_API.ERROR_REC_TYPE;
3020         BEGIN
3021           l_error_rec.api_name := l_api_name;
3022           l_error_rec.api_package := G_PKG_NAME;
3023           l_error_rec.idx := i;
3024           delete_row (
3025             p_api_version                  => p_api_version,
3026             p_init_msg_list                => OKL_API.G_FALSE,
3027             x_return_status                => l_error_rec.error_type,
3028             x_msg_count                    => l_error_rec.msg_count,
3029             x_msg_data                     => l_error_rec.msg_data,
3030             p_crfv_rec                     => p_crfv_tbl(i));
3031           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3032             l_error_rec.sqlcode := SQLCODE;
3033             load_error_tbl(l_error_rec, px_error_tbl);
3034           ELSE
3035             x_msg_count := l_error_rec.msg_count;
3036             x_msg_data := l_error_rec.msg_data;
3037           END IF;
3038         EXCEPTION
3039           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3040             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3041             l_error_rec.sqlcode := SQLCODE;
3042             load_error_tbl(l_error_rec, px_error_tbl);
3043           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3044             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3045             l_error_rec.sqlcode := SQLCODE;
3046             load_error_tbl(l_error_rec, px_error_tbl);
3047           WHEN OTHERS THEN
3048             l_error_rec.error_type := 'OTHERS';
3049             l_error_rec.sqlcode := SQLCODE;
3050             load_error_tbl(l_error_rec, px_error_tbl);
3051         END;
3052         EXIT WHEN (i = p_crfv_tbl.LAST);
3053         i := p_crfv_tbl.NEXT(i);
3054       END LOOP;
3055     END IF;
3056     -- Loop through the error_tbl to find the error with the highest severity
3057     -- and return it.
3058     x_return_status := find_highest_exception(px_error_tbl);
3059     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3060   EXCEPTION
3061     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3062       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3063       (
3064         l_api_name,
3065         G_PKG_NAME,
3066         'OKL_API.G_RET_STS_ERROR',
3067         x_msg_count,
3068         x_msg_data,
3069         '_PVT'
3070       );
3071     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3072       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3073       (
3074         l_api_name,
3075         G_PKG_NAME,
3076         'OKL_API.G_RET_STS_UNEXP_ERROR',
3077         x_msg_count,
3078         x_msg_data,
3079         '_PVT'
3080       );
3081     WHEN OTHERS THEN
3082       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3083       (
3084         l_api_name,
3085         G_PKG_NAME,
3086         'OTHERS',
3087         x_msg_count,
3088         x_msg_data,
3089         '_PVT'
3090       );
3091   END delete_row;
3092 
3093   --------------------------------------------------
3094   -- PL/SQL TBL delete_row for:OKL_CURE_REFUNDS_V --
3095   --------------------------------------------------
3096   PROCEDURE delete_row(
3097     p_api_version                  IN NUMBER,
3098     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3099     x_return_status                OUT NOCOPY VARCHAR2,
3100     x_msg_count                    OUT NOCOPY NUMBER,
3101     x_msg_data                     OUT NOCOPY VARCHAR2,
3102     p_crfv_tbl                     IN crfv_tbl_type) IS
3103 
3104     l_api_version                  CONSTANT NUMBER := 1;
3105     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
3106     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3107     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3108   BEGIN
3109     OKL_API.init_msg_list(p_init_msg_list);
3110     -- Make sure PL/SQL table has records in it before passing
3111     IF (p_crfv_tbl.COUNT > 0) THEN
3112       delete_row (
3113         p_api_version                  => p_api_version,
3114         p_init_msg_list                => OKL_API.G_FALSE,
3115         x_return_status                => x_return_status,
3116         x_msg_count                    => x_msg_count,
3117         x_msg_data                     => x_msg_data,
3118         p_crfv_tbl                     => p_crfv_tbl,
3119         px_error_tbl                   => l_error_tbl);
3120     END IF;
3121     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3122   EXCEPTION
3123     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3124       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3125       (
3126         l_api_name,
3127         G_PKG_NAME,
3128         'OKL_API.G_RET_STS_ERROR',
3129         x_msg_count,
3130         x_msg_data,
3131         '_PVT'
3132       );
3133     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3134       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3135       (
3136         l_api_name,
3137         G_PKG_NAME,
3138         'OKL_API.G_RET_STS_UNEXP_ERROR',
3139         x_msg_count,
3140         x_msg_data,
3141         '_PVT'
3142       );
3143     WHEN OTHERS THEN
3144       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3145       (
3146         l_api_name,
3147         G_PKG_NAME,
3148         'OTHERS',
3149         x_msg_count,
3150         x_msg_data,
3151         '_PVT'
3152       );
3153   END delete_row;
3154 
3155 END OKL_CRF_PVT;
3156