DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TBO_PVT

Source


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