DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CHD_PVT

Source


1 PACKAGE BODY OKL_CHD_PVT AS
2 /* $Header: OKLSCHDB.pls 115.9 2004/05/20 23:44:28 pdevaraj 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   -- PROCEDURE add_language
95   ---------------------------------------------------------------------------
96   PROCEDURE add_language IS
97   BEGIN
98     DELETE FROM OKL_CURE_REFUND_HEADERS_TL T
99      WHERE NOT EXISTS (
100         SELECT NULL
101           FROM OKL_CURE_REFUND_HEADERS_B B
102          WHERE B.CURE_REFUND_HEADER_ID =T.CURE_REFUND_HEADER_ID
103         );
104 
105     UPDATE OKL_CURE_REFUND_HEADERS_TL T SET(
106         DESCRIPTION) = (SELECT
107                                   B.DESCRIPTION
108                                 FROM OKL_CURE_REFUND_HEADERS_TL B
109                                WHERE B.CURE_REFUND_HEADER_ID = T.CURE_REFUND_HEADER_ID
110                                  AND B.LANGUAGE = T.SOURCE_LANG)
111       WHERE ( T.CURE_REFUND_HEADER_ID,
112               T.LANGUAGE)
113           IN (SELECT
114                   SUBT.CURE_REFUND_HEADER_ID,
115                   SUBT.LANGUAGE
116                 FROM OKL_CURE_REFUND_HEADERS_TL SUBB, OKL_CURE_REFUND_HEADERS_TL SUBT
117                WHERE SUBB.CURE_REFUND_HEADER_ID = SUBT.CURE_REFUND_HEADER_ID
118                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
119                  AND (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
120                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
121               ));
122 
123     INSERT INTO OKL_CURE_REFUND_HEADERS_TL (
124         CURE_REFUND_HEADER_ID,
125         LANGUAGE,
126         SOURCE_LANG,
127         SFWT_FLAG,
128         DESCRIPTION,
129         CREATED_BY,
130         CREATION_DATE,
131         LAST_UPDATED_BY,
132         LAST_UPDATE_DATE,
133         LAST_UPDATE_LOGIN)
134       SELECT
135             B.CURE_REFUND_HEADER_ID,
136             L.LANGUAGE_CODE,
137             B.SOURCE_LANG,
138             B.SFWT_FLAG,
139             B.DESCRIPTION,
140             B.CREATED_BY,
141             B.CREATION_DATE,
142             B.LAST_UPDATED_BY,
143             B.LAST_UPDATE_DATE,
144             B.LAST_UPDATE_LOGIN
145         FROM OKL_CURE_REFUND_HEADERS_TL B, FND_LANGUAGES L
146        WHERE L.INSTALLED_FLAG IN ('I', 'B')
147          AND B.LANGUAGE = USERENV('LANG')
148          AND NOT EXISTS (
149                     SELECT NULL
150                       FROM OKL_CURE_REFUND_HEADERS_TL T
151                      WHERE T.CURE_REFUND_HEADER_ID = B.CURE_REFUND_HEADER_ID
152                        AND T.LANGUAGE = L.LANGUAGE_CODE
153                     );
154   END add_language;
155 
156   ---------------------------------------------------------------------------
157   -- FUNCTION get_rec for: OKL_CURE_REFUND_HEADERS_V
158   ---------------------------------------------------------------------------
159   FUNCTION get_rec (
160     p_chdv_rec                     IN chdv_rec_type,
161     x_no_data_found                OUT NOCOPY BOOLEAN
162   ) RETURN chdv_rec_type IS
163     CURSOR okl_cure_refund_headers_pk_csr (p_cure_refund_header_id IN NUMBER) IS
164     SELECT
165             CURE_REFUND_HEADER_ID,
166             REFUND_HEADER_NUMBER,
167             REFUND_TYPE,
168             REFUND_DUE_DATE,
169             CURRENCY_CODE,
170             TOTAL_REFUND_DUE,
171             DISBURSEMENT_AMOUNT,
172             RECEIVED_AMOUNT,
173             OFFSET_AMOUNT,
174             NEGOTIATED_AMOUNT,
175             VENDOR_SITE_ID,
176             REFUND_STATUS,
177             PAYMENT_METHOD,
178             PAYMENT_TERM_ID,
179             SFWT_FLAG,
180             DESCRIPTION,
181             OBJECT_VERSION_NUMBER,
182             VENDOR_CURE_DUE,
183             VENDOR_SITE_CURE_DUE,
184             CHR_ID,
185             PROGRAM_ID,
186             REQUEST_ID,
187             PROGRAM_APPLICATION_ID,
188             PROGRAM_UPDATE_DATE,
189             ATTRIBUTE_CATEGORY,
190             ATTRIBUTE1,
191             ATTRIBUTE2,
192             ATTRIBUTE3,
193             ATTRIBUTE4,
194             ATTRIBUTE5,
195             ATTRIBUTE6,
196             ATTRIBUTE7,
197             ATTRIBUTE8,
198             ATTRIBUTE9,
199             ATTRIBUTE10,
200             ATTRIBUTE11,
201             ATTRIBUTE12,
202             ATTRIBUTE13,
203             ATTRIBUTE14,
204             ATTRIBUTE15,
205             CREATED_BY,
206             CREATION_DATE,
207             LAST_UPDATED_BY,
208             LAST_UPDATE_DATE,
209             LAST_UPDATE_LOGIN
210       FROM Okl_Cure_Refund_Headers_V
211      WHERE okl_cure_refund_headers_v.cure_refund_header_id = p_cure_refund_header_id;
212     l_okl_cure_refund_headers_pk   okl_cure_refund_headers_pk_csr%ROWTYPE;
213     l_chdv_rec                     chdv_rec_type;
214   BEGIN
215     x_no_data_found := TRUE;
216     -- Get current database values
217     OPEN okl_cure_refund_headers_pk_csr (p_chdv_rec.cure_refund_header_id);
218     FETCH okl_cure_refund_headers_pk_csr INTO
219               l_chdv_rec.cure_refund_header_id,
220               l_chdv_rec.refund_header_number,
221               l_chdv_rec.refund_type,
222               l_chdv_rec.refund_due_date,
223               l_chdv_rec.currency_code,
224               l_chdv_rec.total_refund_due,
225               l_chdv_rec.disbursement_amount,
226               l_chdv_rec.RECEIVED_AMOUNT,
227               l_chdv_rec.OFFSET_AMOUNT,
228               l_chdv_rec.NEGOTIATED_AMOUNT,
229               l_chdv_rec.vendor_site_id,
230               l_chdv_rec.refund_status,
231               l_chdv_rec.payment_method,
232               l_chdv_rec.payment_term_id,
233               l_chdv_rec.sfwt_flag,
234               l_chdv_rec.description,
235               l_chdv_rec.object_version_number,
236               l_chdv_rec.vendor_cure_due,
237               l_chdv_rec.vendor_site_cure_due,
238               l_chdv_rec.chr_id,
239               l_chdv_rec.program_id,
240               l_chdv_rec.request_id,
241               l_chdv_rec.program_application_id,
242               l_chdv_rec.program_update_date,
243               l_chdv_rec.attribute_category,
244               l_chdv_rec.attribute1,
245               l_chdv_rec.attribute2,
246               l_chdv_rec.attribute3,
247               l_chdv_rec.attribute4,
248               l_chdv_rec.attribute5,
249               l_chdv_rec.attribute6,
250               l_chdv_rec.attribute7,
251               l_chdv_rec.attribute8,
252               l_chdv_rec.attribute9,
253               l_chdv_rec.attribute10,
254               l_chdv_rec.attribute11,
255               l_chdv_rec.attribute12,
256               l_chdv_rec.attribute13,
257               l_chdv_rec.attribute14,
258               l_chdv_rec.attribute15,
259               l_chdv_rec.created_by,
260               l_chdv_rec.creation_date,
261               l_chdv_rec.last_updated_by,
262               l_chdv_rec.last_update_date,
263               l_chdv_rec.last_update_login;
264     x_no_data_found := okl_cure_refund_headers_pk_csr%NOTFOUND;
265     CLOSE okl_cure_refund_headers_pk_csr;
266     RETURN(l_chdv_rec);
267   END get_rec;
268 
269   ------------------------------------------------------------------
270   -- This version of get_rec sets error messages if no data found --
271   ------------------------------------------------------------------
272   FUNCTION get_rec (
273     p_chdv_rec                     IN chdv_rec_type,
274     x_return_status                OUT NOCOPY VARCHAR2
275   ) RETURN chdv_rec_type IS
276     l_chdv_rec                     chdv_rec_type;
277     l_row_notfound                 BOOLEAN := TRUE;
278   BEGIN
279     x_return_status := OKL_API.G_RET_STS_SUCCESS;
280     l_chdv_rec := get_rec(p_chdv_rec, l_row_notfound);
281     IF (l_row_notfound) THEN
282       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'CURE_REFUND_HEADER_ID');
283       x_return_status := OKL_API.G_RET_STS_ERROR;
284     END IF;
285     RETURN(l_chdv_rec);
286   END get_rec;
287   -----------------------------------------------------------
288   -- So we don't have to pass an "l_row_notfound" variable --
289   -----------------------------------------------------------
290   FUNCTION get_rec (
291     p_chdv_rec                     IN chdv_rec_type
292   ) RETURN chdv_rec_type IS
293     l_row_not_found                BOOLEAN := TRUE;
294   BEGIN
295     RETURN(get_rec(p_chdv_rec, l_row_not_found));
296   END get_rec;
297   ---------------------------------------------------------------------------
298   -- FUNCTION get_rec for: OKL_CURE_REFUND_HEADERS_B
299   ---------------------------------------------------------------------------
300   FUNCTION get_rec (
301     p_chd_rec                      IN chd_rec_type,
302     x_no_data_found                OUT NOCOPY BOOLEAN
303   ) RETURN chd_rec_type IS
304     CURSOR okl_cure_refund_hea179 (p_cure_refund_header_id IN NUMBER) IS
305     SELECT
306             CURE_REFUND_HEADER_ID,
307             REFUND_HEADER_NUMBER,
308             REFUND_TYPE,
309             REFUND_DUE_DATE,
310             CURRENCY_CODE,
311             TOTAL_REFUND_DUE,
312             DISBURSEMENT_AMOUNT,
313             RECEIVED_AMOUNT,
314             OFFSET_AMOUNT,
315             NEGOTIATED_AMOUNT,
316             VENDOR_SITE_ID,
317             REFUND_STATUS,
318             PAYMENT_METHOD,
319             PAYMENT_TERM_ID,
320             OBJECT_VERSION_NUMBER,
321             VENDOR_CURE_DUE,
322             VENDOR_SITE_CURE_DUE,
323             CHR_ID,
324             PROGRAM_APPLICATION_ID,
325             REQUEST_ID,
326             PROGRAM_ID,
327             PROGRAM_UPDATE_DATE,
328             ATTRIBUTE_CATEGORY,
329             ATTRIBUTE1,
330             ATTRIBUTE2,
331             ATTRIBUTE3,
332             ATTRIBUTE4,
333             ATTRIBUTE5,
334             ATTRIBUTE6,
335             ATTRIBUTE7,
336             ATTRIBUTE8,
337             ATTRIBUTE9,
338             ATTRIBUTE10,
339             ATTRIBUTE11,
340             ATTRIBUTE12,
341             ATTRIBUTE13,
342             ATTRIBUTE14,
343             ATTRIBUTE15,
344             CREATED_BY,
345             CREATION_DATE,
346             LAST_UPDATED_BY,
347             LAST_UPDATE_DATE,
348             LAST_UPDATE_LOGIN
349       FROM Okl_Cure_Refund_Headers_B
350      WHERE okl_cure_refund_headers_b.cure_refund_header_id = p_cure_refund_header_id;
351     l_okl_cure_refund_headers_b_pk okl_cure_refund_hea179%ROWTYPE;
352     l_chd_rec                      chd_rec_type;
353   BEGIN
354     x_no_data_found := TRUE;
355     -- Get current database values
356     OPEN okl_cure_refund_hea179 (p_chd_rec.cure_refund_header_id);
357     FETCH okl_cure_refund_hea179 INTO
358               l_chd_rec.cure_refund_header_id,
359               l_chd_rec.refund_header_number,
360               l_chd_rec.refund_type,
361               l_chd_rec.refund_due_date,
362               l_chd_rec.currency_code,
363               l_chd_rec.total_refund_due,
364               l_chd_rec.disbursement_amount,
365               l_chd_rec.RECEIVED_AMOUNT,
366               l_chd_rec.OFFSET_AMOUNT,
367               l_chd_rec.NEGOTIATED_AMOUNT,
368               l_chd_rec.vendor_site_id,
369               l_chd_rec.refund_status,
370               l_chd_rec.payment_method,
371               l_chd_rec.payment_term_id,
372               l_chd_rec.object_version_number,
373               l_chd_rec.vendor_cure_due,
374               l_chd_rec.vendor_site_cure_due,
375               l_chd_rec.chr_id,
376               l_chd_rec.program_application_id,
377               l_chd_rec.request_id,
378               l_chd_rec.program_id,
379               l_chd_rec.program_update_date,
380               l_chd_rec.attribute_category,
381               l_chd_rec.attribute1,
382               l_chd_rec.attribute2,
383               l_chd_rec.attribute3,
384               l_chd_rec.attribute4,
385               l_chd_rec.attribute5,
386               l_chd_rec.attribute6,
387               l_chd_rec.attribute7,
388               l_chd_rec.attribute8,
389               l_chd_rec.attribute9,
390               l_chd_rec.attribute10,
391               l_chd_rec.attribute11,
392               l_chd_rec.attribute12,
393               l_chd_rec.attribute13,
394               l_chd_rec.attribute14,
395               l_chd_rec.attribute15,
396               l_chd_rec.created_by,
397               l_chd_rec.creation_date,
398               l_chd_rec.last_updated_by,
399               l_chd_rec.last_update_date,
400               l_chd_rec.last_update_login;
401     x_no_data_found := okl_cure_refund_hea179%NOTFOUND;
402     CLOSE okl_cure_refund_hea179;
403     RETURN(l_chd_rec);
404   END get_rec;
405 
406   ------------------------------------------------------------------
407   -- This version of get_rec sets error messages if no data found --
408   ------------------------------------------------------------------
409   FUNCTION get_rec (
410     p_chd_rec                      IN chd_rec_type,
411     x_return_status                OUT NOCOPY VARCHAR2
412   ) RETURN chd_rec_type IS
413     l_chd_rec                      chd_rec_type;
414     l_row_notfound                 BOOLEAN := TRUE;
415   BEGIN
416     x_return_status := OKL_API.G_RET_STS_SUCCESS;
417     l_chd_rec := get_rec(p_chd_rec, l_row_notfound);
418     IF (l_row_notfound) THEN
419       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'CURE_REFUND_HEADER_ID');
420       x_return_status := OKL_API.G_RET_STS_ERROR;
421     END IF;
422     RETURN(l_chd_rec);
423   END get_rec;
424   -----------------------------------------------------------
425   -- So we don't have to pass an "l_row_notfound" variable --
426   -----------------------------------------------------------
427   FUNCTION get_rec (
428     p_chd_rec                      IN chd_rec_type
429   ) RETURN chd_rec_type IS
430     l_row_not_found                BOOLEAN := TRUE;
431   BEGIN
432     RETURN(get_rec(p_chd_rec, l_row_not_found));
433   END get_rec;
434   ---------------------------------------------------------------------------
435   -- FUNCTION get_rec for: OKL_CURE_REFUND_HEADERS_TL
436   ---------------------------------------------------------------------------
437   FUNCTION get_rec (
438     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType,
439     x_no_data_found                OUT NOCOPY BOOLEAN
440   ) RETURN OklCureRefundHeadersTlRecType IS
441     CURSOR okl_cure_refund_hea180 (p_cure_refund_header_id IN NUMBER,
442                                    p_language              IN VARCHAR2) IS
443     SELECT
444             CURE_REFUND_HEADER_ID,
445             LANGUAGE,
446             SOURCE_LANG,
447             SFWT_FLAG,
448             DESCRIPTION,
449             CREATED_BY,
450             CREATION_DATE,
451             LAST_UPDATED_BY,
452             LAST_UPDATE_DATE,
453             LAST_UPDATE_LOGIN
454       FROM Okl_Cure_Refund_Headers_Tl
455      WHERE okl_cure_refund_headers_tl.cure_refund_header_id = p_cure_refund_header_id
456        AND okl_cure_refund_headers_tl.language = p_language;
457     l_okl_cure_refund_h181         okl_cure_refund_hea180%ROWTYPE;
458     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
459   BEGIN
460     x_no_data_found := TRUE;
461     -- Get current database values
462     OPEN okl_cure_refund_hea180 (p_okl_cure_refund_h182.cure_refund_header_id,
463                                  p_okl_cure_refund_h182.language);
464     FETCH okl_cure_refund_hea180 INTO
465               l_okl_cure_refund_h183.cure_refund_header_id,
466               l_okl_cure_refund_h183.language,
467               l_okl_cure_refund_h183.source_lang,
468               l_okl_cure_refund_h183.sfwt_flag,
469               l_okl_cure_refund_h183.description,
470               l_okl_cure_refund_h183.created_by,
471               l_okl_cure_refund_h183.creation_date,
472               l_okl_cure_refund_h183.last_updated_by,
473               l_okl_cure_refund_h183.last_update_date,
474               l_okl_cure_refund_h183.last_update_login;
475     x_no_data_found := okl_cure_refund_hea180%NOTFOUND;
476     CLOSE okl_cure_refund_hea180;
477     RETURN(l_okl_cure_refund_h183);
478   END get_rec;
479 
480   ------------------------------------------------------------------
481   -- This version of get_rec sets error messages if no data found --
482   ------------------------------------------------------------------
483   FUNCTION get_rec (
484     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType,
485     x_return_status                OUT NOCOPY VARCHAR2
486   ) RETURN OklCureRefundHeadersTlRecType IS
487     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
488     l_row_notfound                 BOOLEAN := TRUE;
489   BEGIN
490     x_return_status := OKL_API.G_RET_STS_SUCCESS;
491     l_okl_cure_refund_h183 := get_rec(p_okl_cure_refund_h182, l_row_notfound);
492     IF (l_row_notfound) THEN
493       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'CURE_REFUND_HEADER_ID');
494       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'LANGUAGE');
495       x_return_status := OKL_API.G_RET_STS_ERROR;
496     END IF;
497     RETURN(l_okl_cure_refund_h183);
498   END get_rec;
499   -----------------------------------------------------------
500   -- So we don't have to pass an "l_row_notfound" variable --
501   -----------------------------------------------------------
502   FUNCTION get_rec (
503     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType
504   ) RETURN OklCureRefundHeadersTlRecType IS
505     l_row_not_found                BOOLEAN := TRUE;
506   BEGIN
507     RETURN(get_rec(p_okl_cure_refund_h182, l_row_not_found));
508   END get_rec;
509   ---------------------------------------------------------------------------
510   -- FUNCTION null_out_defaults for: OKL_CURE_REFUND_HEADERS_V
511   ---------------------------------------------------------------------------
512   FUNCTION null_out_defaults (
513     p_chdv_rec   IN chdv_rec_type
514   ) RETURN chdv_rec_type IS
515     l_chdv_rec                     chdv_rec_type := p_chdv_rec;
516   BEGIN
517     IF (l_chdv_rec.cure_refund_header_id = OKL_API.G_MISS_NUM ) THEN
518       l_chdv_rec.cure_refund_header_id := NULL;
519     END IF;
520     IF (l_chdv_rec.refund_header_number = OKL_API.G_MISS_CHAR ) THEN
521       l_chdv_rec.refund_header_number := NULL;
522     END IF;
523     IF (l_chdv_rec.refund_type = OKL_API.G_MISS_CHAR ) THEN
524       l_chdv_rec.refund_type := NULL;
525     END IF;
526     IF (l_chdv_rec.refund_due_date = OKL_API.G_MISS_DATE ) THEN
527       l_chdv_rec.refund_due_date := NULL;
528     END IF;
529     IF (l_chdv_rec.currency_code = OKL_API.G_MISS_CHAR ) THEN
530       l_chdv_rec.currency_code := NULL;
531     END IF;
532     IF (l_chdv_rec.total_refund_due = OKL_API.G_MISS_NUM ) THEN
533       l_chdv_rec.total_refund_due := NULL;
534     END IF;
535     IF (l_chdv_rec.disbursement_amount = OKL_API.G_MISS_NUM ) THEN
536       l_chdv_rec.disbursement_amount := NULL;
537     END IF;
538     IF (l_chdv_rec.RECEIVED_AMOUNT = OKL_API.G_MISS_NUM ) THEN
539       l_chdv_rec.RECEIVED_AMOUNT := NULL;
540     END IF;
541     IF (l_chdv_rec.OFFSET_AMOUNT = OKL_API.G_MISS_NUM ) THEN
542       l_chdv_rec.OFFSET_AMOUNT := NULL;
543     END IF;
544     IF (l_chdv_rec.NEGOTIATED_AMOUNT = OKL_API.G_MISS_NUM ) THEN
545       l_chdv_rec.NEGOTIATED_AMOUNT := NULL;
546     END IF;
547     IF (l_chdv_rec.vendor_site_id = OKL_API.G_MISS_NUM ) THEN
548       l_chdv_rec.vendor_site_id := NULL;
549     END IF;
550     IF (l_chdv_rec.refund_status = OKL_API.G_MISS_CHAR ) THEN
551       l_chdv_rec.refund_status := NULL;
552     END IF;
553     IF (l_chdv_rec.payment_method = OKL_API.G_MISS_CHAR ) THEN
554       l_chdv_rec.payment_method := NULL;
555     END IF;
556     IF (l_chdv_rec.payment_term_id = OKL_API.G_MISS_NUM ) THEN
557       l_chdv_rec.payment_term_id := NULL;
558     END IF;
559     IF (l_chdv_rec.sfwt_flag = OKL_API.G_MISS_CHAR ) THEN
560       l_chdv_rec.sfwt_flag := NULL;
561     END IF;
562     IF (l_chdv_rec.description = OKL_API.G_MISS_CHAR ) THEN
563       l_chdv_rec.description := NULL;
564     END IF;
565     IF (l_chdv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
566       l_chdv_rec.object_version_number := NULL;
567     END IF;
568     IF (l_chdv_rec.vendor_cure_due = OKL_API.G_MISS_NUM ) THEN
569       l_chdv_rec.vendor_cure_due := NULL;
570     END IF;
571     IF (l_chdv_rec.vendor_site_cure_due = OKL_API.G_MISS_NUM ) THEN
572       l_chdv_rec.vendor_site_cure_due := NULL;
573     END IF;
574     IF (l_chdv_rec.chr_id = OKL_API.G_MISS_NUM ) THEN
575       l_chdv_rec.chr_id := NULL;
576     END IF;
577     IF (l_chdv_rec.program_id = OKL_API.G_MISS_NUM ) THEN
578       l_chdv_rec.program_id := NULL;
579     END IF;
580     IF (l_chdv_rec.request_id = OKL_API.G_MISS_NUM ) THEN
581       l_chdv_rec.request_id := NULL;
582     END IF;
583     IF (l_chdv_rec.program_application_id = OKL_API.G_MISS_NUM ) THEN
584       l_chdv_rec.program_application_id := NULL;
585     END IF;
586     IF (l_chdv_rec.program_update_date = OKL_API.G_MISS_DATE ) THEN
587       l_chdv_rec.program_update_date := NULL;
588     END IF;
589     IF (l_chdv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
590       l_chdv_rec.attribute_category := NULL;
591     END IF;
592     IF (l_chdv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
593       l_chdv_rec.attribute1 := NULL;
594     END IF;
595     IF (l_chdv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
596       l_chdv_rec.attribute2 := NULL;
597     END IF;
598     IF (l_chdv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
599       l_chdv_rec.attribute3 := NULL;
600     END IF;
601     IF (l_chdv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
602       l_chdv_rec.attribute4 := NULL;
603     END IF;
604     IF (l_chdv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
605       l_chdv_rec.attribute5 := NULL;
606     END IF;
607     IF (l_chdv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
608       l_chdv_rec.attribute6 := NULL;
609     END IF;
610     IF (l_chdv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
611       l_chdv_rec.attribute7 := NULL;
612     END IF;
613     IF (l_chdv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
614       l_chdv_rec.attribute8 := NULL;
615     END IF;
616     IF (l_chdv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
617       l_chdv_rec.attribute9 := NULL;
618     END IF;
619     IF (l_chdv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
620       l_chdv_rec.attribute10 := NULL;
621     END IF;
622     IF (l_chdv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
623       l_chdv_rec.attribute11 := NULL;
624     END IF;
625     IF (l_chdv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
626       l_chdv_rec.attribute12 := NULL;
627     END IF;
628     IF (l_chdv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
629       l_chdv_rec.attribute13 := NULL;
630     END IF;
631     IF (l_chdv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
632       l_chdv_rec.attribute14 := NULL;
633     END IF;
634     IF (l_chdv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
635       l_chdv_rec.attribute15 := NULL;
636     END IF;
637     IF (l_chdv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
638       l_chdv_rec.created_by := NULL;
639     END IF;
640     IF (l_chdv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
641       l_chdv_rec.creation_date := NULL;
642     END IF;
643     IF (l_chdv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
644       l_chdv_rec.last_updated_by := NULL;
645     END IF;
646     IF (l_chdv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
647       l_chdv_rec.last_update_date := NULL;
648     END IF;
649     IF (l_chdv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
650       l_chdv_rec.last_update_login := NULL;
651     END IF;
652     RETURN(l_chdv_rec);
653   END null_out_defaults;
654   ----------------------------------------------------
655   -- Validate_Attributes for: CURE_REFUND_HEADER_ID --
656   ----------------------------------------------------
657   PROCEDURE validate_cure_refund_header_id(
658     x_return_status                OUT NOCOPY VARCHAR2,
659     p_chdv_rec                     IN chdv_rec_type) IS
660     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
661   BEGIN
662     IF (p_chdv_rec.cure_refund_header_id = OKL_API.G_MISS_NUM OR
663         p_chdv_rec.cure_refund_header_id IS NULL)
664     THEN
665       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'cure_refund_header_id');
666       l_return_status := OKL_API.G_RET_STS_ERROR;
667     END IF;
668     x_return_status := l_return_status;
669   EXCEPTION
670     WHEN OTHERS THEN
671       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
672                           ,p_msg_name     => G_UNEXPECTED_ERROR
673                           ,p_token1       => G_SQLCODE_TOKEN
674                           ,p_token1_value => SQLCODE
675                           ,p_token2       => G_SQLERRM_TOKEN
676                           ,p_token2_value => SQLERRM);
677       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
678   END validate_cure_refund_header_id;
679   ---------------------------------------------------
680   -- Validate_Attributes for: REFUND_HEADER_NUMBER --
681   ---------------------------------------------------
682   PROCEDURE validate_refund_header_number(
683     x_return_status                OUT NOCOPY VARCHAR2,
684     p_chdv_rec                     IN chdv_rec_type) IS
685     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
686   BEGIN
687     IF (p_chdv_rec.refund_header_number = OKL_API.G_MISS_CHAR OR
688         p_chdv_rec.refund_header_number IS NULL)
689     THEN
690       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'refund_header_number');
691       l_return_status := OKL_API.G_RET_STS_ERROR;
692     END IF;
693     x_return_status := l_return_status;
694   EXCEPTION
695     WHEN OTHERS THEN
696       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
697                           ,p_msg_name     => G_UNEXPECTED_ERROR
698                           ,p_token1       => G_SQLCODE_TOKEN
699                           ,p_token1_value => SQLCODE
700                           ,p_token2       => G_SQLERRM_TOKEN
701                           ,p_token2_value => SQLERRM);
702       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
703   END validate_refund_header_number;
704   ------------------------------------------
705   -- Validate_Attributes for: REFUND_TYPE --
706   ------------------------------------------
707   PROCEDURE validate_refund_type(
708     x_return_status                OUT NOCOPY VARCHAR2,
709     p_chdv_rec                     IN chdv_rec_type) IS
710     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
711   BEGIN
712     IF (p_chdv_rec.refund_type = OKL_API.G_MISS_CHAR OR
713         p_chdv_rec.refund_type IS NULL)
714     THEN
715       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'refund_type');
716       l_return_status := OKL_API.G_RET_STS_ERROR;
717     END IF;
718     x_return_status := l_return_status;
719   EXCEPTION
720     WHEN OTHERS THEN
721       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
722                           ,p_msg_name     => G_UNEXPECTED_ERROR
723                           ,p_token1       => G_SQLCODE_TOKEN
724                           ,p_token1_value => SQLCODE
725                           ,p_token2       => G_SQLERRM_TOKEN
726                           ,p_token2_value => SQLERRM);
727       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
728   END validate_refund_type;
729   --------------------------------------------
730   -- Validate_Attributes for: CURRENCY_CODE --
731   --------------------------------------------
732   PROCEDURE validate_currency_code(
733     x_return_status                OUT NOCOPY VARCHAR2,
734     p_chdv_rec                     IN chdv_rec_type) IS
735     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
736   BEGIN
737     IF (p_chdv_rec.currency_code = OKL_API.G_MISS_CHAR OR
738         p_chdv_rec.currency_code IS NULL)
739     THEN
740       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'currency_code');
741       l_return_status := OKL_API.G_RET_STS_ERROR;
742     END IF;
743     x_return_status := l_return_status;
744   EXCEPTION
745     WHEN OTHERS THEN
746       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
747                           ,p_msg_name     => G_UNEXPECTED_ERROR
748                           ,p_token1       => G_SQLCODE_TOKEN
749                           ,p_token1_value => SQLCODE
750                           ,p_token2       => G_SQLERRM_TOKEN
751                           ,p_token2_value => SQLERRM);
752       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
753   END validate_currency_code;
754   -----------------------------------------------
755   -- Validate_Attributes for: TOTAL_REFUND_DUE --
756   -----------------------------------------------
757   PROCEDURE validate_total_refund_due(
758     x_return_status                OUT NOCOPY VARCHAR2,
759     p_chdv_rec                     IN chdv_rec_type) IS
760     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
761   BEGIN
762     IF (p_chdv_rec.total_refund_due = OKL_API.G_MISS_NUM OR
763         p_chdv_rec.total_refund_due IS NULL)
764     THEN
765       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'total_refund_due');
766       l_return_status := OKL_API.G_RET_STS_ERROR;
767     END IF;
768     x_return_status := l_return_status;
769   EXCEPTION
770     WHEN OTHERS THEN
771       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
772                           ,p_msg_name     => G_UNEXPECTED_ERROR
773                           ,p_token1       => G_SQLCODE_TOKEN
774                           ,p_token1_value => SQLCODE
775                           ,p_token2       => G_SQLERRM_TOKEN
776                           ,p_token2_value => SQLERRM);
777       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
778   END validate_total_refund_due;
779   --------------------------------------------------
780   -- Validate_Attributes for: DISBURSEMENT_AMOUNT --
781   --------------------------------------------------
782   PROCEDURE validate_disbursement_amount(
783     x_return_status                OUT NOCOPY VARCHAR2,
784     p_chdv_rec                     IN chdv_rec_type) IS
785     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
786   BEGIN
787     IF (p_chdv_rec.disbursement_amount = OKL_API.G_MISS_NUM OR
788         p_chdv_rec.disbursement_amount IS NULL)
789     THEN
790       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'disbursement_amount');
791       l_return_status := OKL_API.G_RET_STS_ERROR;
792     END IF;
793     x_return_status := l_return_status;
794   EXCEPTION
795     WHEN OTHERS THEN
796       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
797                           ,p_msg_name     => G_UNEXPECTED_ERROR
798                           ,p_token1       => G_SQLCODE_TOKEN
799                           ,p_token1_value => SQLCODE
800                           ,p_token2       => G_SQLERRM_TOKEN
801                           ,p_token2_value => SQLERRM);
802       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
803   END validate_disbursement_amount;
804   ---------------------------------------------
805   -- Validate_Attributes for: VENDOR_SITE_ID --
806   ---------------------------------------------
807   PROCEDURE validate_vendor_site_id(
808     x_return_status                OUT NOCOPY VARCHAR2,
809     p_chdv_rec                     IN chdv_rec_type) IS
810     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
811   BEGIN
812     IF (p_chdv_rec.vendor_site_id = OKL_API.G_MISS_NUM OR
813         p_chdv_rec.vendor_site_id IS NULL)
814     THEN
815       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'vendor_site_id');
816       l_return_status := OKL_API.G_RET_STS_ERROR;
817     END IF;
818     x_return_status := l_return_status;
819   EXCEPTION
820     WHEN OTHERS THEN
821       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
822                           ,p_msg_name     => G_UNEXPECTED_ERROR
823                           ,p_token1       => G_SQLCODE_TOKEN
824                           ,p_token1_value => SQLCODE
825                           ,p_token2       => G_SQLERRM_TOKEN
826                           ,p_token2_value => SQLERRM);
827       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
828   END validate_vendor_site_id;
829   ----------------------------------------------------
830   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
831   ----------------------------------------------------
832   PROCEDURE validate_object_version_number(
833     x_return_status                OUT NOCOPY VARCHAR2,
834     p_chdv_rec                     IN chdv_rec_type) IS
835     l_return_status	VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
836   BEGIN
837     IF (p_chdv_rec.object_version_number = OKL_API.G_MISS_NUM OR
838         p_chdv_rec.object_version_number IS NULL)
839     THEN
840       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
841       l_return_status := OKL_API.G_RET_STS_ERROR;
842     END IF;
843     x_return_status := l_return_status;
844   EXCEPTION
845     WHEN OTHERS THEN
846       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
847                           ,p_msg_name     => G_UNEXPECTED_ERROR
848                           ,p_token1       => G_SQLCODE_TOKEN
849                           ,p_token1_value => SQLCODE
850                           ,p_token2       => G_SQLERRM_TOKEN
851                           ,p_token2_value => SQLERRM);
852       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
853   END validate_object_version_number;
854   ---------------------------------------------------------------------------
855   -- FUNCTION Validate_Attributes
856   ---------------------------------------------------------------------------
857   -------------------------------------------------------
858   -- Validate_Attributes for:OKL_CURE_REFUND_HEADERS_V --
859   -------------------------------------------------------
860   FUNCTION Validate_Attributes (
861     p_chdv_rec                     IN chdv_rec_type
862   ) RETURN VARCHAR2 IS
863     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
864     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
865   BEGIN
866     -----------------------------
867     -- Column Level Validation --
868     -----------------------------
869     -- ***
870     -- cure_refund_header_id
871     -- ***
872     validate_cure_refund_header_id(x_return_status, p_chdv_rec);
873     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
874       l_return_status := x_return_status;
875       RAISE G_EXCEPTION_HALT_VALIDATION;
876     END IF;
877 
878     -- ***
879     -- refund_header_number
880     -- ***
881     validate_refund_header_number(x_return_status, p_chdv_rec);
882     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
883       l_return_status := x_return_status;
884       RAISE G_EXCEPTION_HALT_VALIDATION;
885     END IF;
886 
887     -- ***
888     -- refund_type
889     -- ***
890    /* validate_refund_type(x_return_status, p_chdv_rec);
891     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
892       l_return_status := x_return_status;
893       RAISE G_EXCEPTION_HALT_VALIDATION;
894     END IF;
895  */
896 
897     -- ***
898     -- currency_code
899     -- ***
900     validate_currency_code(x_return_status, p_chdv_rec);
901     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
902       l_return_status := x_return_status;
903       RAISE G_EXCEPTION_HALT_VALIDATION;
904     END IF;
905 
906     -- ***
907     -- total_refund_due
908     -- ***
909 /*    validate_total_refund_due(x_return_status, p_chdv_rec);
910     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
911       l_return_status := x_return_status;
912       RAISE G_EXCEPTION_HALT_VALIDATION;
913     END IF;
914 */
915     -- ***
916     -- disbursement_amount
917     -- ***
918 /*    validate_disbursement_amount(x_return_status, p_chdv_rec);
919     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
920       l_return_status := x_return_status;
921       RAISE G_EXCEPTION_HALT_VALIDATION;
922     END IF;
923 */
924     -- ***
925     -- vendor_site_id
926     -- ***
927     validate_vendor_site_id(x_return_status, p_chdv_rec);
928     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
929       l_return_status := x_return_status;
930       RAISE G_EXCEPTION_HALT_VALIDATION;
931     END IF;
932 
933     -- ***
934     -- object_version_number
935     -- ***
936     validate_object_version_number(x_return_status, p_chdv_rec);
937     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
938       l_return_status := x_return_status;
939       RAISE G_EXCEPTION_HALT_VALIDATION;
940     END IF;
941 
942     RETURN(l_return_status);
943   EXCEPTION
944     WHEN G_EXCEPTION_HALT_VALIDATION THEN
945       RETURN(l_return_status);
946     WHEN OTHERS THEN
947       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
948                           ,p_msg_name     => G_UNEXPECTED_ERROR
949                           ,p_token1       => G_SQLCODE_TOKEN
950                           ,p_token1_value => SQLCODE
951                           ,p_token2       => G_SQLERRM_TOKEN
952                           ,p_token2_value => SQLERRM);
953       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
954       RETURN(l_return_status);
955   END Validate_Attributes;
956   ---------------------------------------------------------------------------
957   -- PROCEDURE Validate_Record
958   ---------------------------------------------------------------------------
959   ---------------------------------------------------
960   -- Validate Record for:OKL_CURE_REFUND_HEADERS_V --
961   ---------------------------------------------------
962   FUNCTION Validate_Record (
963     p_chdv_rec IN chdv_rec_type,
964     p_db_chdv_rec IN chdv_rec_type
965   ) RETURN VARCHAR2 IS
966     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
967   BEGIN
968     RETURN (l_return_status);
969   END Validate_Record;
970   FUNCTION Validate_Record (
971     p_chdv_rec IN chdv_rec_type
972   ) RETURN VARCHAR2 IS
973     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
974     l_db_chdv_rec                  chdv_rec_type := get_rec(p_chdv_rec);
975   BEGIN
976     l_return_status := Validate_Record(p_chdv_rec => p_chdv_rec,
977                                        p_db_chdv_rec => l_db_chdv_rec);
978     RETURN (l_return_status);
979   END Validate_Record;
980 
981   ---------------------------------------------------------------------------
982   -- PROCEDURE Migrate
983   ---------------------------------------------------------------------------
984   PROCEDURE migrate (
985     p_from IN chdv_rec_type,
986     p_to   IN OUT NOCOPY chd_rec_type
987   ) IS
988   BEGIN
989     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
990     p_to.refund_header_number := p_from.refund_header_number;
991     p_to.refund_type := p_from.refund_type;
992     p_to.refund_due_date := p_from.refund_due_date;
993     p_to.currency_code := p_from.currency_code;
994     p_to.total_refund_due := p_from.total_refund_due;
995     p_to.disbursement_amount := p_from.disbursement_amount;
996     p_to.RECEIVED_AMOUNT := p_from.RECEIVED_AMOUNT;
997     p_to.OFFSET_AMOUNT := p_from.OFFSET_AMOUNT;
998     p_to.NEGOTIATED_AMOUNT := p_from.NEGOTIATED_AMOUNT;
999     p_to.vendor_site_id := p_from.vendor_site_id;
1000     p_to.refund_status := p_from.refund_status;
1001     p_to.payment_method := p_from.payment_method;
1002     p_to.payment_term_id := p_from.payment_term_id;
1003     p_to.object_version_number := p_from.object_version_number;
1004     p_to.vendor_cure_due := p_from.vendor_cure_due;
1005     p_to.vendor_site_cure_due := p_from.vendor_site_cure_due;
1006     p_to.chr_id := p_from.chr_id;
1007     p_to.program_application_id := p_from.program_application_id;
1008     p_to.request_id := p_from.request_id;
1009     p_to.program_id := p_from.program_id;
1010     p_to.program_update_date := p_from.program_update_date;
1011     p_to.attribute_category := p_from.attribute_category;
1012     p_to.attribute1 := p_from.attribute1;
1013     p_to.attribute2 := p_from.attribute2;
1014     p_to.attribute3 := p_from.attribute3;
1015     p_to.attribute4 := p_from.attribute4;
1016     p_to.attribute5 := p_from.attribute5;
1017     p_to.attribute6 := p_from.attribute6;
1018     p_to.attribute7 := p_from.attribute7;
1019     p_to.attribute8 := p_from.attribute8;
1020     p_to.attribute9 := p_from.attribute9;
1021     p_to.attribute10 := p_from.attribute10;
1022     p_to.attribute11 := p_from.attribute11;
1023     p_to.attribute12 := p_from.attribute12;
1024     p_to.attribute13 := p_from.attribute13;
1025     p_to.attribute14 := p_from.attribute14;
1026     p_to.attribute15 := p_from.attribute15;
1027     p_to.created_by := p_from.created_by;
1028     p_to.creation_date := p_from.creation_date;
1029     p_to.last_updated_by := p_from.last_updated_by;
1030     p_to.last_update_date := p_from.last_update_date;
1031     p_to.last_update_login := p_from.last_update_login;
1032   END migrate;
1033   PROCEDURE migrate (
1034     p_from IN chd_rec_type,
1035     p_to   IN OUT NOCOPY chdv_rec_type
1036   ) IS
1037   BEGIN
1038     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
1039     p_to.refund_header_number := p_from.refund_header_number;
1040     p_to.refund_type := p_from.refund_type;
1041     p_to.refund_due_date := p_from.refund_due_date;
1042     p_to.currency_code := p_from.currency_code;
1043     p_to.total_refund_due := p_from.total_refund_due;
1044     p_to.disbursement_amount := p_from.disbursement_amount;
1045     p_to.RECEIVED_AMOUNT := p_from.RECEIVED_AMOUNT;
1046     p_to.OFFSET_AMOUNT := p_from.OFFSET_AMOUNT;
1047     p_to.NEGOTIATED_AMOUNT := p_from.NEGOTIATED_AMOUNT;
1048     p_to.vendor_site_id := p_from.vendor_site_id;
1049     p_to.refund_status := p_from.refund_status;
1050     p_to.payment_method := p_from.payment_method;
1051     p_to.payment_term_id := p_from.payment_term_id;
1052     p_to.object_version_number := p_from.object_version_number;
1053     p_to.vendor_cure_due := p_from.vendor_cure_due;
1054     p_to.vendor_site_cure_due := p_from.vendor_site_cure_due;
1055     p_to.chr_id := p_from.chr_id;
1056     p_to.program_id := p_from.program_id;
1057     p_to.request_id := p_from.request_id;
1058     p_to.program_application_id := p_from.program_application_id;
1059     p_to.program_update_date := p_from.program_update_date;
1060     p_to.attribute_category := p_from.attribute_category;
1061     p_to.attribute1 := p_from.attribute1;
1062     p_to.attribute2 := p_from.attribute2;
1063     p_to.attribute3 := p_from.attribute3;
1064     p_to.attribute4 := p_from.attribute4;
1065     p_to.attribute5 := p_from.attribute5;
1066     p_to.attribute6 := p_from.attribute6;
1067     p_to.attribute7 := p_from.attribute7;
1068     p_to.attribute8 := p_from.attribute8;
1069     p_to.attribute9 := p_from.attribute9;
1070     p_to.attribute10 := p_from.attribute10;
1071     p_to.attribute11 := p_from.attribute11;
1072     p_to.attribute12 := p_from.attribute12;
1073     p_to.attribute13 := p_from.attribute13;
1074     p_to.attribute14 := p_from.attribute14;
1075     p_to.attribute15 := p_from.attribute15;
1076     p_to.created_by := p_from.created_by;
1077     p_to.creation_date := p_from.creation_date;
1078     p_to.last_updated_by := p_from.last_updated_by;
1079     p_to.last_update_date := p_from.last_update_date;
1080     p_to.last_update_login := p_from.last_update_login;
1081   END migrate;
1082   PROCEDURE migrate (
1083     p_from IN chdv_rec_type,
1084     p_to   IN OUT NOCOPY OklCureRefundHeadersTlRecType
1085   ) IS
1086   BEGIN
1087     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
1088     p_to.sfwt_flag := p_from.sfwt_flag;
1089     p_to.description := p_from.description;
1090     p_to.created_by := p_from.created_by;
1091     p_to.creation_date := p_from.creation_date;
1092     p_to.last_updated_by := p_from.last_updated_by;
1093     p_to.last_update_date := p_from.last_update_date;
1094     p_to.last_update_login := p_from.last_update_login;
1095   END migrate;
1096   PROCEDURE migrate (
1097     p_from IN OklCureRefundHeadersTlRecType,
1098     p_to   IN OUT NOCOPY chdv_rec_type
1099   ) IS
1100   BEGIN
1101     p_to.cure_refund_header_id := p_from.cure_refund_header_id;
1102     p_to.sfwt_flag := p_from.sfwt_flag;
1103     p_to.description := p_from.description;
1104     p_to.created_by := p_from.created_by;
1105     p_to.creation_date := p_from.creation_date;
1106     p_to.last_updated_by := p_from.last_updated_by;
1107     p_to.last_update_date := p_from.last_update_date;
1108     p_to.last_update_login := p_from.last_update_login;
1109   END migrate;
1110   ---------------------------------------------------------------------------
1111   -- PROCEDURE validate_row
1112   ---------------------------------------------------------------------------
1113   ------------------------------------------------
1114   -- validate_row for:OKL_CURE_REFUND_HEADERS_V --
1115   ------------------------------------------------
1116   PROCEDURE validate_row(
1117     p_api_version                  IN NUMBER,
1118     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1119     x_return_status                OUT NOCOPY VARCHAR2,
1120     x_msg_count                    OUT NOCOPY NUMBER,
1121     x_msg_data                     OUT NOCOPY VARCHAR2,
1122     p_chdv_rec                     IN chdv_rec_type) IS
1123 
1124     l_api_version                  CONSTANT NUMBER := 1;
1125     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1126     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1127     l_chdv_rec                     chdv_rec_type := p_chdv_rec;
1128     l_chd_rec                      chd_rec_type;
1129     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
1130   BEGIN
1131     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1132                                               G_PKG_NAME,
1133                                               p_init_msg_list,
1134                                               l_api_version,
1135                                               p_api_version,
1136                                               '_PVT',
1137                                               x_return_status);
1138     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1139       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1140     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1141       RAISE OKL_API.G_EXCEPTION_ERROR;
1142     END IF;
1143     --- Validate all non-missing attributes (Item Level Validation)
1144     l_return_status := Validate_Attributes(l_chdv_rec);
1145     --- If any errors happen abort API
1146     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1147       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1148     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1149       RAISE OKL_API.G_EXCEPTION_ERROR;
1150     END IF;
1151     l_return_status := Validate_Record(l_chdv_rec);
1152     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1153       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1154     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1155       RAISE OKL_API.G_EXCEPTION_ERROR;
1156     END IF;
1157     x_return_status := l_return_status;
1158   EXCEPTION
1159     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1160       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1161       (
1162         l_api_name,
1163         G_PKG_NAME,
1164         'OKL_API.G_RET_STS_ERROR',
1165         x_msg_count,
1166         x_msg_data,
1167         '_PVT'
1168       );
1169     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1170       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1171       (
1172         l_api_name,
1173         G_PKG_NAME,
1174         'OKL_API.G_RET_STS_UNEXP_ERROR',
1175         x_msg_count,
1176         x_msg_data,
1177         '_PVT'
1178       );
1179     WHEN OTHERS THEN
1180       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1181       (
1182         l_api_name,
1183         G_PKG_NAME,
1184         'OTHERS',
1185         x_msg_count,
1186         x_msg_data,
1187         '_PVT'
1188       );
1189   END validate_row;
1190   -----------------------------------------------------------
1191   -- PL/SQL TBL validate_row for:OKL_CURE_REFUND_HEADERS_V --
1192   -----------------------------------------------------------
1193   PROCEDURE validate_row(
1194     p_api_version                  IN NUMBER,
1195     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1196     x_return_status                OUT NOCOPY VARCHAR2,
1197     x_msg_count                    OUT NOCOPY NUMBER,
1198     x_msg_data                     OUT NOCOPY VARCHAR2,
1199     p_chdv_tbl                     IN chdv_tbl_type,
1200     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1201 
1202     l_api_version                  CONSTANT NUMBER := 1;
1203     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1204     i                              NUMBER := 0;
1205   BEGIN
1206     OKL_API.init_msg_list(p_init_msg_list);
1207     -- Make sure PL/SQL table has records in it before passing
1208     IF (p_chdv_tbl.COUNT > 0) THEN
1209       i := p_chdv_tbl.FIRST;
1210       LOOP
1211         DECLARE
1212           l_error_rec         OKL_API.ERROR_REC_TYPE;
1213         BEGIN
1214           l_error_rec.api_name := l_api_name;
1215           l_error_rec.api_package := G_PKG_NAME;
1216           l_error_rec.idx := i;
1217           validate_row (
1218             p_api_version                  => p_api_version,
1219             p_init_msg_list                => OKL_API.G_FALSE,
1220             x_return_status                => l_error_rec.error_type,
1221             x_msg_count                    => l_error_rec.msg_count,
1222             x_msg_data                     => l_error_rec.msg_data,
1223             p_chdv_rec                     => p_chdv_tbl(i));
1224           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1225             l_error_rec.sqlcode := SQLCODE;
1226             load_error_tbl(l_error_rec, px_error_tbl);
1227           ELSE
1228             x_msg_count := l_error_rec.msg_count;
1229             x_msg_data := l_error_rec.msg_data;
1230           END IF;
1231         EXCEPTION
1232           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1233             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1234             l_error_rec.sqlcode := SQLCODE;
1235             load_error_tbl(l_error_rec, px_error_tbl);
1236           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1237             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1238             l_error_rec.sqlcode := SQLCODE;
1239             load_error_tbl(l_error_rec, px_error_tbl);
1240           WHEN OTHERS THEN
1241             l_error_rec.error_type := 'OTHERS';
1242             l_error_rec.sqlcode := SQLCODE;
1243             load_error_tbl(l_error_rec, px_error_tbl);
1244         END;
1245         EXIT WHEN (i = p_chdv_tbl.LAST);
1246         i := p_chdv_tbl.NEXT(i);
1247       END LOOP;
1248     END IF;
1249     -- Loop through the error_tbl to find the error with the highest severity
1250     -- and return it.
1251     x_return_status := find_highest_exception(px_error_tbl);
1252     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1253   EXCEPTION
1254     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1255       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1256       (
1257         l_api_name,
1258         G_PKG_NAME,
1259         'OKL_API.G_RET_STS_ERROR',
1260         x_msg_count,
1261         x_msg_data,
1262         '_PVT'
1263       );
1264     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1265       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1266       (
1267         l_api_name,
1268         G_PKG_NAME,
1269         'OKL_API.G_RET_STS_UNEXP_ERROR',
1270         x_msg_count,
1271         x_msg_data,
1272         '_PVT'
1273       );
1274     WHEN OTHERS THEN
1275       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1276       (
1277         l_api_name,
1278         G_PKG_NAME,
1279         'OTHERS',
1280         x_msg_count,
1281         x_msg_data,
1282         '_PVT'
1283       );
1284   END validate_row;
1285 
1286   -----------------------------------------------------------
1287   -- PL/SQL TBL validate_row for:OKL_CURE_REFUND_HEADERS_V --
1288   -----------------------------------------------------------
1289   PROCEDURE validate_row(
1290     p_api_version                  IN NUMBER,
1291     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1292     x_return_status                OUT NOCOPY VARCHAR2,
1293     x_msg_count                    OUT NOCOPY NUMBER,
1294     x_msg_data                     OUT NOCOPY VARCHAR2,
1295     p_chdv_tbl                     IN chdv_tbl_type) IS
1296 
1297     l_api_version                  CONSTANT NUMBER := 1;
1298     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1299     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1300     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1301   BEGIN
1302     OKL_API.init_msg_list(p_init_msg_list);
1303     -- Make sure PL/SQL table has records in it before passing
1304     IF (p_chdv_tbl.COUNT > 0) THEN
1305       validate_row (
1306         p_api_version                  => p_api_version,
1307         p_init_msg_list                => OKL_API.G_FALSE,
1308         x_return_status                => x_return_status,
1309         x_msg_count                    => x_msg_count,
1310         x_msg_data                     => x_msg_data,
1311         p_chdv_tbl                     => p_chdv_tbl,
1312         px_error_tbl                   => l_error_tbl);
1313     END IF;
1314     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1315   EXCEPTION
1316     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1317       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1318       (
1319         l_api_name,
1320         G_PKG_NAME,
1321         'OKL_API.G_RET_STS_ERROR',
1322         x_msg_count,
1323         x_msg_data,
1324         '_PVT'
1325       );
1326     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1327       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1328       (
1329         l_api_name,
1330         G_PKG_NAME,
1331         'OKL_API.G_RET_STS_UNEXP_ERROR',
1332         x_msg_count,
1333         x_msg_data,
1334         '_PVT'
1335       );
1336     WHEN OTHERS THEN
1337       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1338       (
1339         l_api_name,
1340         G_PKG_NAME,
1341         'OTHERS',
1342         x_msg_count,
1343         x_msg_data,
1344         '_PVT'
1345       );
1346   END validate_row;
1347 
1348   ---------------------------------------------------------------------------
1349   -- PROCEDURE insert_row
1350   ---------------------------------------------------------------------------
1351   ----------------------------------------------
1352   -- insert_row for:OKL_CURE_REFUND_HEADERS_B --
1353   ----------------------------------------------
1354   PROCEDURE insert_row(
1355     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1356     x_return_status                OUT NOCOPY VARCHAR2,
1357     x_msg_count                    OUT NOCOPY NUMBER,
1358     x_msg_data                     OUT NOCOPY VARCHAR2,
1359     p_chd_rec                      IN chd_rec_type,
1360     x_chd_rec                      OUT NOCOPY chd_rec_type) IS
1361 
1362     l_api_version                  CONSTANT NUMBER := 1;
1363     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1364     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1365     l_chd_rec                      chd_rec_type := p_chd_rec;
1366     l_def_chd_rec                  chd_rec_type;
1367     --------------------------------------------------
1368     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_B --
1369     --------------------------------------------------
1370     FUNCTION Set_Attributes (
1371       p_chd_rec IN chd_rec_type,
1372       x_chd_rec OUT NOCOPY chd_rec_type
1373     ) RETURN VARCHAR2 IS
1374       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1375     BEGIN
1376       x_chd_rec := p_chd_rec;
1377       RETURN(l_return_status);
1378     END Set_Attributes;
1379   BEGIN
1380     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1381                                               p_init_msg_list,
1382                                               '_PVT',
1383                                               x_return_status);
1384     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1385       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1386     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1387       RAISE OKL_API.G_EXCEPTION_ERROR;
1388     END IF;
1389     --- Setting item atributes
1390     l_return_status := Set_Attributes(
1391       p_chd_rec,                         -- IN
1392       l_chd_rec);                        -- OUT
1393     --- If any errors happen abort API
1394     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1395       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1396     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1397       RAISE OKL_API.G_EXCEPTION_ERROR;
1398     END IF;
1399     INSERT INTO OKL_CURE_REFUND_HEADERS_B(
1400       cure_refund_header_id,
1401       refund_header_number,
1402       refund_type,
1403       refund_due_date,
1404       currency_code,
1405       total_refund_due,
1406       disbursement_amount,
1407       RECEIVED_AMOUNT,
1408       OFFSET_AMOUNT,
1409       NEGOTIATED_AMOUNT,
1410       vendor_site_id,
1411       refund_status,
1412       payment_method,
1413       payment_term_id,
1414       object_version_number,
1415       vendor_cure_due,
1416       vendor_site_cure_due,
1417       chr_id,
1418       program_application_id,
1419       request_id,
1420       program_id,
1421       program_update_date,
1422       attribute_category,
1423       attribute1,
1424       attribute2,
1425       attribute3,
1426       attribute4,
1427       attribute5,
1428       attribute6,
1429       attribute7,
1430       attribute8,
1431       attribute9,
1432       attribute10,
1433       attribute11,
1434       attribute12,
1435       attribute13,
1436       attribute14,
1437       attribute15,
1438       created_by,
1439       creation_date,
1440       last_updated_by,
1441       last_update_date,
1442       last_update_login)
1443     VALUES (
1444       l_chd_rec.cure_refund_header_id,
1445       l_chd_rec.refund_header_number,
1446       l_chd_rec.refund_type,
1447       l_chd_rec.refund_due_date,
1448       l_chd_rec.currency_code,
1449       l_chd_rec.total_refund_due,
1450       l_chd_rec.disbursement_amount,
1451       l_chd_rec.RECEIVED_AMOUNT,
1452       l_chd_rec.OFFSET_AMOUNT,
1453       l_chd_rec.NEGOTIATED_AMOUNT,
1454       l_chd_rec.vendor_site_id,
1455       l_chd_rec.refund_status,
1456       l_chd_rec.payment_method,
1457       l_chd_rec.payment_term_id,
1458       l_chd_rec.object_version_number,
1459       l_chd_rec.vendor_cure_due,
1460       l_chd_rec.vendor_site_cure_due,
1461       l_chd_rec.chr_id,
1462       l_chd_rec.program_application_id,
1463       l_chd_rec.request_id,
1464       l_chd_rec.program_id,
1465       l_chd_rec.program_update_date,
1466       l_chd_rec.attribute_category,
1467       l_chd_rec.attribute1,
1468       l_chd_rec.attribute2,
1469       l_chd_rec.attribute3,
1470       l_chd_rec.attribute4,
1471       l_chd_rec.attribute5,
1472       l_chd_rec.attribute6,
1473       l_chd_rec.attribute7,
1474       l_chd_rec.attribute8,
1475       l_chd_rec.attribute9,
1476       l_chd_rec.attribute10,
1477       l_chd_rec.attribute11,
1478       l_chd_rec.attribute12,
1479       l_chd_rec.attribute13,
1480       l_chd_rec.attribute14,
1481       l_chd_rec.attribute15,
1482       l_chd_rec.created_by,
1483       l_chd_rec.creation_date,
1484       l_chd_rec.last_updated_by,
1485       l_chd_rec.last_update_date,
1486       l_chd_rec.last_update_login);
1487     -- Set OUT values
1488     x_chd_rec := l_chd_rec;
1489     x_return_status := l_return_status;
1490     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1491   EXCEPTION
1492     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1493       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1494       (
1495         l_api_name,
1496         G_PKG_NAME,
1497         'OKL_API.G_RET_STS_ERROR',
1498         x_msg_count,
1499         x_msg_data,
1500         '_PVT'
1501       );
1502     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1503       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1504       (
1505         l_api_name,
1506         G_PKG_NAME,
1507         'OKL_API.G_RET_STS_UNEXP_ERROR',
1508         x_msg_count,
1509         x_msg_data,
1510         '_PVT'
1511       );
1512     WHEN OTHERS THEN
1513       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1514       (
1515         l_api_name,
1516         G_PKG_NAME,
1517         'OTHERS',
1518         x_msg_count,
1519         x_msg_data,
1520         '_PVT'
1521       );
1522   END insert_row;
1523   -----------------------------------------------
1524   -- insert_row for:OKL_CURE_REFUND_HEADERS_TL --
1525   -----------------------------------------------
1526   PROCEDURE insert_row(
1527     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1528     x_return_status                OUT NOCOPY VARCHAR2,
1529     x_msg_count                    OUT NOCOPY NUMBER,
1530     x_msg_data                     OUT NOCOPY VARCHAR2,
1531     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType,
1532     XOklCureRefundHeadersTlRec     OUT NOCOPY OklCureRefundHeadersTlRecType) IS
1533 
1534     l_api_version                  CONSTANT NUMBER := 1;
1535     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
1536     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1537     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType := p_okl_cure_refund_h182;
1538     LDefOklCureRefundHeadersTlRec  OklCureRefundHeadersTlRecType;
1539     CURSOR get_languages IS
1540       SELECT *
1541         FROM FND_LANGUAGES
1542        WHERE INSTALLED_FLAG IN ('I', 'B');
1543     ---------------------------------------------------
1544     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_TL --
1545     ---------------------------------------------------
1546     FUNCTION Set_Attributes (
1547       p_okl_cure_refund_h182 IN OklCureRefundHeadersTlRecType,
1548       XOklCureRefundHeadersTlRec OUT NOCOPY OklCureRefundHeadersTlRecType
1549     ) RETURN VARCHAR2 IS
1550       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1551     BEGIN
1552       XOklCureRefundHeadersTlRec := p_okl_cure_refund_h182;
1553       XOklCureRefundHeadersTlRec.LANGUAGE := USERENV('LANG');
1554       XOklCureRefundHeadersTlRec.SOURCE_LANG := USERENV('LANG');
1555       RETURN(l_return_status);
1556     END Set_Attributes;
1557   BEGIN
1558     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1559                                               p_init_msg_list,
1560                                               '_PVT',
1561                                               x_return_status);
1562     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1563       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1564     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1565       RAISE OKL_API.G_EXCEPTION_ERROR;
1566     END IF;
1567     --- Setting item attributes
1568     l_return_status := Set_Attributes(
1569       p_okl_cure_refund_h182,            -- IN
1570       l_okl_cure_refund_h183);           -- OUT
1571     --- If any errors happen abort API
1572     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1573       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1574     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1575       RAISE OKL_API.G_EXCEPTION_ERROR;
1576     END IF;
1577     FOR l_lang_rec IN get_languages LOOP
1578       l_okl_cure_refund_h183.language := l_lang_rec.language_code;
1579       INSERT INTO OKL_CURE_REFUND_HEADERS_TL(
1580         cure_refund_header_id,
1581         language,
1582         source_lang,
1583         sfwt_flag,
1584         description,
1585         created_by,
1586         creation_date,
1587         last_updated_by,
1588         last_update_date,
1589         last_update_login)
1590       VALUES (
1591         l_okl_cure_refund_h183.cure_refund_header_id,
1592         l_okl_cure_refund_h183.language,
1593         l_okl_cure_refund_h183.source_lang,
1594         l_okl_cure_refund_h183.sfwt_flag,
1595         l_okl_cure_refund_h183.description,
1596         l_okl_cure_refund_h183.created_by,
1597         l_okl_cure_refund_h183.creation_date,
1598         l_okl_cure_refund_h183.last_updated_by,
1599         l_okl_cure_refund_h183.last_update_date,
1600         l_okl_cure_refund_h183.last_update_login);
1601     END LOOP;
1602     -- Set OUT values
1603     XOklCureRefundHeadersTlRec := l_okl_cure_refund_h183;
1604     x_return_status := l_return_status;
1605     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1606   EXCEPTION
1607     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1608       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1609       (
1610         l_api_name,
1611         G_PKG_NAME,
1612         'OKL_API.G_RET_STS_ERROR',
1613         x_msg_count,
1614         x_msg_data,
1615         '_PVT'
1616       );
1617     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1618       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1619       (
1620         l_api_name,
1621         G_PKG_NAME,
1622         'OKL_API.G_RET_STS_UNEXP_ERROR',
1623         x_msg_count,
1624         x_msg_data,
1625         '_PVT'
1626       );
1627     WHEN OTHERS THEN
1628       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1629       (
1630         l_api_name,
1631         G_PKG_NAME,
1632         'OTHERS',
1633         x_msg_count,
1634         x_msg_data,
1635         '_PVT'
1636       );
1637   END insert_row;
1638   -----------------------------------------------
1639   -- insert_row for :OKL_CURE_REFUND_HEADERS_V --
1640   -----------------------------------------------
1641   PROCEDURE insert_row(
1642     p_api_version                  IN NUMBER,
1643     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1644     x_return_status                OUT NOCOPY VARCHAR2,
1645     x_msg_count                    OUT NOCOPY NUMBER,
1646     x_msg_data                     OUT NOCOPY VARCHAR2,
1647     p_chdv_rec                     IN chdv_rec_type,
1648     x_chdv_rec                     OUT NOCOPY chdv_rec_type) IS
1649 
1650     l_api_version                  CONSTANT NUMBER := 1;
1651     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1652     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1653     l_chdv_rec                     chdv_rec_type := p_chdv_rec;
1654     l_def_chdv_rec                 chdv_rec_type;
1655     l_chd_rec                      chd_rec_type;
1656     lx_chd_rec                     chd_rec_type;
1657     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
1658     LxOklCureRefundHeadersTlRec    OklCureRefundHeadersTlRecType;
1659     -------------------------------
1660     -- FUNCTION fill_who_columns --
1661     -------------------------------
1662     FUNCTION fill_who_columns (
1663       p_chdv_rec IN chdv_rec_type
1664     ) RETURN chdv_rec_type IS
1665       l_chdv_rec chdv_rec_type := p_chdv_rec;
1666     BEGIN
1667       l_chdv_rec.CREATION_DATE := SYSDATE;
1668       l_chdv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1669       l_chdv_rec.LAST_UPDATE_DATE := l_chdv_rec.CREATION_DATE;
1670       l_chdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1671       l_chdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1672       RETURN(l_chdv_rec);
1673     END fill_who_columns;
1674     --------------------------------------------------
1675     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_V --
1676     --------------------------------------------------
1677     FUNCTION Set_Attributes (
1678       p_chdv_rec IN chdv_rec_type,
1679       x_chdv_rec OUT NOCOPY chdv_rec_type
1680     ) RETURN VARCHAR2 IS
1681       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1682     BEGIN
1683       x_chdv_rec := p_chdv_rec;
1684       x_chdv_rec.OBJECT_VERSION_NUMBER := 1;
1685       x_chdv_rec.SFWT_FLAG := 'N';
1686       RETURN(l_return_status);
1687     END Set_Attributes;
1688   BEGIN
1689     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1690                                               G_PKG_NAME,
1691                                               p_init_msg_list,
1692                                               l_api_version,
1693                                               p_api_version,
1694                                               '_PVT',
1695                                               x_return_status);
1696     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1697       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1698     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1699       RAISE OKL_API.G_EXCEPTION_ERROR;
1700     END IF;
1701     l_chdv_rec := null_out_defaults(p_chdv_rec);
1702     -- Set primary key value
1703     l_chdv_rec.CURE_REFUND_HEADER_ID := get_seq_id;
1704     -- Setting item attributes
1705     l_return_Status := Set_Attributes(
1706       l_chdv_rec,                        -- IN
1707       l_def_chdv_rec);                   -- OUT
1708     --- If any errors happen abort API
1709     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1710       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1711     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1712       RAISE OKL_API.G_EXCEPTION_ERROR;
1713     END IF;
1714     l_def_chdv_rec := fill_who_columns(l_def_chdv_rec);
1715     --- Validate all non-missing attributes (Item Level Validation)
1716     l_return_status := Validate_Attributes(l_def_chdv_rec);
1717     --- If any errors happen abort API
1718     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1719       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1720     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1721       RAISE OKL_API.G_EXCEPTION_ERROR;
1722     END IF;
1723     l_return_status := Validate_Record(l_def_chdv_rec);
1724     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1725       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1726     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1727       RAISE OKL_API.G_EXCEPTION_ERROR;
1728     END IF;
1729     -----------------------------------------
1730     -- Move VIEW record to "Child" records --
1731     -----------------------------------------
1732     migrate(l_def_chdv_rec, l_chd_rec);
1733     migrate(l_def_chdv_rec, l_okl_cure_refund_h183);
1734     -----------------------------------------------
1735     -- Call the INSERT_ROW for each child record --
1736     -----------------------------------------------
1737     insert_row(
1738       p_init_msg_list,
1739       l_return_status,
1740       x_msg_count,
1741       x_msg_data,
1742       l_chd_rec,
1743       lx_chd_rec
1744     );
1745     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1746       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1747     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1748       RAISE OKL_API.G_EXCEPTION_ERROR;
1749     END IF;
1750     migrate(lx_chd_rec, l_def_chdv_rec);
1751     insert_row(
1752       p_init_msg_list,
1753       l_return_status,
1754       x_msg_count,
1755       x_msg_data,
1756       l_okl_cure_refund_h183,
1757       LxOklCureRefundHeadersTlRec
1758     );
1759     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1760       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1761     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1762       RAISE OKL_API.G_EXCEPTION_ERROR;
1763     END IF;
1764     migrate(LxOklCureRefundHeadersTlRec, l_def_chdv_rec);
1765     -- Set OUT values
1766     x_chdv_rec := l_def_chdv_rec;
1767     x_return_status := l_return_status;
1768     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1769   EXCEPTION
1770     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1771       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1772       (
1773         l_api_name,
1774         G_PKG_NAME,
1775         'OKL_API.G_RET_STS_ERROR',
1776         x_msg_count,
1777         x_msg_data,
1778         '_PVT'
1779       );
1780     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1781       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1782       (
1783         l_api_name,
1784         G_PKG_NAME,
1785         'OKL_API.G_RET_STS_UNEXP_ERROR',
1786         x_msg_count,
1787         x_msg_data,
1788         '_PVT'
1789       );
1790     WHEN OTHERS THEN
1791       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1792       (
1793         l_api_name,
1794         G_PKG_NAME,
1795         'OTHERS',
1796         x_msg_count,
1797         x_msg_data,
1798         '_PVT'
1799       );
1800   END insert_row;
1801   ----------------------------------------
1802   -- PL/SQL TBL insert_row for:CHDV_TBL --
1803   ----------------------------------------
1804   PROCEDURE insert_row(
1805     p_api_version                  IN NUMBER,
1806     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1807     x_return_status                OUT NOCOPY VARCHAR2,
1808     x_msg_count                    OUT NOCOPY NUMBER,
1809     x_msg_data                     OUT NOCOPY VARCHAR2,
1810     p_chdv_tbl                     IN chdv_tbl_type,
1811     x_chdv_tbl                     OUT NOCOPY chdv_tbl_type,
1812     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1813 
1814     l_api_version                  CONSTANT NUMBER := 1;
1815     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
1816     i                              NUMBER := 0;
1817   BEGIN
1818     OKL_API.init_msg_list(p_init_msg_list);
1819     -- Make sure PL/SQL table has records in it before passing
1820     IF (p_chdv_tbl.COUNT > 0) THEN
1821       i := p_chdv_tbl.FIRST;
1822       LOOP
1823         DECLARE
1824           l_error_rec         OKL_API.ERROR_REC_TYPE;
1825         BEGIN
1826           l_error_rec.api_name := l_api_name;
1827           l_error_rec.api_package := G_PKG_NAME;
1828           l_error_rec.idx := i;
1829           insert_row (
1830             p_api_version                  => p_api_version,
1831             p_init_msg_list                => OKL_API.G_FALSE,
1832             x_return_status                => l_error_rec.error_type,
1833             x_msg_count                    => l_error_rec.msg_count,
1834             x_msg_data                     => l_error_rec.msg_data,
1835             p_chdv_rec                     => p_chdv_tbl(i),
1836             x_chdv_rec                     => x_chdv_tbl(i));
1837           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1838             l_error_rec.sqlcode := SQLCODE;
1839             load_error_tbl(l_error_rec, px_error_tbl);
1840           ELSE
1841             x_msg_count := l_error_rec.msg_count;
1842             x_msg_data := l_error_rec.msg_data;
1843           END IF;
1844         EXCEPTION
1845           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1846             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1847             l_error_rec.sqlcode := SQLCODE;
1848             load_error_tbl(l_error_rec, px_error_tbl);
1849           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1850             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1851             l_error_rec.sqlcode := SQLCODE;
1852             load_error_tbl(l_error_rec, px_error_tbl);
1853           WHEN OTHERS THEN
1854             l_error_rec.error_type := 'OTHERS';
1855             l_error_rec.sqlcode := SQLCODE;
1856             load_error_tbl(l_error_rec, px_error_tbl);
1857         END;
1858         EXIT WHEN (i = p_chdv_tbl.LAST);
1859         i := p_chdv_tbl.NEXT(i);
1860       END LOOP;
1861     END IF;
1862     -- Loop through the error_tbl to find the error with the highest severity
1863     -- and return it.
1864     x_return_status := find_highest_exception(px_error_tbl);
1865     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1866   EXCEPTION
1867     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1868       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1869       (
1870         l_api_name,
1871         G_PKG_NAME,
1872         'OKL_API.G_RET_STS_ERROR',
1873         x_msg_count,
1874         x_msg_data,
1875         '_PVT'
1876       );
1877     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1878       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1879       (
1880         l_api_name,
1881         G_PKG_NAME,
1882         'OKL_API.G_RET_STS_UNEXP_ERROR',
1883         x_msg_count,
1884         x_msg_data,
1885         '_PVT'
1886       );
1887     WHEN OTHERS THEN
1888       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1889       (
1890         l_api_name,
1891         G_PKG_NAME,
1892         'OTHERS',
1893         x_msg_count,
1894         x_msg_data,
1895         '_PVT'
1896       );
1897   END insert_row;
1898 
1899   ----------------------------------------
1900   -- PL/SQL TBL insert_row for:CHDV_TBL --
1901   ----------------------------------------
1902   PROCEDURE insert_row(
1903     p_api_version                  IN NUMBER,
1904     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1905     x_return_status                OUT NOCOPY VARCHAR2,
1906     x_msg_count                    OUT NOCOPY NUMBER,
1907     x_msg_data                     OUT NOCOPY VARCHAR2,
1908     p_chdv_tbl                     IN chdv_tbl_type,
1909     x_chdv_tbl                     OUT NOCOPY chdv_tbl_type) IS
1910 
1911     l_api_version                  CONSTANT NUMBER := 1;
1912     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1913     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1914     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1915   BEGIN
1916     OKL_API.init_msg_list(p_init_msg_list);
1917     -- Make sure PL/SQL table has records in it before passing
1918     IF (p_chdv_tbl.COUNT > 0) THEN
1919       insert_row (
1920         p_api_version                  => p_api_version,
1921         p_init_msg_list                => OKL_API.G_FALSE,
1922         x_return_status                => x_return_status,
1923         x_msg_count                    => x_msg_count,
1924         x_msg_data                     => x_msg_data,
1925         p_chdv_tbl                     => p_chdv_tbl,
1926         x_chdv_tbl                     => x_chdv_tbl,
1927         px_error_tbl                   => l_error_tbl);
1928     END IF;
1929     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1930   EXCEPTION
1931     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1932       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1933       (
1934         l_api_name,
1935         G_PKG_NAME,
1936         'OKL_API.G_RET_STS_ERROR',
1937         x_msg_count,
1938         x_msg_data,
1939         '_PVT'
1940       );
1941     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1942       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1943       (
1944         l_api_name,
1945         G_PKG_NAME,
1946         'OKL_API.G_RET_STS_UNEXP_ERROR',
1947         x_msg_count,
1948         x_msg_data,
1949         '_PVT'
1950       );
1951     WHEN OTHERS THEN
1952       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1953       (
1954         l_api_name,
1955         G_PKG_NAME,
1956         'OTHERS',
1957         x_msg_count,
1958         x_msg_data,
1959         '_PVT'
1960       );
1961   END insert_row;
1962 
1963   ---------------------------------------------------------------------------
1964   -- PROCEDURE lock_row
1965   ---------------------------------------------------------------------------
1966   --------------------------------------------
1967   -- lock_row for:OKL_CURE_REFUND_HEADERS_B --
1968   --------------------------------------------
1969   PROCEDURE lock_row(
1970     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1971     x_return_status                OUT NOCOPY VARCHAR2,
1972     x_msg_count                    OUT NOCOPY NUMBER,
1973     x_msg_data                     OUT NOCOPY VARCHAR2,
1974     p_chd_rec                      IN chd_rec_type) IS
1975 
1976     E_Resource_Busy                EXCEPTION;
1977     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1978     CURSOR lock_csr (p_chd_rec IN chd_rec_type) IS
1979     SELECT OBJECT_VERSION_NUMBER
1980       FROM OKL_CURE_REFUND_HEADERS_B
1981      WHERE CURE_REFUND_HEADER_ID = p_chd_rec.cure_refund_header_id
1982        AND OBJECT_VERSION_NUMBER = p_chd_rec.object_version_number
1983     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1984 
1985     CURSOR lchk_csr (p_chd_rec IN chd_rec_type) IS
1986     SELECT OBJECT_VERSION_NUMBER
1987       FROM OKL_CURE_REFUND_HEADERS_B
1988      WHERE CURE_REFUND_HEADER_ID = p_chd_rec.cure_refund_header_id;
1989     l_api_version                  CONSTANT NUMBER := 1;
1990     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1991     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1992     l_object_version_number        OKL_CURE_REFUND_HEADERS_B.OBJECT_VERSION_NUMBER%TYPE;
1993     lc_object_version_number       OKL_CURE_REFUND_HEADERS_B.OBJECT_VERSION_NUMBER%TYPE;
1994     l_row_notfound                 BOOLEAN := FALSE;
1995     lc_row_notfound                BOOLEAN := FALSE;
1996   BEGIN
1997     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1998                                               p_init_msg_list,
1999                                               '_PVT',
2000                                               x_return_status);
2001     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2002       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2003     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2004       RAISE OKL_API.G_EXCEPTION_ERROR;
2005     END IF;
2006     BEGIN
2007       OPEN lock_csr(p_chd_rec);
2008       FETCH lock_csr INTO l_object_version_number;
2009       l_row_notfound := lock_csr%NOTFOUND;
2010       CLOSE lock_csr;
2011     EXCEPTION
2012       WHEN E_Resource_Busy THEN
2013         IF (lock_csr%ISOPEN) THEN
2014           CLOSE lock_csr;
2015         END IF;
2016         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2017         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2018     END;
2019 
2020     IF ( l_row_notfound ) THEN
2021       OPEN lchk_csr(p_chd_rec);
2022       FETCH lchk_csr INTO lc_object_version_number;
2023       lc_row_notfound := lchk_csr%NOTFOUND;
2024       CLOSE lchk_csr;
2025     END IF;
2026     IF (lc_row_notfound) THEN
2027       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2028       RAISE OKL_API.G_EXCEPTION_ERROR;
2029     ELSIF lc_object_version_number > p_chd_rec.object_version_number THEN
2030       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2031       RAISE OKL_API.G_EXCEPTION_ERROR;
2032     ELSIF lc_object_version_number <> p_chd_rec.object_version_number THEN
2033       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2034       RAISE OKL_API.G_EXCEPTION_ERROR;
2035     ELSIF lc_object_version_number = -1 THEN
2036       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2037       RAISE OKL_API.G_EXCEPTION_ERROR;
2038     END IF;
2039     x_return_status := l_return_status;
2040     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2041   EXCEPTION
2042     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2043       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2044       (
2045         l_api_name,
2046         G_PKG_NAME,
2047         'OKL_API.G_RET_STS_ERROR',
2048         x_msg_count,
2049         x_msg_data,
2050         '_PVT'
2051       );
2052     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2053       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2054       (
2055         l_api_name,
2056         G_PKG_NAME,
2057         'OKL_API.G_RET_STS_UNEXP_ERROR',
2058         x_msg_count,
2059         x_msg_data,
2060         '_PVT'
2061       );
2062     WHEN OTHERS THEN
2063       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2064       (
2065         l_api_name,
2066         G_PKG_NAME,
2067         'OTHERS',
2068         x_msg_count,
2069         x_msg_data,
2070         '_PVT'
2071       );
2072   END lock_row;
2073   ---------------------------------------------
2074   -- lock_row for:OKL_CURE_REFUND_HEADERS_TL --
2075   ---------------------------------------------
2076   PROCEDURE lock_row(
2077     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2078     x_return_status                OUT NOCOPY VARCHAR2,
2079     x_msg_count                    OUT NOCOPY NUMBER,
2080     x_msg_data                     OUT NOCOPY VARCHAR2,
2081     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType) IS
2082 
2083     E_Resource_Busy                EXCEPTION;
2084     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2085     CURSOR lock_csr (p_okl_cure_refund_h182 IN OklCureRefundHeadersTlRecType) IS
2086     SELECT *
2087       FROM OKL_CURE_REFUND_HEADERS_TL
2088      WHERE CURE_REFUND_HEADER_ID = p_okl_cure_refund_h182.cure_refund_header_id
2089     FOR UPDATE NOWAIT;
2090 
2091     l_api_version                  CONSTANT NUMBER := 1;
2092     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
2093     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2094     l_lock_var                     lock_csr%ROWTYPE;
2095     l_row_notfound                 BOOLEAN := FALSE;
2096     lc_row_notfound                BOOLEAN := FALSE;
2097   BEGIN
2098     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2099                                               p_init_msg_list,
2100                                               '_PVT',
2101                                               x_return_status);
2102     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2103       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2104     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2105       RAISE OKL_API.G_EXCEPTION_ERROR;
2106     END IF;
2107     BEGIN
2108       OPEN lock_csr(p_okl_cure_refund_h182);
2109       FETCH lock_csr INTO l_lock_var;
2110       l_row_notfound := lock_csr%NOTFOUND;
2111       CLOSE lock_csr;
2112     EXCEPTION
2113       WHEN E_Resource_Busy THEN
2114         IF (lock_csr%ISOPEN) THEN
2115           CLOSE lock_csr;
2116         END IF;
2117         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2118         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2119     END;
2120 
2121     IF ( l_row_notfound ) THEN
2122       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2123       RAISE OKL_API.G_EXCEPTION_ERROR;
2124     END IF;
2125     x_return_status := l_return_status;
2126     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2127   EXCEPTION
2128     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2129       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2130       (
2131         l_api_name,
2132         G_PKG_NAME,
2133         'OKL_API.G_RET_STS_ERROR',
2134         x_msg_count,
2135         x_msg_data,
2136         '_PVT'
2137       );
2138     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2139       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2140       (
2141         l_api_name,
2142         G_PKG_NAME,
2143         'OKL_API.G_RET_STS_UNEXP_ERROR',
2144         x_msg_count,
2145         x_msg_data,
2146         '_PVT'
2147       );
2148     WHEN OTHERS THEN
2149       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2150       (
2151         l_api_name,
2152         G_PKG_NAME,
2153         'OTHERS',
2154         x_msg_count,
2155         x_msg_data,
2156         '_PVT'
2157       );
2158   END lock_row;
2159   ---------------------------------------------
2160   -- lock_row for: OKL_CURE_REFUND_HEADERS_V --
2161   ---------------------------------------------
2162   PROCEDURE lock_row(
2163     p_api_version                  IN NUMBER,
2164     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2165     x_return_status                OUT NOCOPY VARCHAR2,
2166     x_msg_count                    OUT NOCOPY NUMBER,
2167     x_msg_data                     OUT NOCOPY VARCHAR2,
2168     p_chdv_rec                     IN chdv_rec_type) IS
2169 
2170     l_api_version                  CONSTANT NUMBER := 1;
2171     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2172     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2173     l_chd_rec                      chd_rec_type;
2174     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
2175   BEGIN
2176     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2177                                               G_PKG_NAME,
2178                                               p_init_msg_list,
2179                                               l_api_version,
2180                                               p_api_version,
2181                                               '_PVT',
2182                                               x_return_status);
2183     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2184       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2185     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2186       RAISE OKL_API.G_EXCEPTION_ERROR;
2187     END IF;
2188     -----------------------------------------
2189     -- Move VIEW record to "Child" records --
2190     -----------------------------------------
2191     migrate(p_chdv_rec, l_chd_rec);
2192     migrate(p_chdv_rec, l_okl_cure_refund_h183);
2193     ---------------------------------------------
2194     -- Call the LOCK_ROW for each child record --
2195     ---------------------------------------------
2196     lock_row(
2197       p_init_msg_list,
2198       l_return_status,
2199       x_msg_count,
2200       x_msg_data,
2201       l_chd_rec
2202     );
2203     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2204       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2205     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2206       RAISE OKL_API.G_EXCEPTION_ERROR;
2207     END IF;
2208     lock_row(
2209       p_init_msg_list,
2210       l_return_status,
2211       x_msg_count,
2212       x_msg_data,
2213       l_okl_cure_refund_h183
2214     );
2215     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2216       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2217     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2218       RAISE OKL_API.G_EXCEPTION_ERROR;
2219     END IF;
2220     x_return_status := l_return_status;
2221     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2222   EXCEPTION
2223     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2224       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2225       (
2226         l_api_name,
2227         G_PKG_NAME,
2228         'OKL_API.G_RET_STS_ERROR',
2229         x_msg_count,
2230         x_msg_data,
2231         '_PVT'
2232       );
2233     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2234       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2235       (
2236         l_api_name,
2237         G_PKG_NAME,
2238         'OKL_API.G_RET_STS_UNEXP_ERROR',
2239         x_msg_count,
2240         x_msg_data,
2241         '_PVT'
2242       );
2243     WHEN OTHERS THEN
2244       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2245       (
2246         l_api_name,
2247         G_PKG_NAME,
2248         'OTHERS',
2249         x_msg_count,
2250         x_msg_data,
2251         '_PVT'
2252       );
2253   END lock_row;
2254   --------------------------------------
2255   -- PL/SQL TBL lock_row for:CHDV_TBL --
2256   --------------------------------------
2257   PROCEDURE lock_row(
2258     p_api_version                  IN NUMBER,
2259     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2260     x_return_status                OUT NOCOPY VARCHAR2,
2261     x_msg_count                    OUT NOCOPY NUMBER,
2262     x_msg_data                     OUT NOCOPY VARCHAR2,
2263     p_chdv_tbl                     IN chdv_tbl_type,
2264     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2265 
2266     l_api_version                  CONSTANT NUMBER := 1;
2267     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
2268     i                              NUMBER := 0;
2269   BEGIN
2270     OKL_API.init_msg_list(p_init_msg_list);
2271     -- Make sure PL/SQL table has recrods in it before passing
2272     IF (p_chdv_tbl.COUNT > 0) THEN
2273       i := p_chdv_tbl.FIRST;
2274       LOOP
2275         DECLARE
2276           l_error_rec         OKL_API.ERROR_REC_TYPE;
2277         BEGIN
2278           l_error_rec.api_name := l_api_name;
2279           l_error_rec.api_package := G_PKG_NAME;
2280           l_error_rec.idx := i;
2281           lock_row(
2282             p_api_version                  => p_api_version,
2283             p_init_msg_list                => OKL_API.G_FALSE,
2284             x_return_status                => l_error_rec.error_type,
2285             x_msg_count                    => l_error_rec.msg_count,
2286             x_msg_data                     => l_error_rec.msg_data,
2287             p_chdv_rec                     => p_chdv_tbl(i));
2288           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2289             l_error_rec.sqlcode := SQLCODE;
2290             load_error_tbl(l_error_rec, px_error_tbl);
2291           ELSE
2292             x_msg_count := l_error_rec.msg_count;
2293             x_msg_data := l_error_rec.msg_data;
2294           END IF;
2295         EXCEPTION
2296           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2297             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2298             l_error_rec.sqlcode := SQLCODE;
2299             load_error_tbl(l_error_rec, px_error_tbl);
2300           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2301             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2302             l_error_rec.sqlcode := SQLCODE;
2303             load_error_tbl(l_error_rec, px_error_tbl);
2304           WHEN OTHERS THEN
2305             l_error_rec.error_type := 'OTHERS';
2306             l_error_rec.sqlcode := SQLCODE;
2307             load_error_tbl(l_error_rec, px_error_tbl);
2308         END;
2309         EXIT WHEN (i = p_chdv_tbl.LAST);
2310         i := p_chdv_tbl.NEXT(i);
2311       END LOOP;
2312     END IF;
2313     -- Loop through the error_tbl to find the error with the highest severity
2314     -- and return it.
2315     x_return_status := find_highest_exception(px_error_tbl);
2316     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2317   EXCEPTION
2318     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2319       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2320       (
2321         l_api_name,
2322         G_PKG_NAME,
2323         'OKL_API.G_RET_STS_ERROR',
2324         x_msg_count,
2325         x_msg_data,
2326         '_PVT'
2327       );
2328     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2329       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2330       (
2331         l_api_name,
2332         G_PKG_NAME,
2333         'OKL_API.G_RET_STS_UNEXP_ERROR',
2334         x_msg_count,
2335         x_msg_data,
2336         '_PVT'
2337       );
2338     WHEN OTHERS THEN
2339       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2340       (
2341         l_api_name,
2342         G_PKG_NAME,
2343         'OTHERS',
2344         x_msg_count,
2345         x_msg_data,
2346         '_PVT'
2347       );
2348   END lock_row;
2349   --------------------------------------
2350   -- PL/SQL TBL lock_row for:CHDV_TBL --
2351   --------------------------------------
2352   PROCEDURE lock_row(
2353     p_api_version                  IN NUMBER,
2354     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2355     x_return_status                OUT NOCOPY VARCHAR2,
2356     x_msg_count                    OUT NOCOPY NUMBER,
2357     x_msg_data                     OUT NOCOPY VARCHAR2,
2358     p_chdv_tbl                     IN chdv_tbl_type) IS
2359 
2360     l_api_version                  CONSTANT NUMBER := 1;
2361     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
2362     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2363     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2364   BEGIN
2365     OKL_API.init_msg_list(p_init_msg_list);
2366     -- Make sure PL/SQL table has recrods in it before passing
2367     IF (p_chdv_tbl.COUNT > 0) THEN
2368       lock_row(
2369         p_api_version                  => p_api_version,
2370         p_init_msg_list                => OKL_API.G_FALSE,
2371         x_return_status                => x_return_status,
2372         x_msg_count                    => x_msg_count,
2373         x_msg_data                     => x_msg_data,
2374         p_chdv_tbl                     => p_chdv_tbl,
2375         px_error_tbl                   => l_error_tbl);
2376     END IF;
2377     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2378   EXCEPTION
2379     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2380       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2381       (
2382         l_api_name,
2383         G_PKG_NAME,
2384         'OKL_API.G_RET_STS_ERROR',
2385         x_msg_count,
2386         x_msg_data,
2387         '_PVT'
2388       );
2389     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2390       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2391       (
2392         l_api_name,
2393         G_PKG_NAME,
2394         'OKL_API.G_RET_STS_UNEXP_ERROR',
2395         x_msg_count,
2396         x_msg_data,
2397         '_PVT'
2398       );
2399     WHEN OTHERS THEN
2400       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2401       (
2402         l_api_name,
2403         G_PKG_NAME,
2404         'OTHERS',
2405         x_msg_count,
2406         x_msg_data,
2407         '_PVT'
2408       );
2409   END lock_row;
2410   ---------------------------------------------------------------------------
2411   -- PROCEDURE update_row
2412   ---------------------------------------------------------------------------
2413   ----------------------------------------------
2414   -- update_row for:OKL_CURE_REFUND_HEADERS_B --
2415   ----------------------------------------------
2416   PROCEDURE update_row(
2417     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2418     x_return_status                OUT NOCOPY VARCHAR2,
2419     x_msg_count                    OUT NOCOPY NUMBER,
2420     x_msg_data                     OUT NOCOPY VARCHAR2,
2421     p_chd_rec                      IN chd_rec_type,
2422     x_chd_rec                      OUT NOCOPY chd_rec_type) IS
2423 
2424     l_api_version                  CONSTANT NUMBER := 1;
2425     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2426     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2427     l_chd_rec                      chd_rec_type := p_chd_rec;
2428     l_def_chd_rec                  chd_rec_type;
2429     l_row_notfound                 BOOLEAN := TRUE;
2430     ----------------------------------
2431     -- FUNCTION populate_new_record --
2432     ----------------------------------
2433     FUNCTION populate_new_record (
2434       p_chd_rec IN chd_rec_type,
2435       x_chd_rec OUT NOCOPY chd_rec_type
2436     ) RETURN VARCHAR2 IS
2437       l_chd_rec                      chd_rec_type;
2438       l_row_notfound                 BOOLEAN := TRUE;
2439       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2440     BEGIN
2441       x_chd_rec := p_chd_rec;
2442       -- Get current database values
2443       l_chd_rec := get_rec(p_chd_rec, l_return_status);
2444       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2445         IF (x_chd_rec.cure_refund_header_id = OKL_API.G_MISS_NUM)
2446         THEN
2447           x_chd_rec.cure_refund_header_id := l_chd_rec.cure_refund_header_id;
2448         END IF;
2449         IF (x_chd_rec.refund_header_number = OKL_API.G_MISS_CHAR)
2450         THEN
2451           x_chd_rec.refund_header_number := l_chd_rec.refund_header_number;
2452         END IF;
2453         IF (x_chd_rec.refund_type = OKL_API.G_MISS_CHAR)
2454         THEN
2455           x_chd_rec.refund_type := l_chd_rec.refund_type;
2456         END IF;
2457         IF (x_chd_rec.refund_due_date = OKL_API.G_MISS_DATE)
2458         THEN
2459           x_chd_rec.refund_due_date := l_chd_rec.refund_due_date;
2460         END IF;
2461         IF (x_chd_rec.currency_code = OKL_API.G_MISS_CHAR)
2462         THEN
2463           x_chd_rec.currency_code := l_chd_rec.currency_code;
2464         END IF;
2465         IF (x_chd_rec.total_refund_due = OKL_API.G_MISS_NUM)
2466         THEN
2467           x_chd_rec.total_refund_due := l_chd_rec.total_refund_due;
2468         END IF;
2469         IF (x_chd_rec.disbursement_amount = OKL_API.G_MISS_NUM)
2470         THEN
2471           x_chd_rec.disbursement_amount := l_chd_rec.disbursement_amount;
2472         END IF;
2473         IF (x_chd_rec.RECEIVED_AMOUNT = OKL_API.G_MISS_NUM)
2474         THEN
2475           x_chd_rec.RECEIVED_AMOUNT := l_chd_rec.RECEIVED_AMOUNT;
2476         END IF;
2477         IF (x_chd_rec.OFFSET_AMOUNT = OKL_API.G_MISS_NUM)
2478         THEN
2479           x_chd_rec.OFFSET_AMOUNT := l_chd_rec.OFFSET_AMOUNT;
2480         END IF;
2481         IF (x_chd_rec.NEGOTIATED_AMOUNT = OKL_API.G_MISS_NUM)
2482         THEN
2483           x_chd_rec.NEGOTIATED_AMOUNT := l_chd_rec.NEGOTIATED_AMOUNT;
2484         END IF;
2485         IF (x_chd_rec.vendor_site_id = OKL_API.G_MISS_NUM)
2486         THEN
2487           x_chd_rec.vendor_site_id := l_chd_rec.vendor_site_id;
2488         END IF;
2489         IF (x_chd_rec.refund_status = OKL_API.G_MISS_CHAR)
2490         THEN
2491           x_chd_rec.refund_status := l_chd_rec.refund_status;
2492         END IF;
2493         IF (x_chd_rec.payment_method = OKL_API.G_MISS_CHAR)
2494         THEN
2495           x_chd_rec.payment_method := l_chd_rec.payment_method;
2496         END IF;
2497         IF (x_chd_rec.payment_term_id = OKL_API.G_MISS_NUM)
2498         THEN
2499           x_chd_rec.payment_term_id := l_chd_rec.payment_term_id;
2500         END IF;
2501         IF (x_chd_rec.object_version_number = OKL_API.G_MISS_NUM)
2502         THEN
2503           x_chd_rec.object_version_number := l_chd_rec.object_version_number;
2504         END IF;
2505         IF (x_chd_rec.vendor_cure_due = OKL_API.G_MISS_NUM)
2506         THEN
2507           x_chd_rec.vendor_cure_due := l_chd_rec.vendor_cure_due;
2508         END IF;
2509         IF (x_chd_rec.vendor_site_cure_due = OKL_API.G_MISS_NUM)
2510         THEN
2511           x_chd_rec.vendor_site_cure_due := l_chd_rec.vendor_site_cure_due;
2512         END IF;
2513         IF (x_chd_rec.chr_id = OKL_API.G_MISS_NUM)
2514         THEN
2515           x_chd_rec.chr_id := l_chd_rec.chr_id;
2516         END IF;
2517         IF (x_chd_rec.program_application_id = OKL_API.G_MISS_NUM)
2518         THEN
2519           x_chd_rec.program_application_id := l_chd_rec.program_application_id;
2520         END IF;
2521         IF (x_chd_rec.request_id = OKL_API.G_MISS_NUM)
2522         THEN
2523           x_chd_rec.request_id := l_chd_rec.request_id;
2524         END IF;
2525         IF (x_chd_rec.program_id = OKL_API.G_MISS_NUM)
2526         THEN
2527           x_chd_rec.program_id := l_chd_rec.program_id;
2528         END IF;
2529         IF (x_chd_rec.program_update_date = OKL_API.G_MISS_DATE)
2530         THEN
2531           x_chd_rec.program_update_date := l_chd_rec.program_update_date;
2532         END IF;
2533         IF (x_chd_rec.attribute_category = OKL_API.G_MISS_CHAR)
2534         THEN
2535           x_chd_rec.attribute_category := l_chd_rec.attribute_category;
2536         END IF;
2537         IF (x_chd_rec.attribute1 = OKL_API.G_MISS_CHAR)
2538         THEN
2539           x_chd_rec.attribute1 := l_chd_rec.attribute1;
2540         END IF;
2541         IF (x_chd_rec.attribute2 = OKL_API.G_MISS_CHAR)
2542         THEN
2543           x_chd_rec.attribute2 := l_chd_rec.attribute2;
2544         END IF;
2545         IF (x_chd_rec.attribute3 = OKL_API.G_MISS_CHAR)
2546         THEN
2547           x_chd_rec.attribute3 := l_chd_rec.attribute3;
2548         END IF;
2549         IF (x_chd_rec.attribute4 = OKL_API.G_MISS_CHAR)
2550         THEN
2551           x_chd_rec.attribute4 := l_chd_rec.attribute4;
2552         END IF;
2553         IF (x_chd_rec.attribute5 = OKL_API.G_MISS_CHAR)
2554         THEN
2555           x_chd_rec.attribute5 := l_chd_rec.attribute5;
2556         END IF;
2557         IF (x_chd_rec.attribute6 = OKL_API.G_MISS_CHAR)
2558         THEN
2559           x_chd_rec.attribute6 := l_chd_rec.attribute6;
2560         END IF;
2561         IF (x_chd_rec.attribute7 = OKL_API.G_MISS_CHAR)
2562         THEN
2563           x_chd_rec.attribute7 := l_chd_rec.attribute7;
2564         END IF;
2565         IF (x_chd_rec.attribute8 = OKL_API.G_MISS_CHAR)
2566         THEN
2567           x_chd_rec.attribute8 := l_chd_rec.attribute8;
2568         END IF;
2569         IF (x_chd_rec.attribute9 = OKL_API.G_MISS_CHAR)
2570         THEN
2571           x_chd_rec.attribute9 := l_chd_rec.attribute9;
2572         END IF;
2573         IF (x_chd_rec.attribute10 = OKL_API.G_MISS_CHAR)
2574         THEN
2575           x_chd_rec.attribute10 := l_chd_rec.attribute10;
2576         END IF;
2577         IF (x_chd_rec.attribute11 = OKL_API.G_MISS_CHAR)
2578         THEN
2579           x_chd_rec.attribute11 := l_chd_rec.attribute11;
2580         END IF;
2581         IF (x_chd_rec.attribute12 = OKL_API.G_MISS_CHAR)
2582         THEN
2583           x_chd_rec.attribute12 := l_chd_rec.attribute12;
2584         END IF;
2585         IF (x_chd_rec.attribute13 = OKL_API.G_MISS_CHAR)
2586         THEN
2587           x_chd_rec.attribute13 := l_chd_rec.attribute13;
2588         END IF;
2589         IF (x_chd_rec.attribute14 = OKL_API.G_MISS_CHAR)
2590         THEN
2591           x_chd_rec.attribute14 := l_chd_rec.attribute14;
2592         END IF;
2593         IF (x_chd_rec.attribute15 = OKL_API.G_MISS_CHAR)
2594         THEN
2595           x_chd_rec.attribute15 := l_chd_rec.attribute15;
2596         END IF;
2597         IF (x_chd_rec.created_by = OKL_API.G_MISS_NUM)
2598         THEN
2599           x_chd_rec.created_by := l_chd_rec.created_by;
2600         END IF;
2601         IF (x_chd_rec.creation_date = OKL_API.G_MISS_DATE)
2602         THEN
2603           x_chd_rec.creation_date := l_chd_rec.creation_date;
2604         END IF;
2605         IF (x_chd_rec.last_updated_by = OKL_API.G_MISS_NUM)
2606         THEN
2607           x_chd_rec.last_updated_by := l_chd_rec.last_updated_by;
2608         END IF;
2609         IF (x_chd_rec.last_update_date = OKL_API.G_MISS_DATE)
2610         THEN
2611           x_chd_rec.last_update_date := l_chd_rec.last_update_date;
2612         END IF;
2613         IF (x_chd_rec.last_update_login = OKL_API.G_MISS_NUM)
2614         THEN
2615           x_chd_rec.last_update_login := l_chd_rec.last_update_login;
2616         END IF;
2617       END IF;
2618       RETURN(l_return_status);
2619     END populate_new_record;
2620     --------------------------------------------------
2621     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_B --
2622     --------------------------------------------------
2623     FUNCTION Set_Attributes (
2624       p_chd_rec IN chd_rec_type,
2625       x_chd_rec OUT NOCOPY chd_rec_type
2626     ) RETURN VARCHAR2 IS
2627       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2628     BEGIN
2629       x_chd_rec := p_chd_rec;
2630       x_chd_rec.OBJECT_VERSION_NUMBER := p_chd_rec.OBJECT_VERSION_NUMBER + 1;
2631       RETURN(l_return_status);
2632     END Set_Attributes;
2633   BEGIN
2634     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2635                                               p_init_msg_list,
2636                                               '_PVT',
2637                                               x_return_status);
2638     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2639       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2640     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2641       RAISE OKL_API.G_EXCEPTION_ERROR;
2642     END IF;
2643     --- Setting item attributes
2644     l_return_status := Set_Attributes(
2645       p_chd_rec,                         -- IN
2646       l_chd_rec);                        -- OUT
2647     --- If any errors happen abort API
2648     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2649       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2650     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2651       RAISE OKL_API.G_EXCEPTION_ERROR;
2652     END IF;
2653     l_return_status := populate_new_record(l_chd_rec, l_def_chd_rec);
2654     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2655       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2656     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2657       RAISE OKL_API.G_EXCEPTION_ERROR;
2658     END IF;
2659     UPDATE OKL_CURE_REFUND_HEADERS_B
2660     SET REFUND_HEADER_NUMBER = l_def_chd_rec.refund_header_number,
2661         REFUND_TYPE = l_def_chd_rec.refund_type,
2662         REFUND_DUE_DATE = l_def_chd_rec.refund_due_date,
2663         CURRENCY_CODE = l_def_chd_rec.currency_code,
2664         TOTAL_REFUND_DUE = l_def_chd_rec.total_refund_due,
2665         DISBURSEMENT_AMOUNT = l_def_chd_rec.disbursement_amount,
2666         RECEIVED_AMOUNT = l_def_chd_rec.RECEIVED_AMOUNT,
2667         OFFSET_AMOUNT = l_def_chd_rec.OFFSET_AMOUNT,
2668         NEGOTIATED_AMOUNT = l_def_chd_rec.NEGOTIATED_AMOUNT,
2669         VENDOR_SITE_ID = l_def_chd_rec.vendor_site_id,
2670         REFUND_STATUS = l_def_chd_rec.refund_status,
2671         PAYMENT_METHOD = l_def_chd_rec.payment_method,
2672         PAYMENT_TERM_ID = l_def_chd_rec.payment_term_id,
2673         OBJECT_VERSION_NUMBER = l_def_chd_rec.object_version_number,
2674         VENDOR_CURE_DUE = l_def_chd_rec.vendor_cure_due,
2675         VENDOR_SITE_CURE_DUE = l_def_chd_rec.vendor_site_cure_due,
2676         CHR_ID = l_def_chd_rec.chr_id,
2677         PROGRAM_APPLICATION_ID = l_def_chd_rec.program_application_id,
2678         REQUEST_ID = l_def_chd_rec.request_id,
2679         PROGRAM_ID = l_def_chd_rec.program_id,
2680         PROGRAM_UPDATE_DATE = l_def_chd_rec.program_update_date,
2681         ATTRIBUTE_CATEGORY = l_def_chd_rec.attribute_category,
2682         ATTRIBUTE1 = l_def_chd_rec.attribute1,
2683         ATTRIBUTE2 = l_def_chd_rec.attribute2,
2684         ATTRIBUTE3 = l_def_chd_rec.attribute3,
2685         ATTRIBUTE4 = l_def_chd_rec.attribute4,
2686         ATTRIBUTE5 = l_def_chd_rec.attribute5,
2687         ATTRIBUTE6 = l_def_chd_rec.attribute6,
2688         ATTRIBUTE7 = l_def_chd_rec.attribute7,
2689         ATTRIBUTE8 = l_def_chd_rec.attribute8,
2690         ATTRIBUTE9 = l_def_chd_rec.attribute9,
2691         ATTRIBUTE10 = l_def_chd_rec.attribute10,
2692         ATTRIBUTE11 = l_def_chd_rec.attribute11,
2693         ATTRIBUTE12 = l_def_chd_rec.attribute12,
2694         ATTRIBUTE13 = l_def_chd_rec.attribute13,
2695         ATTRIBUTE14 = l_def_chd_rec.attribute14,
2696         ATTRIBUTE15 = l_def_chd_rec.attribute15,
2697         CREATED_BY = l_def_chd_rec.created_by,
2698         CREATION_DATE = l_def_chd_rec.creation_date,
2699         LAST_UPDATED_BY = l_def_chd_rec.last_updated_by,
2700         LAST_UPDATE_DATE = l_def_chd_rec.last_update_date,
2701         LAST_UPDATE_LOGIN = l_def_chd_rec.last_update_login
2702     WHERE CURE_REFUND_HEADER_ID = l_def_chd_rec.cure_refund_header_id;
2703 
2704     x_chd_rec := l_chd_rec;
2705     x_return_status := l_return_status;
2706     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2707   EXCEPTION
2708     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2709       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2710       (
2711         l_api_name,
2712         G_PKG_NAME,
2713         'OKL_API.G_RET_STS_ERROR',
2714         x_msg_count,
2715         x_msg_data,
2716         '_PVT'
2717       );
2718     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2719       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2720       (
2721         l_api_name,
2722         G_PKG_NAME,
2723         'OKL_API.G_RET_STS_UNEXP_ERROR',
2724         x_msg_count,
2725         x_msg_data,
2726         '_PVT'
2727       );
2728     WHEN OTHERS THEN
2729       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2730       (
2731         l_api_name,
2732         G_PKG_NAME,
2733         'OTHERS',
2734         x_msg_count,
2735         x_msg_data,
2736         '_PVT'
2737       );
2738   END update_row;
2739   -----------------------------------------------
2740   -- update_row for:OKL_CURE_REFUND_HEADERS_TL --
2741   -----------------------------------------------
2742   PROCEDURE update_row(
2743     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2744     x_return_status                OUT NOCOPY VARCHAR2,
2745     x_msg_count                    OUT NOCOPY NUMBER,
2746     x_msg_data                     OUT NOCOPY VARCHAR2,
2747     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType,
2748     XOklCureRefundHeadersTlRec     OUT NOCOPY OklCureRefundHeadersTlRecType) IS
2749 
2750     l_api_version                  CONSTANT NUMBER := 1;
2751     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
2752     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2753     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType := p_okl_cure_refund_h182;
2754     LDefOklCureRefundHeadersTlRec  OklCureRefundHeadersTlRecType;
2755     l_row_notfound                 BOOLEAN := TRUE;
2756     ----------------------------------
2757     -- FUNCTION populate_new_record --
2758     ----------------------------------
2759     FUNCTION populate_new_record (
2760       p_okl_cure_refund_h182 IN OklCureRefundHeadersTlRecType,
2761       XOklCureRefundHeadersTlRec OUT NOCOPY OklCureRefundHeadersTlRecType
2762     ) RETURN VARCHAR2 IS
2763       l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
2764       l_row_notfound                 BOOLEAN := TRUE;
2765       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2766     BEGIN
2767       XOklCureRefundHeadersTlRec := p_okl_cure_refund_h182;
2768       -- Get current database values
2769       l_okl_cure_refund_h183 := get_rec(p_okl_cure_refund_h182, l_return_status);
2770       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2771         IF (XOklCureRefundHeadersTlRec.cure_refund_header_id = OKL_API.G_MISS_NUM)
2772         THEN
2773           XOklCureRefundHeadersTlRec.cure_refund_header_id := l_okl_cure_refund_h183.cure_refund_header_id;
2774         END IF;
2775         IF (XOklCureRefundHeadersTlRec.language = OKL_API.G_MISS_CHAR)
2776         THEN
2777           XOklCureRefundHeadersTlRec.language := l_okl_cure_refund_h183.language;
2778         END IF;
2779         IF (XOklCureRefundHeadersTlRec.source_lang = OKL_API.G_MISS_CHAR)
2780         THEN
2781           XOklCureRefundHeadersTlRec.source_lang := l_okl_cure_refund_h183.source_lang;
2782         END IF;
2783         IF (XOklCureRefundHeadersTlRec.sfwt_flag = OKL_API.G_MISS_CHAR)
2784         THEN
2785           XOklCureRefundHeadersTlRec.sfwt_flag := l_okl_cure_refund_h183.sfwt_flag;
2786         END IF;
2787         IF (XOklCureRefundHeadersTlRec.description = OKL_API.G_MISS_CHAR)
2788         THEN
2789           XOklCureRefundHeadersTlRec.description := l_okl_cure_refund_h183.description;
2790         END IF;
2791         IF (XOklCureRefundHeadersTlRec.created_by = OKL_API.G_MISS_NUM)
2792         THEN
2793           XOklCureRefundHeadersTlRec.created_by := l_okl_cure_refund_h183.created_by;
2794         END IF;
2795         IF (XOklCureRefundHeadersTlRec.creation_date = OKL_API.G_MISS_DATE)
2796         THEN
2797           XOklCureRefundHeadersTlRec.creation_date := l_okl_cure_refund_h183.creation_date;
2798         END IF;
2799         IF (XOklCureRefundHeadersTlRec.last_updated_by = OKL_API.G_MISS_NUM)
2800         THEN
2801           XOklCureRefundHeadersTlRec.last_updated_by := l_okl_cure_refund_h183.last_updated_by;
2802         END IF;
2803         IF (XOklCureRefundHeadersTlRec.last_update_date = OKL_API.G_MISS_DATE)
2804         THEN
2805           XOklCureRefundHeadersTlRec.last_update_date := l_okl_cure_refund_h183.last_update_date;
2806         END IF;
2807         IF (XOklCureRefundHeadersTlRec.last_update_login = OKL_API.G_MISS_NUM)
2808         THEN
2809           XOklCureRefundHeadersTlRec.last_update_login := l_okl_cure_refund_h183.last_update_login;
2810         END IF;
2811       END IF;
2812       RETURN(l_return_status);
2813     END populate_new_record;
2814     ---------------------------------------------------
2815     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_TL --
2816     ---------------------------------------------------
2817     FUNCTION Set_Attributes (
2818       p_okl_cure_refund_h182 IN OklCureRefundHeadersTlRecType,
2819       XOklCureRefundHeadersTlRec OUT NOCOPY OklCureRefundHeadersTlRecType
2820     ) RETURN VARCHAR2 IS
2821       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2822     BEGIN
2823       XOklCureRefundHeadersTlRec := p_okl_cure_refund_h182;
2824       XOklCureRefundHeadersTlRec.LANGUAGE := USERENV('LANG');
2825       XOklCureRefundHeadersTlRec.LANGUAGE := USERENV('LANG');
2826       RETURN(l_return_status);
2827     END Set_Attributes;
2828   BEGIN
2829     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2830                                               p_init_msg_list,
2831                                               '_PVT',
2832                                               x_return_status);
2833     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2834       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2835     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2836       RAISE OKL_API.G_EXCEPTION_ERROR;
2837     END IF;
2838     --- Setting item attributes
2839     l_return_status := Set_Attributes(
2840       p_okl_cure_refund_h182,            -- IN
2841       l_okl_cure_refund_h183);           -- OUT
2842     --- If any errors happen abort API
2843     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2844       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2845     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2846       RAISE OKL_API.G_EXCEPTION_ERROR;
2847     END IF;
2848     l_return_status := populate_new_record(l_okl_cure_refund_h183, LDefOklCureRefundHeadersTlRec);
2849     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2850       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2851     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2852       RAISE OKL_API.G_EXCEPTION_ERROR;
2853     END IF;
2854     UPDATE OKL_CURE_REFUND_HEADERS_TL
2855     SET DESCRIPTION = LDefOklCureRefundHeadersTlRec.description,
2856         CREATED_BY = LDefOklCureRefundHeadersTlRec.created_by,
2857         CREATION_DATE = LDefOklCureRefundHeadersTlRec.creation_date,
2858         LAST_UPDATED_BY = LDefOklCureRefundHeadersTlRec.last_updated_by,
2859         LAST_UPDATE_DATE = LDefOklCureRefundHeadersTlRec.last_update_date,
2860         LAST_UPDATE_LOGIN = LDefOklCureRefundHeadersTlRec.last_update_login,
2861 -- introduced for bug 3631702
2862         SOURCE_LANG = LDefOklCureRefundHeadersTlRec.SOURCE_LANG
2863     WHERE CURE_REFUND_HEADER_ID = LDefOklCureRefundHeadersTlRec.cure_refund_header_id
2864       AND USERENV('LANG') IN (SOURCE_LANG, LANGUAGE);
2865 --      AND SOURCE_LANG = USERENV('LANG'); commented out for bug 3631702
2866 
2867     UPDATE OKL_CURE_REFUND_HEADERS_TL
2868     SET SFWT_FLAG = 'Y'
2869     WHERE CURE_REFUND_HEADER_ID = LDefOklCureRefundHeadersTlRec.cure_refund_header_id
2870       AND SOURCE_LANG <> USERENV('LANG');
2871 
2872     XOklCureRefundHeadersTlRec := l_okl_cure_refund_h183;
2873     x_return_status := l_return_status;
2874     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2875   EXCEPTION
2876     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2877       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2878       (
2879         l_api_name,
2880         G_PKG_NAME,
2881         'OKL_API.G_RET_STS_ERROR',
2882         x_msg_count,
2883         x_msg_data,
2884         '_PVT'
2885       );
2886     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2887       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2888       (
2889         l_api_name,
2890         G_PKG_NAME,
2891         'OKL_API.G_RET_STS_UNEXP_ERROR',
2892         x_msg_count,
2893         x_msg_data,
2894         '_PVT'
2895       );
2896     WHEN OTHERS THEN
2897       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2898       (
2899         l_api_name,
2900         G_PKG_NAME,
2901         'OTHERS',
2902         x_msg_count,
2903         x_msg_data,
2904         '_PVT'
2905       );
2906   END update_row;
2907   ----------------------------------------------
2908   -- update_row for:OKL_CURE_REFUND_HEADERS_V --
2909   ----------------------------------------------
2910   PROCEDURE update_row(
2911     p_api_version                  IN NUMBER,
2912     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2913     x_return_status                OUT NOCOPY VARCHAR2,
2914     x_msg_count                    OUT NOCOPY NUMBER,
2915     x_msg_data                     OUT NOCOPY VARCHAR2,
2916     p_chdv_rec                     IN chdv_rec_type,
2917     x_chdv_rec                     OUT NOCOPY chdv_rec_type) IS
2918 
2919     l_api_version                  CONSTANT NUMBER := 1;
2920     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2921     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2922     l_chdv_rec                     chdv_rec_type := p_chdv_rec;
2923     l_def_chdv_rec                 chdv_rec_type;
2924     l_db_chdv_rec                  chdv_rec_type;
2925     l_chd_rec                      chd_rec_type;
2926     lx_chd_rec                     chd_rec_type;
2927     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
2928     LxOklCureRefundHeadersTlRec    OklCureRefundHeadersTlRecType;
2929     -------------------------------
2930     -- FUNCTION fill_who_columns --
2931     -------------------------------
2932     FUNCTION fill_who_columns (
2933       p_chdv_rec IN chdv_rec_type
2934     ) RETURN chdv_rec_type IS
2935       l_chdv_rec chdv_rec_type := p_chdv_rec;
2936     BEGIN
2937       l_chdv_rec.LAST_UPDATE_DATE := SYSDATE;
2938       l_chdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2939       l_chdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2940       RETURN(l_chdv_rec);
2941     END fill_who_columns;
2942     ----------------------------------
2943     -- FUNCTION populate_new_record --
2944     ----------------------------------
2945     FUNCTION populate_new_record (
2946       p_chdv_rec IN chdv_rec_type,
2947       x_chdv_rec OUT NOCOPY chdv_rec_type
2948     ) RETURN VARCHAR2 IS
2949       l_row_notfound                 BOOLEAN := TRUE;
2950       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2951     BEGIN
2952       x_chdv_rec := p_chdv_rec;
2953       -- Get current database values
2954       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
2955       --       so it may be verified through LOCK_ROW.
2956       l_db_chdv_rec := get_rec(p_chdv_rec, l_return_status);
2957       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2958         IF (x_chdv_rec.cure_refund_header_id = OKL_API.G_MISS_NUM)
2959         THEN
2960           x_chdv_rec.cure_refund_header_id := l_db_chdv_rec.cure_refund_header_id;
2961         END IF;
2962         IF (x_chdv_rec.refund_header_number = OKL_API.G_MISS_CHAR)
2963         THEN
2964           x_chdv_rec.refund_header_number := l_db_chdv_rec.refund_header_number;
2965         END IF;
2966         IF (x_chdv_rec.refund_type = OKL_API.G_MISS_CHAR)
2967         THEN
2968           x_chdv_rec.refund_type := l_db_chdv_rec.refund_type;
2969         END IF;
2970         IF (x_chdv_rec.refund_due_date = OKL_API.G_MISS_DATE)
2971         THEN
2972           x_chdv_rec.refund_due_date := l_db_chdv_rec.refund_due_date;
2973         END IF;
2974         IF (x_chdv_rec.currency_code = OKL_API.G_MISS_CHAR)
2975         THEN
2976           x_chdv_rec.currency_code := l_db_chdv_rec.currency_code;
2977         END IF;
2978         IF (x_chdv_rec.total_refund_due = OKL_API.G_MISS_NUM)
2979         THEN
2980           x_chdv_rec.total_refund_due := l_db_chdv_rec.total_refund_due;
2981         END IF;
2982         IF (x_chdv_rec.disbursement_amount = OKL_API.G_MISS_NUM)
2983         THEN
2984           x_chdv_rec.disbursement_amount := l_db_chdv_rec.disbursement_amount;
2985         END IF;
2986         IF (x_chdv_rec.RECEIVED_AMOUNT = OKL_API.G_MISS_NUM)
2987         THEN
2988           x_chdv_rec.RECEIVED_AMOUNT := l_db_chdv_rec.RECEIVED_AMOUNT;
2989         END IF;
2990         IF (x_chdv_rec.OFFSET_AMOUNT = OKL_API.G_MISS_NUM)
2991         THEN
2992           x_chdv_rec.OFFSET_AMOUNT := l_db_chdv_rec.OFFSET_AMOUNT;
2993         END IF;
2994         IF (x_chdv_rec.NEGOTIATED_AMOUNT = OKL_API.G_MISS_NUM)
2995         THEN
2996           x_chdv_rec.NEGOTIATED_AMOUNT := l_db_chdv_rec.NEGOTIATED_AMOUNT;
2997         END IF;
2998         IF (x_chdv_rec.vendor_site_id = OKL_API.G_MISS_NUM)
2999         THEN
3000           x_chdv_rec.vendor_site_id := l_db_chdv_rec.vendor_site_id;
3001         END IF;
3002         IF (x_chdv_rec.refund_status = OKL_API.G_MISS_CHAR)
3003         THEN
3004           x_chdv_rec.refund_status := l_db_chdv_rec.refund_status;
3005         END IF;
3006         IF (x_chdv_rec.payment_method = OKL_API.G_MISS_CHAR)
3007         THEN
3008           x_chdv_rec.payment_method := l_db_chdv_rec.payment_method;
3009         END IF;
3010         IF (x_chdv_rec.payment_term_id = OKL_API.G_MISS_NUM)
3011         THEN
3012           x_chdv_rec.payment_term_id := l_db_chdv_rec.payment_term_id;
3013         END IF;
3014         IF (x_chdv_rec.sfwt_flag = OKL_API.G_MISS_CHAR)
3015         THEN
3016           x_chdv_rec.sfwt_flag := l_db_chdv_rec.sfwt_flag;
3017         END IF;
3018         IF (x_chdv_rec.description = OKL_API.G_MISS_CHAR)
3019         THEN
3020           x_chdv_rec.description := l_db_chdv_rec.description;
3021         END IF;
3022         IF (x_chdv_rec.vendor_cure_due = OKL_API.G_MISS_NUM)
3023         THEN
3024           x_chdv_rec.vendor_cure_due := l_db_chdv_rec.vendor_cure_due;
3025         END IF;
3026         IF (x_chdv_rec.vendor_site_cure_due = OKL_API.G_MISS_NUM)
3027         THEN
3028           x_chdv_rec.vendor_site_cure_due := l_db_chdv_rec.vendor_site_cure_due;
3029         END IF;
3030         IF (x_chdv_rec.chr_id = OKL_API.G_MISS_NUM)
3031         THEN
3032           x_chdv_rec.chr_id := l_db_chdv_rec.chr_id;
3033         END IF;
3034         IF (x_chdv_rec.program_id = OKL_API.G_MISS_NUM)
3035         THEN
3036           x_chdv_rec.program_id := l_db_chdv_rec.program_id;
3037         END IF;
3038         IF (x_chdv_rec.request_id = OKL_API.G_MISS_NUM)
3039         THEN
3040           x_chdv_rec.request_id := l_db_chdv_rec.request_id;
3041         END IF;
3042         IF (x_chdv_rec.program_application_id = OKL_API.G_MISS_NUM)
3043         THEN
3044           x_chdv_rec.program_application_id := l_db_chdv_rec.program_application_id;
3045         END IF;
3046         IF (x_chdv_rec.program_update_date = OKL_API.G_MISS_DATE)
3047         THEN
3048           x_chdv_rec.program_update_date := l_db_chdv_rec.program_update_date;
3049         END IF;
3050         IF (x_chdv_rec.attribute_category = OKL_API.G_MISS_CHAR)
3051         THEN
3052           x_chdv_rec.attribute_category := l_db_chdv_rec.attribute_category;
3053         END IF;
3054         IF (x_chdv_rec.attribute1 = OKL_API.G_MISS_CHAR)
3055         THEN
3056           x_chdv_rec.attribute1 := l_db_chdv_rec.attribute1;
3057         END IF;
3058         IF (x_chdv_rec.attribute2 = OKL_API.G_MISS_CHAR)
3059         THEN
3060           x_chdv_rec.attribute2 := l_db_chdv_rec.attribute2;
3061         END IF;
3062         IF (x_chdv_rec.attribute3 = OKL_API.G_MISS_CHAR)
3063         THEN
3064           x_chdv_rec.attribute3 := l_db_chdv_rec.attribute3;
3065         END IF;
3066         IF (x_chdv_rec.attribute4 = OKL_API.G_MISS_CHAR)
3067         THEN
3068           x_chdv_rec.attribute4 := l_db_chdv_rec.attribute4;
3069         END IF;
3070         IF (x_chdv_rec.attribute5 = OKL_API.G_MISS_CHAR)
3071         THEN
3072           x_chdv_rec.attribute5 := l_db_chdv_rec.attribute5;
3073         END IF;
3074         IF (x_chdv_rec.attribute6 = OKL_API.G_MISS_CHAR)
3075         THEN
3076           x_chdv_rec.attribute6 := l_db_chdv_rec.attribute6;
3077         END IF;
3078         IF (x_chdv_rec.attribute7 = OKL_API.G_MISS_CHAR)
3079         THEN
3080           x_chdv_rec.attribute7 := l_db_chdv_rec.attribute7;
3081         END IF;
3082         IF (x_chdv_rec.attribute8 = OKL_API.G_MISS_CHAR)
3083         THEN
3084           x_chdv_rec.attribute8 := l_db_chdv_rec.attribute8;
3085         END IF;
3086         IF (x_chdv_rec.attribute9 = OKL_API.G_MISS_CHAR)
3087         THEN
3088           x_chdv_rec.attribute9 := l_db_chdv_rec.attribute9;
3089         END IF;
3090         IF (x_chdv_rec.attribute10 = OKL_API.G_MISS_CHAR)
3091         THEN
3092           x_chdv_rec.attribute10 := l_db_chdv_rec.attribute10;
3093         END IF;
3094         IF (x_chdv_rec.attribute11 = OKL_API.G_MISS_CHAR)
3095         THEN
3096           x_chdv_rec.attribute11 := l_db_chdv_rec.attribute11;
3097         END IF;
3098         IF (x_chdv_rec.attribute12 = OKL_API.G_MISS_CHAR)
3099         THEN
3100           x_chdv_rec.attribute12 := l_db_chdv_rec.attribute12;
3101         END IF;
3102         IF (x_chdv_rec.attribute13 = OKL_API.G_MISS_CHAR)
3103         THEN
3104           x_chdv_rec.attribute13 := l_db_chdv_rec.attribute13;
3105         END IF;
3106         IF (x_chdv_rec.attribute14 = OKL_API.G_MISS_CHAR)
3107         THEN
3108           x_chdv_rec.attribute14 := l_db_chdv_rec.attribute14;
3109         END IF;
3110         IF (x_chdv_rec.attribute15 = OKL_API.G_MISS_CHAR)
3111         THEN
3112           x_chdv_rec.attribute15 := l_db_chdv_rec.attribute15;
3113         END IF;
3114         IF (x_chdv_rec.created_by = OKL_API.G_MISS_NUM)
3115         THEN
3116           x_chdv_rec.created_by := l_db_chdv_rec.created_by;
3117         END IF;
3118         IF (x_chdv_rec.creation_date = OKL_API.G_MISS_DATE)
3119         THEN
3120           x_chdv_rec.creation_date := l_db_chdv_rec.creation_date;
3121         END IF;
3122         IF (x_chdv_rec.last_updated_by = OKL_API.G_MISS_NUM)
3123         THEN
3124           x_chdv_rec.last_updated_by := l_db_chdv_rec.last_updated_by;
3125         END IF;
3126         IF (x_chdv_rec.last_update_date = OKL_API.G_MISS_DATE)
3127         THEN
3128           x_chdv_rec.last_update_date := l_db_chdv_rec.last_update_date;
3129         END IF;
3130         IF (x_chdv_rec.last_update_login = OKL_API.G_MISS_NUM)
3131         THEN
3132           x_chdv_rec.last_update_login := l_db_chdv_rec.last_update_login;
3133         END IF;
3134       END IF;
3135       RETURN(l_return_status);
3136     END populate_new_record;
3137     --------------------------------------------------
3138     -- Set_Attributes for:OKL_CURE_REFUND_HEADERS_V --
3139     --------------------------------------------------
3140     FUNCTION Set_Attributes (
3141       p_chdv_rec IN chdv_rec_type,
3142       x_chdv_rec OUT NOCOPY chdv_rec_type
3143     ) RETURN VARCHAR2 IS
3144       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3145     BEGIN
3146       x_chdv_rec := p_chdv_rec;
3147       RETURN(l_return_status);
3148     END Set_Attributes;
3149   BEGIN
3150     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3151                                               G_PKG_NAME,
3152                                               p_init_msg_list,
3153                                               l_api_version,
3154                                               p_api_version,
3155                                               '_PVT',
3156                                               x_return_status);
3157     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3158       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3159     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3160       RAISE OKL_API.G_EXCEPTION_ERROR;
3161     END IF;
3162     --- Setting item attributes
3163     l_return_status := Set_Attributes(
3164       p_chdv_rec,                        -- IN
3165       x_chdv_rec);                       -- OUT
3166     --- If any errors happen abort API
3167     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3168       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3169     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3170       RAISE OKL_API.G_EXCEPTION_ERROR;
3171     END IF;
3172     l_return_status := populate_new_record(l_chdv_rec, l_def_chdv_rec);
3173     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3174       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3175     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3176       RAISE OKL_API.G_EXCEPTION_ERROR;
3177     END IF;
3178     l_def_chdv_rec := fill_who_columns(l_def_chdv_rec);
3179     --- Validate all non-missing attributes (Item Level Validation)
3180     l_return_status := Validate_Attributes(l_def_chdv_rec);
3181     --- If any errors happen abort API
3182     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3183       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3184     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3185       RAISE OKL_API.G_EXCEPTION_ERROR;
3186     END IF;
3187     l_return_status := Validate_Record(l_def_chdv_rec, l_db_chdv_rec);
3188     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3189       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3190     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3191       RAISE OKL_API.G_EXCEPTION_ERROR;
3192     END IF;
3193 
3194     -- Lock the Record
3195     lock_row(
3196       p_api_version                  => p_api_version,
3197       p_init_msg_list                => p_init_msg_list,
3198       x_return_status                => l_return_status,
3199       x_msg_count                    => x_msg_count,
3200       x_msg_data                     => x_msg_data,
3201       p_chdv_rec                     => p_chdv_rec);
3202     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3203       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3204     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3205       RAISE OKL_API.G_EXCEPTION_ERROR;
3206     END IF;
3207 
3208     -----------------------------------------
3209     -- Move VIEW record to "Child" records --
3210     -----------------------------------------
3211     migrate(l_def_chdv_rec, l_chd_rec);
3212     migrate(l_def_chdv_rec, l_okl_cure_refund_h183);
3213     -----------------------------------------------
3214     -- Call the UPDATE_ROW for each child record --
3215     -----------------------------------------------
3216     update_row(
3217       p_init_msg_list,
3218       l_return_status,
3219       x_msg_count,
3220       x_msg_data,
3221       l_chd_rec,
3222       lx_chd_rec
3223     );
3224     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3225       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3226     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3227       RAISE OKL_API.G_EXCEPTION_ERROR;
3228     END IF;
3229     migrate(lx_chd_rec, l_def_chdv_rec);
3230     update_row(
3231       p_init_msg_list,
3232       l_return_status,
3233       x_msg_count,
3234       x_msg_data,
3235       l_okl_cure_refund_h183,
3236       LxOklCureRefundHeadersTlRec
3237     );
3238     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3239       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3240     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3241       RAISE OKL_API.G_EXCEPTION_ERROR;
3242     END IF;
3243     migrate(LxOklCureRefundHeadersTlRec, l_def_chdv_rec);
3244     x_chdv_rec := l_def_chdv_rec;
3245     x_return_status := l_return_status;
3246     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3247   EXCEPTION
3248     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3249       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3250       (
3251         l_api_name,
3252         G_PKG_NAME,
3253         'OKL_API.G_RET_STS_ERROR',
3254         x_msg_count,
3255         x_msg_data,
3256         '_PVT'
3257       );
3258     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3259       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3260       (
3261         l_api_name,
3262         G_PKG_NAME,
3263         'OKL_API.G_RET_STS_UNEXP_ERROR',
3264         x_msg_count,
3265         x_msg_data,
3266         '_PVT'
3267       );
3268     WHEN OTHERS THEN
3269       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3270       (
3271         l_api_name,
3272         G_PKG_NAME,
3273         'OTHERS',
3274         x_msg_count,
3275         x_msg_data,
3276         '_PVT'
3277       );
3278   END update_row;
3279   ----------------------------------------
3280   -- PL/SQL TBL update_row for:chdv_tbl --
3281   ----------------------------------------
3282   PROCEDURE update_row(
3283     p_api_version                  IN NUMBER,
3284     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3285     x_return_status                OUT NOCOPY VARCHAR2,
3286     x_msg_count                    OUT NOCOPY NUMBER,
3287     x_msg_data                     OUT NOCOPY VARCHAR2,
3288     p_chdv_tbl                     IN chdv_tbl_type,
3289     x_chdv_tbl                     OUT NOCOPY chdv_tbl_type,
3290     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3291 
3292     l_api_version                  CONSTANT NUMBER := 1;
3293     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
3294     i                              NUMBER := 0;
3295   BEGIN
3296     OKL_API.init_msg_list(p_init_msg_list);
3297     -- Make sure PL/SQL table has records in it before passing
3298     IF (p_chdv_tbl.COUNT > 0) THEN
3299       i := p_chdv_tbl.FIRST;
3300       LOOP
3301         DECLARE
3302           l_error_rec         OKL_API.ERROR_REC_TYPE;
3303         BEGIN
3304           l_error_rec.api_name := l_api_name;
3305           l_error_rec.api_package := G_PKG_NAME;
3306           l_error_rec.idx := i;
3307           update_row (
3308             p_api_version                  => p_api_version,
3309             p_init_msg_list                => OKL_API.G_FALSE,
3310             x_return_status                => l_error_rec.error_type,
3311             x_msg_count                    => l_error_rec.msg_count,
3312             x_msg_data                     => l_error_rec.msg_data,
3313             p_chdv_rec                     => p_chdv_tbl(i),
3314             x_chdv_rec                     => x_chdv_tbl(i));
3315           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3316             l_error_rec.sqlcode := SQLCODE;
3317             load_error_tbl(l_error_rec, px_error_tbl);
3318           ELSE
3319             x_msg_count := l_error_rec.msg_count;
3320             x_msg_data := l_error_rec.msg_data;
3321           END IF;
3322         EXCEPTION
3323           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3324             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3325             l_error_rec.sqlcode := SQLCODE;
3326             load_error_tbl(l_error_rec, px_error_tbl);
3327           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3328             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3329             l_error_rec.sqlcode := SQLCODE;
3330             load_error_tbl(l_error_rec, px_error_tbl);
3331           WHEN OTHERS THEN
3332             l_error_rec.error_type := 'OTHERS';
3333             l_error_rec.sqlcode := SQLCODE;
3334             load_error_tbl(l_error_rec, px_error_tbl);
3335         END;
3336         EXIT WHEN (i = p_chdv_tbl.LAST);
3337         i := p_chdv_tbl.NEXT(i);
3338       END LOOP;
3339     END IF;
3340     -- Loop through the error_tbl to find the error with the highest severity
3341     -- and return it.
3342     x_return_status := find_highest_exception(px_error_tbl);
3343     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3344   EXCEPTION
3345     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3346       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3347       (
3348         l_api_name,
3349         G_PKG_NAME,
3350         'OKL_API.G_RET_STS_ERROR',
3351         x_msg_count,
3352         x_msg_data,
3353         '_PVT'
3354       );
3355     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3356       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3357       (
3358         l_api_name,
3359         G_PKG_NAME,
3360         'OKL_API.G_RET_STS_UNEXP_ERROR',
3361         x_msg_count,
3362         x_msg_data,
3363         '_PVT'
3364       );
3365     WHEN OTHERS THEN
3366       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3367       (
3368         l_api_name,
3369         G_PKG_NAME,
3370         'OTHERS',
3371         x_msg_count,
3372         x_msg_data,
3373         '_PVT'
3374       );
3375   END update_row;
3376 
3377   ----------------------------------------
3378   -- PL/SQL TBL update_row for:CHDV_TBL --
3379   ----------------------------------------
3380   PROCEDURE update_row(
3381     p_api_version                  IN NUMBER,
3382     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3383     x_return_status                OUT NOCOPY VARCHAR2,
3384     x_msg_count                    OUT NOCOPY NUMBER,
3385     x_msg_data                     OUT NOCOPY VARCHAR2,
3386     p_chdv_tbl                     IN chdv_tbl_type,
3387     x_chdv_tbl                     OUT NOCOPY chdv_tbl_type) IS
3388 
3389     l_api_version                  CONSTANT NUMBER := 1;
3390     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
3391     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3392     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3393   BEGIN
3394     OKL_API.init_msg_list(p_init_msg_list);
3395     -- Make sure PL/SQL table has records in it before passing
3396     IF (p_chdv_tbl.COUNT > 0) THEN
3397       update_row (
3398         p_api_version                  => p_api_version,
3399         p_init_msg_list                => OKL_API.G_FALSE,
3400         x_return_status                => x_return_status,
3401         x_msg_count                    => x_msg_count,
3402         x_msg_data                     => x_msg_data,
3403         p_chdv_tbl                     => p_chdv_tbl,
3404         x_chdv_tbl                     => x_chdv_tbl,
3405         px_error_tbl                   => l_error_tbl);
3406     END IF;
3407     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3408   EXCEPTION
3409     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3410       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3411       (
3412         l_api_name,
3413         G_PKG_NAME,
3414         'OKL_API.G_RET_STS_ERROR',
3415         x_msg_count,
3416         x_msg_data,
3417         '_PVT'
3418       );
3419     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3420       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3421       (
3422         l_api_name,
3423         G_PKG_NAME,
3424         'OKL_API.G_RET_STS_UNEXP_ERROR',
3425         x_msg_count,
3426         x_msg_data,
3427         '_PVT'
3428       );
3429     WHEN OTHERS THEN
3430       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3431       (
3432         l_api_name,
3433         G_PKG_NAME,
3434         'OTHERS',
3435         x_msg_count,
3436         x_msg_data,
3437         '_PVT'
3438       );
3439   END update_row;
3440 
3441   ---------------------------------------------------------------------------
3442   -- PROCEDURE delete_row
3443   ---------------------------------------------------------------------------
3444   ----------------------------------------------
3445   -- delete_row for:OKL_CURE_REFUND_HEADERS_B --
3446   ----------------------------------------------
3447   PROCEDURE delete_row(
3448     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3449     x_return_status                OUT NOCOPY VARCHAR2,
3450     x_msg_count                    OUT NOCOPY NUMBER,
3451     x_msg_data                     OUT NOCOPY VARCHAR2,
3452     p_chd_rec                      IN chd_rec_type) IS
3453 
3454     l_api_version                  CONSTANT NUMBER := 1;
3455     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
3456     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3457     l_chd_rec                      chd_rec_type := p_chd_rec;
3458     l_row_notfound                 BOOLEAN := TRUE;
3459   BEGIN
3460     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3461                                               p_init_msg_list,
3462                                               '_PVT',
3463                                               x_return_status);
3464     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3465       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3466     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3467       RAISE OKL_API.G_EXCEPTION_ERROR;
3468     END IF;
3469 
3470     DELETE FROM OKL_CURE_REFUND_HEADERS_B
3471      WHERE CURE_REFUND_HEADER_ID = p_chd_rec.cure_refund_header_id;
3472 
3473     x_return_status := l_return_status;
3474     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3475   EXCEPTION
3476     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3477       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3478       (
3479         l_api_name,
3480         G_PKG_NAME,
3481         'OKL_API.G_RET_STS_ERROR',
3482         x_msg_count,
3483         x_msg_data,
3484         '_PVT'
3485       );
3486     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3487       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3488       (
3489         l_api_name,
3490         G_PKG_NAME,
3491         'OKL_API.G_RET_STS_UNEXP_ERROR',
3492         x_msg_count,
3493         x_msg_data,
3494         '_PVT'
3495       );
3496     WHEN OTHERS THEN
3497       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3498       (
3499         l_api_name,
3500         G_PKG_NAME,
3501         'OTHERS',
3502         x_msg_count,
3503         x_msg_data,
3504         '_PVT'
3505       );
3506   END delete_row;
3507   -----------------------------------------------
3508   -- delete_row for:OKL_CURE_REFUND_HEADERS_TL --
3509   -----------------------------------------------
3510   PROCEDURE delete_row(
3511     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3512     x_return_status                OUT NOCOPY VARCHAR2,
3513     x_msg_count                    OUT NOCOPY NUMBER,
3514     x_msg_data                     OUT NOCOPY VARCHAR2,
3515     p_okl_cure_refund_h182         IN OklCureRefundHeadersTlRecType) IS
3516 
3517     l_api_version                  CONSTANT NUMBER := 1;
3518     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
3519     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3520     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType := p_okl_cure_refund_h182;
3521     l_row_notfound                 BOOLEAN := TRUE;
3522   BEGIN
3523     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3524                                               p_init_msg_list,
3525                                               '_PVT',
3526                                               x_return_status);
3527     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3528       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3529     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3530       RAISE OKL_API.G_EXCEPTION_ERROR;
3531     END IF;
3532 
3533     DELETE FROM OKL_CURE_REFUND_HEADERS_TL
3534      WHERE CURE_REFUND_HEADER_ID = p_okl_cure_refund_h182.cure_refund_header_id;
3535 
3536     x_return_status := l_return_status;
3537     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3538   EXCEPTION
3539     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3540       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3541       (
3542         l_api_name,
3543         G_PKG_NAME,
3544         'OKL_API.G_RET_STS_ERROR',
3545         x_msg_count,
3546         x_msg_data,
3547         '_PVT'
3548       );
3549     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3550       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3551       (
3552         l_api_name,
3553         G_PKG_NAME,
3554         'OKL_API.G_RET_STS_UNEXP_ERROR',
3555         x_msg_count,
3556         x_msg_data,
3557         '_PVT'
3558       );
3559     WHEN OTHERS THEN
3560       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3561       (
3562         l_api_name,
3563         G_PKG_NAME,
3564         'OTHERS',
3565         x_msg_count,
3566         x_msg_data,
3567         '_PVT'
3568       );
3569   END delete_row;
3570   ----------------------------------------------
3571   -- delete_row for:OKL_CURE_REFUND_HEADERS_V --
3572   ----------------------------------------------
3573   PROCEDURE delete_row(
3574     p_api_version                  IN NUMBER,
3575     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3576     x_return_status                OUT NOCOPY VARCHAR2,
3577     x_msg_count                    OUT NOCOPY NUMBER,
3578     x_msg_data                     OUT NOCOPY VARCHAR2,
3579     p_chdv_rec                     IN chdv_rec_type) IS
3580 
3581     l_api_version                  CONSTANT NUMBER := 1;
3582     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
3583     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3584     l_chdv_rec                     chdv_rec_type := p_chdv_rec;
3585     l_okl_cure_refund_h183         OklCureRefundHeadersTlRecType;
3586     l_chd_rec                      chd_rec_type;
3587   BEGIN
3588     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3589                                               G_PKG_NAME,
3590                                               p_init_msg_list,
3591                                               l_api_version,
3592                                               p_api_version,
3593                                               '_PVT',
3594                                               x_return_status);
3595     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3596       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3597     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3598       RAISE OKL_API.G_EXCEPTION_ERROR;
3599     END IF;
3600     -----------------------------------------
3601     -- Move VIEW record to "Child" records --
3602     -----------------------------------------
3603     migrate(l_chdv_rec, l_okl_cure_refund_h183);
3604     migrate(l_chdv_rec, l_chd_rec);
3605     -----------------------------------------------
3606     -- Call the DELETE_ROW for each child record --
3607     -----------------------------------------------
3608     delete_row(
3609       p_init_msg_list,
3610       l_return_status,
3611       x_msg_count,
3612       x_msg_data,
3613       l_okl_cure_refund_h183
3614     );
3615     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3616       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3617     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3618       RAISE OKL_API.G_EXCEPTION_ERROR;
3619     END IF;
3620     delete_row(
3621       p_init_msg_list,
3622       l_return_status,
3623       x_msg_count,
3624       x_msg_data,
3625       l_chd_rec
3626     );
3627     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3628       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3629     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3630       RAISE OKL_API.G_EXCEPTION_ERROR;
3631     END IF;
3632     x_return_status := l_return_status;
3633     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3634   EXCEPTION
3635     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3636       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3637       (
3638         l_api_name,
3639         G_PKG_NAME,
3640         'OKL_API.G_RET_STS_ERROR',
3641         x_msg_count,
3642         x_msg_data,
3643         '_PVT'
3644       );
3645     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3646       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3647       (
3648         l_api_name,
3649         G_PKG_NAME,
3650         'OKL_API.G_RET_STS_UNEXP_ERROR',
3651         x_msg_count,
3652         x_msg_data,
3653         '_PVT'
3654       );
3655     WHEN OTHERS THEN
3656       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3657       (
3658         l_api_name,
3659         G_PKG_NAME,
3660         'OTHERS',
3661         x_msg_count,
3662         x_msg_data,
3663         '_PVT'
3664       );
3665   END delete_row;
3666   ---------------------------------------------------------
3667   -- PL/SQL TBL delete_row for:OKL_CURE_REFUND_HEADERS_V --
3668   ---------------------------------------------------------
3669   PROCEDURE delete_row(
3670     p_api_version                  IN NUMBER,
3671     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3672     x_return_status                OUT NOCOPY VARCHAR2,
3673     x_msg_count                    OUT NOCOPY NUMBER,
3674     x_msg_data                     OUT NOCOPY VARCHAR2,
3675     p_chdv_tbl                     IN chdv_tbl_type,
3676     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3677 
3678     l_api_version                  CONSTANT NUMBER := 1;
3679     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
3680     i                              NUMBER := 0;
3681   BEGIN
3682     OKL_API.init_msg_list(p_init_msg_list);
3683     -- Make sure PL/SQL table has records in it before passing
3684     IF (p_chdv_tbl.COUNT > 0) THEN
3685       i := p_chdv_tbl.FIRST;
3686       LOOP
3687         DECLARE
3688           l_error_rec         OKL_API.ERROR_REC_TYPE;
3689         BEGIN
3690           l_error_rec.api_name := l_api_name;
3691           l_error_rec.api_package := G_PKG_NAME;
3692           l_error_rec.idx := i;
3693           delete_row (
3694             p_api_version                  => p_api_version,
3695             p_init_msg_list                => OKL_API.G_FALSE,
3696             x_return_status                => l_error_rec.error_type,
3697             x_msg_count                    => l_error_rec.msg_count,
3698             x_msg_data                     => l_error_rec.msg_data,
3699             p_chdv_rec                     => p_chdv_tbl(i));
3700           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3701             l_error_rec.sqlcode := SQLCODE;
3702             load_error_tbl(l_error_rec, px_error_tbl);
3703           ELSE
3704             x_msg_count := l_error_rec.msg_count;
3705             x_msg_data := l_error_rec.msg_data;
3706           END IF;
3707         EXCEPTION
3708           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3709             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3710             l_error_rec.sqlcode := SQLCODE;
3711             load_error_tbl(l_error_rec, px_error_tbl);
3712           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3713             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3714             l_error_rec.sqlcode := SQLCODE;
3715             load_error_tbl(l_error_rec, px_error_tbl);
3716           WHEN OTHERS THEN
3717             l_error_rec.error_type := 'OTHERS';
3718             l_error_rec.sqlcode := SQLCODE;
3719             load_error_tbl(l_error_rec, px_error_tbl);
3720         END;
3721         EXIT WHEN (i = p_chdv_tbl.LAST);
3722         i := p_chdv_tbl.NEXT(i);
3723       END LOOP;
3724     END IF;
3725     -- Loop through the error_tbl to find the error with the highest severity
3726     -- and return it.
3727     x_return_status := find_highest_exception(px_error_tbl);
3728     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3729   EXCEPTION
3730     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3731       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3732       (
3733         l_api_name,
3734         G_PKG_NAME,
3735         'OKL_API.G_RET_STS_ERROR',
3736         x_msg_count,
3737         x_msg_data,
3738         '_PVT'
3739       );
3740     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3741       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3742       (
3743         l_api_name,
3744         G_PKG_NAME,
3745         'OKL_API.G_RET_STS_UNEXP_ERROR',
3746         x_msg_count,
3747         x_msg_data,
3748         '_PVT'
3749       );
3750     WHEN OTHERS THEN
3751       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3752       (
3753         l_api_name,
3754         G_PKG_NAME,
3755         'OTHERS',
3756         x_msg_count,
3757         x_msg_data,
3758         '_PVT'
3759       );
3760   END delete_row;
3761 
3762   ---------------------------------------------------------
3763   -- PL/SQL TBL delete_row for:OKL_CURE_REFUND_HEADERS_V --
3764   ---------------------------------------------------------
3765   PROCEDURE delete_row(
3766     p_api_version                  IN NUMBER,
3767     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3768     x_return_status                OUT NOCOPY VARCHAR2,
3769     x_msg_count                    OUT NOCOPY NUMBER,
3770     x_msg_data                     OUT NOCOPY VARCHAR2,
3771     p_chdv_tbl                     IN chdv_tbl_type) IS
3772 
3773     l_api_version                  CONSTANT NUMBER := 1;
3774     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
3775     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3776     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3777   BEGIN
3778     OKL_API.init_msg_list(p_init_msg_list);
3779     -- Make sure PL/SQL table has records in it before passing
3780     IF (p_chdv_tbl.COUNT > 0) THEN
3781       delete_row (
3782         p_api_version                  => p_api_version,
3783         p_init_msg_list                => OKL_API.G_FALSE,
3784         x_return_status                => x_return_status,
3785         x_msg_count                    => x_msg_count,
3786         x_msg_data                     => x_msg_data,
3787         p_chdv_tbl                     => p_chdv_tbl,
3788         px_error_tbl                   => l_error_tbl);
3789     END IF;
3790     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3791   EXCEPTION
3792     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3793       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3794       (
3795         l_api_name,
3796         G_PKG_NAME,
3797         'OKL_API.G_RET_STS_ERROR',
3798         x_msg_count,
3799         x_msg_data,
3800         '_PVT'
3801       );
3802     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3803       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3804       (
3805         l_api_name,
3806         G_PKG_NAME,
3807         'OKL_API.G_RET_STS_UNEXP_ERROR',
3808         x_msg_count,
3809         x_msg_data,
3810         '_PVT'
3811       );
3812     WHEN OTHERS THEN
3813       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3814       (
3815         l_api_name,
3816         G_PKG_NAME,
3817         'OTHERS',
3818         x_msg_count,
3819         x_msg_data,
3820         '_PVT'
3821       );
3822   END delete_row;
3823 
3824 END OKL_CHD_PVT;