DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_FWT_PVT

Source


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