DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CAU_PVT

Source


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