DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TBC_PVT

Source


1 PACKAGE BODY OKL_TBC_PVT AS
2 /* $Header: OKLSTBCB.pls 120.14 2007/04/02 14:45:03 asawanka 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   l_id NUMBER;
66   BEGIN
67     select okl_tax_attr_definitions_s.NEXTVAL into l_id from dual;
68     RETURN l_id;
69   END get_seq_id;
70 
71   ---------------------------------------------------------------------------
72   -- PROCEDURE qc
73   ---------------------------------------------------------------------------
74   PROCEDURE qc IS
75   BEGIN
76     null;
77   END qc;
78 
79   ---------------------------------------------------------------------------
80   -- PROCEDURE change_version
81   ---------------------------------------------------------------------------
82   PROCEDURE change_version IS
83   BEGIN
84     null;
85   END change_version;
86 
87   ---------------------------------------------------------------------------
88   -- PROCEDURE api_copy
89   ---------------------------------------------------------------------------
90   PROCEDURE api_copy IS
91   BEGIN
92     null;
93   END api_copy;
94 
95   ---------------------------------------------------------------------------
96   -- FUNCTION get_rec for: OKL_TAX_ATTR_DEFINITIONS
97   ---------------------------------------------------------------------------
98   FUNCTION get_rec (
99     p_tbcv_rec                     IN tbcv_rec_type,
100     x_no_data_found                OUT NOCOPY BOOLEAN
101   ) RETURN tbcv_rec_type IS
102     CURSOR okl_tbcv_pk_csr (p_TAX_ATTRIBUTE_DEF_ID IN NUMBER) IS
103     SELECT
104             --ID,
105             --ORG_ID,
106             RESULT_CODE,
107             PURCHASE_OPTION_CODE,
108             PDT_ID,
109             TRY_ID,
110             STY_ID,
111             INT_DISCLOSED_CODE,
112             TITLE_TRNSFR_CODE,
113             SALE_LEASE_BACK_CODE,
114             LEASE_PURCHASED_CODE,
115             EQUIP_USAGE_CODE,
116             VENDOR_SITE_ID,
117             AGE_OF_EQUIP_FROM,
118             AGE_OF_EQUIP_TO,
119             OBJECT_VERSION_NUMBER,
120             ATTRIBUTE_CATEGORY,
121             ATTRIBUTE1,
122             ATTRIBUTE2,
123             ATTRIBUTE3,
124             ATTRIBUTE4,
125             ATTRIBUTE5,
126             ATTRIBUTE6,
127             ATTRIBUTE7,
128             ATTRIBUTE8,
129             ATTRIBUTE9,
130             ATTRIBUTE10,
131             ATTRIBUTE11,
132             ATTRIBUTE12,
133             ATTRIBUTE13,
134             ATTRIBUTE14,
135             ATTRIBUTE15,
136             CREATED_BY,
137             CREATION_DATE,
138             LAST_UPDATED_BY,
139             LAST_UPDATE_DATE,
140             LAST_UPDATE_LOGIN,
141          -- modified by dcshanmu for eBTax project - modification start
142             TAX_ATTRIBUTE_DEF_ID,
143             RESULT_TYPE_CODE,
144             BOOK_CLASS_CODE,
145             DATE_EFFECTIVE_FROM,
146             DATE_EFFECTIVE_TO,
147             TAX_COUNTRY_CODE,
148             TERM_QUOTE_TYPE_CODE,
149             TERM_QUOTE_REASON_CODE,
150             EXPIRE_FLAG
151             -- modified by dcshanmu for eBTax project - modification end
152       FROM OKL_TAX_ATTR_DEFINITIONS
153 --     WHERE OKL_TAX_ATTR_DEFINITIONS.id = p_id;
154       WHERE OKL_TAX_ATTR_DEFINITIONS.TAX_ATTRIBUTE_DEF_ID = p_TAX_ATTRIBUTE_DEF_ID;
155     l_okl_tbcv_pk                  okl_tbcv_pk_csr%ROWTYPE;
156     l_tbcv_rec                     tbcv_rec_type;
157   BEGIN
158     x_no_data_found := TRUE;
159     -- Get current database values
160     OPEN okl_tbcv_pk_csr (p_tbcv_rec.TAX_ATTRIBUTE_DEF_ID);
161     FETCH okl_tbcv_pk_csr INTO
162               --l_tbcv_rec.id,
163               --l_tbcv_rec.org_id,
164               l_tbcv_rec.result_code,
165               l_tbcv_rec.purchase_option_code,
166               l_tbcv_rec.pdt_id,
167               l_tbcv_rec.try_id,
168               l_tbcv_rec.sty_id,
169               l_tbcv_rec.int_disclosed_code,
170               l_tbcv_rec.title_trnsfr_code,
171               l_tbcv_rec.sale_lease_back_code,
172               l_tbcv_rec.lease_purchased_code,
173               l_tbcv_rec.equip_usage_code,
174               l_tbcv_rec.vendor_site_id,
175               l_tbcv_rec.age_of_equip_from,
176               l_tbcv_rec.age_of_equip_to,
177               l_tbcv_rec.object_version_number,
178               l_tbcv_rec.attribute_category,
179               l_tbcv_rec.attribute1,
180               l_tbcv_rec.attribute2,
181               l_tbcv_rec.attribute3,
182               l_tbcv_rec.attribute4,
183               l_tbcv_rec.attribute5,
184               l_tbcv_rec.attribute6,
185               l_tbcv_rec.attribute7,
186               l_tbcv_rec.attribute8,
187               l_tbcv_rec.attribute9,
188               l_tbcv_rec.attribute10,
189               l_tbcv_rec.attribute11,
190               l_tbcv_rec.attribute12,
191               l_tbcv_rec.attribute13,
192               l_tbcv_rec.attribute14,
193               l_tbcv_rec.attribute15,
194               l_tbcv_rec.created_by,
195               l_tbcv_rec.creation_date,
196               l_tbcv_rec.last_updated_by,
197               l_tbcv_rec.last_update_date,
198               l_tbcv_rec.last_update_login,
199             -- modified by dcshanmu for eBTax project - modification start
200               l_tbcv_rec.tax_attribute_def_id,
201               l_tbcv_rec.result_type_code,
202               l_tbcv_rec.book_class_code,
203               l_tbcv_rec.date_effective_from,
204               l_tbcv_rec.date_effective_to,
205               l_tbcv_rec.tax_country_code,
206               l_tbcv_rec.term_quote_type_code,
207               l_tbcv_rec.term_quote_reason_code,
208               l_tbcv_rec.expire_flag;
209               -- modified by dcshanmu for eBTax project - modification end
210     x_no_data_found := okl_tbcv_pk_csr%NOTFOUND;
211     CLOSE okl_tbcv_pk_csr;
212 
213     RETURN(l_tbcv_rec);
214   END get_rec;
215 
216   ------------------------------------------------------------------
217   -- This version of get_rec sets error messages if no data found --
218   ------------------------------------------------------------------
219   FUNCTION get_rec (
220     p_tbcv_rec                     IN tbcv_rec_type,
221     x_return_status                OUT NOCOPY VARCHAR2
222   ) RETURN tbcv_rec_type IS
223     l_tbcv_rec                     tbcv_rec_type;
224     l_row_notfound                 BOOLEAN := TRUE;
225   BEGIN
226     x_return_status := OKL_API.G_RET_STS_SUCCESS;
227     l_tbcv_rec := get_rec(p_tbcv_rec, l_row_notfound);
228     IF (l_row_notfound) THEN
229       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'TAX_ATTRIBUTE_DEF_ID');
230       x_return_status := OKL_API.G_RET_STS_ERROR;
231     END IF;
232     RETURN(l_tbcv_rec);
233   END get_rec;
234   -----------------------------------------------------------
235   -- So we don't have to pass an "l_row_notfound" variable --
236   -----------------------------------------------------------
237   FUNCTION get_rec (
238     p_tbcv_rec                     IN tbcv_rec_type
239   ) RETURN tbcv_rec_type IS
240     l_row_not_found                BOOLEAN := TRUE;
241   BEGIN
242     RETURN(get_rec(p_tbcv_rec, l_row_not_found));
243   END get_rec;
244   ---------------------------------------------------------------------------
245   -- FUNCTION get_rec for: OKL_TAX_ATTR_DEFINITIONS
246   ---------------------------------------------------------------------------
247   FUNCTION get_rec (
248     p_tbc_rec                      IN tbc_rec_type,
249     x_no_data_found                OUT NOCOPY BOOLEAN
250   ) RETURN tbc_rec_type IS
251     CURSOR okl_tbc_defs_pk_csr (p_TAX_ATTRIBUTE_DEF_ID IN NUMBER) IS
252     SELECT
253             --ID,
254             --ORG_ID,
255             RESULT_CODE,
256             PURCHASE_OPTION_CODE,
257             PDT_ID,
258             TRY_ID,
259             STY_ID,
260             INT_DISCLOSED_CODE,
261             TITLE_TRNSFR_CODE,
262             SALE_LEASE_BACK_CODE,
263             LEASE_PURCHASED_CODE,
264             EQUIP_USAGE_CODE,
265             VENDOR_SITE_ID,
266             AGE_OF_EQUIP_FROM,
267             AGE_OF_EQUIP_TO,
268             OBJECT_VERSION_NUMBER,
269             ATTRIBUTE_CATEGORY,
270             ATTRIBUTE1,
271             ATTRIBUTE2,
272             ATTRIBUTE3,
273             ATTRIBUTE4,
274             ATTRIBUTE5,
275             ATTRIBUTE6,
276             ATTRIBUTE7,
277             ATTRIBUTE8,
278             ATTRIBUTE9,
279             ATTRIBUTE10,
280             ATTRIBUTE11,
281             ATTRIBUTE12,
282             ATTRIBUTE13,
283             ATTRIBUTE14,
284             ATTRIBUTE15,
285             CREATED_BY,
286             CREATION_DATE,
287             LAST_UPDATED_BY,
288             LAST_UPDATE_DATE,
289             LAST_UPDATE_LOGIN,
290            -- modified by dcshanmu for eBTax project - modification start
291             TAX_ATTRIBUTE_DEF_ID,
292             RESULT_TYPE_CODE,
293             BOOK_CLASS_CODE,
294             DATE_EFFECTIVE_FROM,
295             DATE_EFFECTIVE_TO,
296             TAX_COUNTRY_CODE,
297             TERM_QUOTE_TYPE_CODE,
298             TERM_QUOTE_REASON_CODE,
299             EXPIRE_FLAG
300             -- modified by dcshanmu for eBTax project - modification end
301       FROM OKL_TAX_ATTR_DEFINITIONS
302 --     WHERE OKL_TAX_ATTR_DEFINITIONS.id = p_id;
303       WHERE OKL_TAX_ATTR_DEFINITIONS.TAX_ATTRIBUTE_DEF_ID = p_TAX_ATTRIBUTE_DEF_ID;
304     l_okl_tbc_defs_pk              okl_tbc_defs_pk_csr%ROWTYPE;
305     l_tbc_rec                      tbc_rec_type;
306   BEGIN
307     x_no_data_found := TRUE;
308     -- Get current database values
309     OPEN okl_tbc_defs_pk_csr (p_tbc_rec.TAX_ATTRIBUTE_DEF_ID);
310     FETCH okl_tbc_defs_pk_csr INTO
311              -- l_tbc_rec.id,
312              -- l_tbc_rec.org_id,
313               l_tbc_rec.result_code,
314               l_tbc_rec.purchase_option_code,
315               l_tbc_rec.pdt_id,
316               l_tbc_rec.try_id,
317               l_tbc_rec.sty_id,
318               l_tbc_rec.int_disclosed_code,
319               l_tbc_rec.title_trnsfr_code,
320               l_tbc_rec.sale_lease_back_code,
321               l_tbc_rec.lease_purchased_code,
322               l_tbc_rec.equip_usage_code,
323               l_tbc_rec.vendor_site_id,
324               l_tbc_rec.age_of_equip_from,
325               l_tbc_rec.age_of_equip_to,
326               l_tbc_rec.object_version_number,
327               l_tbc_rec.attribute_category,
328               l_tbc_rec.attribute1,
329               l_tbc_rec.attribute2,
330               l_tbc_rec.attribute3,
331               l_tbc_rec.attribute4,
332               l_tbc_rec.attribute5,
333               l_tbc_rec.attribute6,
334               l_tbc_rec.attribute7,
335               l_tbc_rec.attribute8,
336               l_tbc_rec.attribute9,
337               l_tbc_rec.attribute10,
338               l_tbc_rec.attribute11,
339               l_tbc_rec.attribute12,
340               l_tbc_rec.attribute13,
341               l_tbc_rec.attribute14,
342               l_tbc_rec.attribute15,
343               l_tbc_rec.created_by,
344               l_tbc_rec.creation_date,
345               l_tbc_rec.last_updated_by,
346               l_tbc_rec.last_update_date,
347               l_tbc_rec.last_update_login,
348               -- modified by dcshanmu for eBTax project - modification start
349               l_tbc_rec.tax_attribute_def_id,
350               l_tbc_rec.result_type_code,
351               l_tbc_rec.book_class_code,
352               l_tbc_rec.date_effective_from,
353               l_tbc_rec.date_effective_to,
354               l_tbc_rec.tax_country_code,
355               l_tbc_rec.term_quote_type_code,
356               l_tbc_rec.term_quote_reason_code,
357               l_tbc_rec.expire_flag;
358               -- modified by dcshanmu for eBTax project - modification end
359     x_no_data_found := okl_tbc_defs_pk_csr%NOTFOUND;
360     CLOSE okl_tbc_defs_pk_csr;
361     RETURN(l_tbc_rec);
362   END get_rec;
363 
364   ------------------------------------------------------------------
365   -- This version of get_rec sets error messages if no data found --
366   ------------------------------------------------------------------
367   FUNCTION get_rec (
368     p_tbc_rec                      IN tbc_rec_type,
369     x_return_status                OUT NOCOPY VARCHAR2
370   ) RETURN tbc_rec_type IS
371     l_tbc_rec                      tbc_rec_type;
372     l_row_notfound                 BOOLEAN := TRUE;
373   BEGIN
374     x_return_status := OKL_API.G_RET_STS_SUCCESS;
375     l_tbc_rec := get_rec(p_tbc_rec, l_row_notfound);
376     IF (l_row_notfound) THEN
377       OKc_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'TAX_ATTRIBUTE_DEF_ID');
378       x_return_status := OKL_API.G_RET_STS_ERROR;
379     END IF;
380     RETURN(l_tbc_rec);
381   END get_rec;
382   -----------------------------------------------------------
383   -- So we don't have to pass an "l_row_notfound" variable --
384   -----------------------------------------------------------
385   FUNCTION get_rec (
386     p_tbc_rec                      IN tbc_rec_type
387   ) RETURN tbc_rec_type IS
388     l_row_not_found                BOOLEAN := TRUE;
389   BEGIN
390     RETURN(get_rec(p_tbc_rec, l_row_not_found));
391   END get_rec;
392   ---------------------------------------------------------------------------
393   -- FUNCTION null_out_defaults for: OKL_TAX_ATTR_DEFINITIONS
394   ---------------------------------------------------------------------------
395   FUNCTION null_out_defaults (
396     p_tbcv_rec   IN tbcv_rec_type
397   ) RETURN tbcv_rec_type IS
398     l_tbcv_rec                     tbcv_rec_type := p_tbcv_rec;
399   BEGIN
400     /*IF (l_tbcv_rec.id = OKL_API.G_MISS_NUM ) THEN
401       l_tbcv_rec.id := NULL;
402     END IF;
403     IF (l_tbcv_rec.org_id = OKL_API.G_MISS_NUM ) THEN
404       l_tbcv_rec.org_id := NULL;
405     END IF; */
406 
407     -- modified by dcshanmu for eBTax project - modification start
408     -- changed tbc_code to result_code, because of data model change
409     IF (l_tbcv_rec.result_code = OKL_API.G_MISS_CHAR ) THEN
410       l_tbcv_rec.result_code := NULL;
411     END IF;
412     -- modified by dcshanmu for eBTax project - modification end
413 
414     IF (l_tbcv_rec.purchase_option_code = OKL_API.G_MISS_CHAR ) THEN
415       l_tbcv_rec.purchase_option_code := NULL;
416     END IF;
417     IF (l_tbcv_rec.pdt_id = OKL_API.G_MISS_NUM ) THEN
418       l_tbcv_rec.pdt_id := NULL;
419     END IF;
420     IF (l_tbcv_rec.try_id = OKL_API.G_MISS_NUM ) THEN
421       l_tbcv_rec.try_id := NULL;
422     END IF;
423     IF (l_tbcv_rec.sty_id = OKL_API.G_MISS_NUM ) THEN
424       l_tbcv_rec.sty_id := NULL;
425     END IF;
426     IF (l_tbcv_rec.int_disclosed_code = OKL_API.G_MISS_CHAR ) THEN
427       l_tbcv_rec.int_disclosed_code := NULL;
428     END IF;
429     IF (l_tbcv_rec.title_trnsfr_code = OKL_API.G_MISS_CHAR ) THEN
430       l_tbcv_rec.title_trnsfr_code := NULL;
431     END IF;
432     IF (l_tbcv_rec.sale_lease_back_code = OKL_API.G_MISS_CHAR ) THEN
433       l_tbcv_rec.sale_lease_back_code := NULL;
434     END IF;
435     IF (l_tbcv_rec.lease_purchased_code = OKL_API.G_MISS_CHAR ) THEN
436       l_tbcv_rec.lease_purchased_code := NULL;
437     END IF;
438     IF (l_tbcv_rec.equip_usage_code = OKL_API.G_MISS_CHAR ) THEN
439       l_tbcv_rec.equip_usage_code := NULL;
440     END IF;
441     IF (l_tbcv_rec.vendor_site_id = OKL_API.G_MISS_NUM ) THEN
442       l_tbcv_rec.vendor_site_id := NULL;
443     END IF;
444     IF (l_tbcv_rec.age_of_equip_from = OKL_API.G_MISS_NUM ) THEN
445       l_tbcv_rec.age_of_equip_from := NULL;
446     END IF;
447     IF (l_tbcv_rec.age_of_equip_to = OKL_API.G_MISS_NUM ) THEN
448       l_tbcv_rec.age_of_equip_to := NULL;
449     END IF;
450     IF (l_tbcv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
451       l_tbcv_rec.object_version_number := NULL;
452     END IF;
453     IF (l_tbcv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
454       l_tbcv_rec.attribute_category := NULL;
455     END IF;
456     IF (l_tbcv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
457       l_tbcv_rec.attribute1 := NULL;
458     END IF;
459     IF (l_tbcv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
460       l_tbcv_rec.attribute2 := NULL;
461     END IF;
462     IF (l_tbcv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
463       l_tbcv_rec.attribute3 := NULL;
464     END IF;
465     IF (l_tbcv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
466       l_tbcv_rec.attribute4 := NULL;
467     END IF;
468     IF (l_tbcv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
469       l_tbcv_rec.attribute5 := NULL;
470     END IF;
471     IF (l_tbcv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
472       l_tbcv_rec.attribute6 := NULL;
473     END IF;
474     IF (l_tbcv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
475       l_tbcv_rec.attribute7 := NULL;
476     END IF;
477     IF (l_tbcv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
478       l_tbcv_rec.attribute8 := NULL;
479     END IF;
480     IF (l_tbcv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
481       l_tbcv_rec.attribute9 := NULL;
482     END IF;
483     IF (l_tbcv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
484       l_tbcv_rec.attribute10 := NULL;
485     END IF;
486     IF (l_tbcv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
487       l_tbcv_rec.attribute11 := NULL;
488     END IF;
489     IF (l_tbcv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
490       l_tbcv_rec.attribute12 := NULL;
491     END IF;
492     IF (l_tbcv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
493       l_tbcv_rec.attribute13 := NULL;
494     END IF;
495     IF (l_tbcv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
496       l_tbcv_rec.attribute14 := NULL;
497     END IF;
498     IF (l_tbcv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
499       l_tbcv_rec.attribute15 := NULL;
500     END IF;
501     IF (l_tbcv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
502       l_tbcv_rec.created_by := NULL;
503     END IF;
504     IF (l_tbcv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
505       l_tbcv_rec.creation_date := NULL;
506     END IF;
507     IF (l_tbcv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
508       l_tbcv_rec.last_updated_by := NULL;
509     END IF;
510     IF (l_tbcv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
511       l_tbcv_rec.last_update_date := NULL;
512     END IF;
513     IF (l_tbcv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
514       l_tbcv_rec.last_update_login := NULL;
515     END IF;
516 
517     -- modified by dcshanmu for eBTax project - modification start
518     -- added null default implementation to new columns added in the table
519     IF (l_tbcv_rec.tax_attribute_def_id = OKL_API.G_MISS_NUM ) THEN
520       l_tbcv_rec.tax_attribute_def_id := NULL;
521     END IF;
522     IF (l_tbcv_rec.result_type_code = OKL_API.G_MISS_CHAR ) THEN
523       l_tbcv_rec.result_type_code := NULL;
524     END IF;
525     IF (l_tbcv_rec.book_class_code = OKL_API.G_MISS_CHAR ) THEN
526       l_tbcv_rec.book_class_code := NULL;
527     END IF;
528     IF (l_tbcv_rec.date_effective_from = OKL_API.G_MISS_DATE ) THEN
529       l_tbcv_rec.date_effective_from := NULL;
530     END IF;
531     IF (l_tbcv_rec.date_effective_to = OKL_API.G_MISS_DATE ) THEN
532       l_tbcv_rec.date_effective_to := NULL;
533     END IF;
534     IF (l_tbcv_rec.tax_country_code = OKL_API.G_MISS_CHAR ) THEN
535       l_tbcv_rec.tax_country_code := NULL;
536     END IF;
537     IF (l_tbcv_rec.term_quote_type_code = OKL_API.G_MISS_CHAR ) THEN
538       l_tbcv_rec.term_quote_type_code := NULL;
539     END IF;
540     IF (l_tbcv_rec.term_quote_reason_code = OKL_API.G_MISS_CHAR ) THEN
541       l_tbcv_rec.term_quote_reason_code := NULL;
542     END IF;
543     IF (l_tbcv_rec.expire_flag = OKL_API.G_MISS_CHAR ) THEN
544       l_tbcv_rec.expire_flag := NULL;
545     END IF;
546     -- modified by dcshanmu for eBTax project - modification end
547 
548     RETURN(l_tbcv_rec);
549   END null_out_defaults;
550   ---------------------------------
551   -- Validate_Attributes for: ID --
552   ---------------------------------
553  /* PROCEDURE validate_id(
554     x_return_status                OUT NOCOPY VARCHAR2,
555     p_tbcv_rec                     IN tbcv_rec_type) IS
556     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
557   BEGIN
558 
559     IF (p_tbcv_rec.id = OKL_API.G_MISS_NUM OR p_tbcv_rec.id IS NULL)
560     THEN
561       OKl_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TAX_ATTRIBUTE_DEF_ID');
562       l_return_status := OKL_API.G_RET_STS_ERROR;
563 
564     END IF;
565     x_return_status := l_return_status;
566   EXCEPTION
567 
568     WHEN OTHERS THEN
569       OKl_API.SET_MESSAGE( p_app_name     => G_APP_NAME
570                           ,p_msg_name     => G_UNEXPECTED_ERROR
571                           ,p_token1       => G_SQLCODE_TOKEN
572                           ,p_token1_value => SQLCODE
573                           ,p_token2       => G_SQLERRM_TOKEN
574                           ,p_token2_value => SQLERRM);
575       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
576   END validate_id;*/
577 
578   -- modified by dcshanmu for eBTax project - modification start
579   -- modified tbc_code to result_code due to datamodel change
580   ---------------------------------------
581   -- Validate_Attributes for: RESULT_CODE --
582   ---------------------------------------
583   PROCEDURE validate_result_code(
584     x_return_status                OUT NOCOPY VARCHAR2,
585     p_tbcv_rec                     IN tbcv_rec_type) IS
586     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
587     l_dummy_var         VARCHAR2(1) := '?' ;
588 
589     CURSOR okl_tbc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
590       SELECT 'x'
591       FROM zx_fc_business_categories_v
592       WHERE classification_code = p_lookup_code;
593 
594     CURSOR okl_pc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
595       SELECT 'x'
596       FROM zx_fc_product_categories_v
597       WHERE classification_code = p_lookup_code;
598 
599     CURSOR okl_ufc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
600       SELECT 'x'
601       FROM zx_fc_user_defined_v
602       WHERE classification_code = p_lookup_code;
603 
604   BEGIN
605 
606     IF (p_tbcv_rec.result_code = OKL_API.G_MISS_CHAR OR p_tbcv_rec.result_code IS NULL)
607     THEN
608       Okl_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'result_code');
609       l_return_status := OKL_API.G_RET_STS_ERROR;
610     ELSE
611         -- enforce foreign key
612 
613         IF (p_tbcv_rec.result_type_code = 'TBC_CODE')
614         THEN
615                 OPEN   okl_tbc_res_code_fk_csr(p_tbcv_rec.result_code)  ;
616                 FETCH  okl_tbc_res_code_fk_csr into l_dummy_var ;
617                 CLOSE  okl_tbc_res_code_fk_csr ;
618 
619                 -- still set to default means data was not found
620                 IF ( l_dummy_var = '?' ) THEN
621 
622                    OKC_API.set_message(g_app_name,
623                                 g_no_parent_record,
624                                 g_col_name_token,
625                                 'result_code',
626                                 g_child_table_token ,
627                                 'OKL_TAX_ATTR_DEFINITIONS',
628                                 g_parent_table_token ,
629                                 'ZX_FC_BUSINESS_CATEGORIES_V');
630                     l_return_status := OKC_API.G_RET_STS_ERROR;
631 
632                 END IF;
633         ELSIF (p_tbcv_rec.result_type_code = 'PC_CODE')
634         THEN
635                 OPEN   okl_pc_res_code_fk_csr(p_tbcv_rec.result_code)  ;
636                 FETCH  okl_pc_res_code_fk_csr into l_dummy_var ;
637                 CLOSE  okl_pc_res_code_fk_csr ;
638 
639                 -- still set to default means data was not found
640                 IF ( l_dummy_var = '?' ) THEN
641 
642                    OKC_API.set_message(g_app_name,
643                                 g_no_parent_record,
644                                 g_col_name_token,
645                                 'result_code',
646                                 g_child_table_token ,
647                                 'OKL_TAX_ATTR_DEFINITIONS',
648                                 g_parent_table_token ,
649                                 'ZX_FC_PRODUCT_CATEGORIES_V');
650                     l_return_status := OKC_API.G_RET_STS_ERROR;
651 
652                 END IF;
653         ELSIF (p_tbcv_rec.result_type_code = 'UFC_CODE')
654         THEN
655                 OPEN   okl_ufc_res_code_fk_csr(p_tbcv_rec.result_code)  ;
656                 FETCH  okl_ufc_res_code_fk_csr into l_dummy_var ;
657                 CLOSE  okl_ufc_res_code_fk_csr ;
658 
659                 -- still set to default means data was not found
660                 IF ( l_dummy_var = '?' ) THEN
661 
662                    OKC_API.set_message(g_app_name,
663                                 g_no_parent_record,
664                                 g_col_name_token,
665                                 'result_code',
666                                 g_child_table_token ,
667                                 'OKL_TAX_ATTR_DEFINITIONS',
668                                 g_parent_table_token ,
669                                 'ZX_FC_USER_DEFINED_V');
670                     l_return_status := OKC_API.G_RET_STS_ERROR;
671 
672                 END IF;
673         END IF;
674 
675 
676     END IF;
677     x_return_status := l_return_status;
678   EXCEPTION
679 
680     WHEN OTHERS THEN
681       OKl_API.SET_MESSAGE( p_app_name     => G_APP_NAME
682                           ,p_msg_name     => G_UNEXPECTED_ERROR
683                           ,p_token1       => G_SQLCODE_TOKEN
684                           ,p_token1_value => SQLCODE
685                           ,p_token2       => G_SQLERRM_TOKEN
686                           ,p_token2_value => SQLERRM);
687       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
688   END validate_result_code;
689 -- modified by dcshanmu for eBTax project - modification end
690 
691   ---------------------------------------------------
692   -- Validate_Attributes for: PURCHASE_OPTION_CODE --
693   ---------------------------------------------------
694   PROCEDURE validate_purchase_option_code(
695     x_return_status                OUT NOCOPY VARCHAR2,
696     p_tbcv_rec                     IN tbcv_rec_type) IS
697     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
698 
699     l_dummy_var         VARCHAR2(1) := '?' ;
700 
701     CURSOR okl_tbcv_prch_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
702       SELECT 'x'
703       FROM Fnd_Lookup_Values
704       WHERE fnd_lookup_values.lookup_code = p_lookup_code
705       AND   fnd_lookup_values.lookup_type = p_lookup_type;
706 
707   BEGIN
708 
709     IF (p_tbcv_rec.purchase_option_code <> OKL_API.G_MISS_CHAR AND p_tbcv_rec.purchase_option_code IS NOT NULL)
710     THEN
711       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'purchase_option_code');
712       --l_return_status := OKL_API.G_RET_STS_ERROR;
713     --ELSE
714             -- enforce foreign key
715 
716         OPEN   okl_tbcv_prch_fk_csr(p_tbcv_rec.purchase_option_code, 'OKL_EOT_OPTION')  ;
717         FETCH  okl_tbcv_prch_fk_csr into l_dummy_var ;
718         CLOSE  okl_tbcv_prch_fk_csr ;
719         -- still set to default means data was not found
720         IF ( l_dummy_var = '?' ) THEN
721            OKC_API.set_message(g_app_name,
722                         g_no_parent_record,
723                         g_col_name_token,
724                         'purchase_option_code',
725                         g_child_table_token ,
726                         'OKL_TAX_ATTR_DEFINITIONS',
727                         g_parent_table_token ,
728                         'FND_LOOKUP_VALUES');
729             l_return_status := OKC_API.G_RET_STS_ERROR;
730 
731         END IF;
732     END IF;
733     x_return_status := l_return_status;
734   EXCEPTION
735 
736     WHEN OTHERS THEN
737       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
738                           ,p_msg_name     => G_UNEXPECTED_ERROR
739                           ,p_token1       => G_SQLCODE_TOKEN
740                           ,p_token1_value => SQLCODE
741                           ,p_token2       => G_SQLERRM_TOKEN
742                           ,p_token2_value => SQLERRM);
743       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
744   END validate_purchase_option_code;
745   -------------------------------------
746   -- Validate_Attributes for: PDT_ID --
747   -------------------------------------
748   PROCEDURE validate_pdt_id(
749     x_return_status                OUT NOCOPY VARCHAR2,
750     p_tbcv_rec                     IN tbcv_rec_type) IS
751     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
752 
753     l_dummy_var         VARCHAR2(1) := '?' ;
754 
755     CURSOR okl_tbcv_pdt_fk_csr (p_id IN NUMBER) IS
756       SELECT 'x'
757       FROM   OKL_PRODUCTS
758       WHERE  id = p_id
759       AND  product_status_code  = 'APPROVED';
760 
761   BEGIN
762 
763     IF (p_tbcv_rec.pdt_id <> OKL_API.G_MISS_NUM AND p_tbcv_rec.pdt_id IS NOT NULL)
764     THEN
765       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'pdt_id');
766       --l_return_status := OKL_API.G_RET_STS_ERROR;
767     --ELSE
768       -- enforce foreign key
769       OPEN   okl_tbcv_pdt_fk_csr(p_tbcv_rec.pdt_id) ;
770       FETCH  okl_tbcv_pdt_fk_csr into l_dummy_var ;
771       CLOSE  okl_tbcv_pdt_fk_csr ;
772       -- still set to default means data was not found
773       IF ( l_dummy_var = '?' ) THEN
774            OKC_API.set_message(g_app_name,
775                         g_no_parent_record,
776                         g_col_name_token,
777                         'pdt_id',
778                         g_child_table_token ,
779                         'OKL_TAX_ATTR_DEFINITIONS',
780                         g_parent_table_token ,
781                         'OKL_PRODUCTS');
782            l_return_status := OKC_API.G_RET_STS_ERROR;
783 
784       END IF;
785 
786     END IF;
787     x_return_status := l_return_status;
788   EXCEPTION
789 
790     WHEN OTHERS THEN
791       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
792                           ,p_msg_name     => G_UNEXPECTED_ERROR
793                           ,p_token1       => G_SQLCODE_TOKEN
794                           ,p_token1_value => SQLCODE
795                           ,p_token2       => G_SQLERRM_TOKEN
796                           ,p_token2_value => SQLERRM);
797       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
798   END validate_pdt_id;
799   -------------------------------------
800   -- Validate_Attributes for: TRY_ID --
801   -------------------------------------
802   PROCEDURE validate_try_id(
803     x_return_status                OUT NOCOPY VARCHAR2,
804     p_tbcv_rec                     IN tbcv_rec_type) IS
805     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
806 
807     l_dummy_var         VARCHAR2(1) := '?' ;
808 
809     CURSOR okl_tbcv_try_fk_csr (p_id IN NUMBER) IS
810       SELECT 'x'
811       FROM   OKL_TRX_TYPES_B
812       WHERE  id = p_id;
813 
814   BEGIN
815 
816     IF (p_tbcv_rec.try_id <> OKL_API.G_MISS_NUM AND p_tbcv_rec.try_id IS NOT NULL)
817     THEN
818       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'try_id');
819       --l_return_status := OKL_API.G_RET_STS_ERROR;
820     --ELSE
821           -- enforce foreign key
822       OPEN   okl_tbcv_try_fk_csr(p_tbcv_rec.try_id) ;
823       FETCH  okl_tbcv_try_fk_csr into l_dummy_var ;
824       CLOSE  okl_tbcv_try_fk_csr ;
825       -- still set to default means data was not found
826       IF ( l_dummy_var = '?' ) THEN
827            OKC_API.set_message(g_app_name,
828                         g_no_parent_record,
829                         g_col_name_token,
830                         'try_id',
831                         g_child_table_token ,
832                         'OKL_TAX_ATTR_DEFINITIONS',
833                         g_parent_table_token ,
834                         'OKL_TRX_TYPES_B');
835            l_return_status := OKC_API.G_RET_STS_ERROR;
836 
837       END IF;
838     END IF;
839     x_return_status := l_return_status;
840   EXCEPTION
841 
842     WHEN OTHERS THEN
843       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
844                           ,p_msg_name     => G_UNEXPECTED_ERROR
845                           ,p_token1       => G_SQLCODE_TOKEN
846                           ,p_token1_value => SQLCODE
847                           ,p_token2       => G_SQLERRM_TOKEN
848                           ,p_token2_value => SQLERRM);
849       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
850   END validate_try_id;
851   -------------------------------------
852   -- Validate_Attributes for: STY_ID --
853   -------------------------------------
854   PROCEDURE validate_sty_id(
855     x_return_status                OUT NOCOPY VARCHAR2,
856     p_tbcv_rec                     IN tbcv_rec_type) IS
857     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
858 
859     l_dummy_var         VARCHAR2(1) := '?' ;
860 
861     CURSOR okl_tbcv_sty_fk_csr (p_id IN NUMBER) IS
862       SELECT 'x'
863       FROM   OKL_STRM_TYPE_B
864       WHERE  id = p_id;
865 
866   BEGIN
867 
868     IF (p_tbcv_rec.sty_id <> OKL_API.G_MISS_NUM AND p_tbcv_rec.sty_id IS NOT NULL)
869     THEN
870       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'sty_id');
871       --l_return_status := OKL_API.G_RET_STS_ERROR;
872     --ELSE
873           -- enforce foreign key
874       OPEN   okl_tbcv_sty_fk_csr(p_tbcv_rec.sty_id) ;
875       FETCH  okl_tbcv_sty_fk_csr into l_dummy_var ;
876       CLOSE  okl_tbcv_sty_fk_csr ;
877       -- still set to default means data was not found
878       IF ( l_dummy_var = '?' ) THEN
879            OKC_API.set_message(g_app_name,
880                         g_no_parent_record,
881                         g_col_name_token,
882                         'sty_id',
883                         g_child_table_token ,
884                         'OKL_TAX_ATTR_DEFINITIONS',
885                         g_parent_table_token ,
886                         'OKL_STRM_TYPE_B');
887            l_return_status := OKC_API.G_RET_STS_ERROR;
888 
889       END IF;
890     END IF;
891     x_return_status := l_return_status;
892   EXCEPTION
893 
894     WHEN OTHERS THEN
895       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
896                           ,p_msg_name     => G_UNEXPECTED_ERROR
897                           ,p_token1       => G_SQLCODE_TOKEN
898                           ,p_token1_value => SQLCODE
899                           ,p_token2       => G_SQLERRM_TOKEN
900                           ,p_token2_value => SQLERRM);
901       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
902   END validate_sty_id;
903   -------------------------------------------------
904   -- Validate_Attributes for: INT_DISCLOSED_CODE --
905   -------------------------------------------------
906   PROCEDURE validate_int_disclosed_code(
907     x_return_status                OUT NOCOPY VARCHAR2,
908     p_tbcv_rec                     IN tbcv_rec_type) IS
909     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
910 
911     l_dummy_var         VARCHAR2(1) := '?' ;
912 
913     CURSOR okl_tbcv_int_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
914       SELECT 'x'
915       FROM Fnd_Lookup_Values
916       WHERE fnd_lookup_values.lookup_code = p_lookup_code
917       AND   fnd_lookup_values.lookup_type = p_lookup_type;
918   BEGIN
919 
920     IF (p_tbcv_rec.int_disclosed_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.int_disclosed_code IS NOT NULL)
921     THEN
922       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'int_disclosed_code');
923       --l_return_status := OKL_API.G_RET_STS_ERROR;
924     --ELSE
925           -- enforce foreign key
926         OPEN   okl_tbcv_int_fk_csr(p_tbcv_rec.int_disclosed_code, 'YES_NO')  ;
927         FETCH  okl_tbcv_int_fk_csr INTO l_dummy_var ;
928         CLOSE  okl_tbcv_int_fk_csr ;
929         -- still set to default means data was not found
930         IF ( l_dummy_var = '?' ) THEN
931            OKC_API.set_message(g_app_name,
932                         g_no_parent_record,
933                         g_col_name_token,
934                         'int_disclosed_code',
935                         g_child_table_token ,
936                         'OKL_TAX_ATTR_DEFINITIONS',
937                         g_parent_table_token ,
938                         'FND_LOOKUP_VALUES');
939             l_return_status := OKC_API.G_RET_STS_ERROR;
940 
941         END IF;
942     END IF;
943     x_return_status := l_return_status;
944   EXCEPTION
945 
946     WHEN OTHERS THEN
947       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
948                           ,p_msg_name     => G_UNEXPECTED_ERROR
949                           ,p_token1       => G_SQLCODE_TOKEN
950                           ,p_token1_value => SQLCODE
951                           ,p_token2       => G_SQLERRM_TOKEN
952                           ,p_token2_value => SQLERRM);
953       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
954   END validate_int_disclosed_code;
955   ------------------------------------------------
956   -- Validate_Attributes for: TITLE_TRNSFR_CODE --
957   ------------------------------------------------
958 
959   PROCEDURE validate_title_trnsfr_code(
960     x_return_status                OUT NOCOPY VARCHAR2,
961     p_tbcv_rec                     IN tbcv_rec_type) IS
962     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
963 
964     l_dummy_var         VARCHAR2(1) := '?' ;
965 
966     CURSOR okl_tbcv_title_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
967       SELECT 'x'
968       FROM Fnd_Lookup_Values
969       WHERE fnd_lookup_values.lookup_code = p_lookup_code
970       AND   fnd_lookup_values.lookup_type = p_lookup_type;
971   BEGIN
972 
973     IF (p_tbcv_rec.title_trnsfr_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.title_trnsfr_code IS NOT NULL)
974     THEN
975         OPEN   okl_tbcv_title_fk_csr(p_tbcv_rec.title_trnsfr_code, 'YES_NO')  ;
976         FETCH  okl_tbcv_title_fk_csr INTO l_dummy_var ;
977         CLOSE  okl_tbcv_title_fk_csr ;
978         -- still set to default means data was not found
979         IF ( l_dummy_var = '?' ) THEN
980            OKC_API.set_message(g_app_name,
981                         g_no_parent_record,
982                         g_col_name_token,
983                         'title_trnsfr_code',
984                         g_child_table_token ,
985                         'OKL_TAX_ATTR_DEFINITIONS',
986                         g_parent_table_token ,
987                         'FND_LOOKUP_VALUES');
988             l_return_status := OKC_API.G_RET_STS_ERROR;
989 
990         END IF;
991     END IF;
992     x_return_status := l_return_status;
993   EXCEPTION
994 
995     WHEN OTHERS THEN
996       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
997                           ,p_msg_name     => G_UNEXPECTED_ERROR
998                           ,p_token1       => G_SQLCODE_TOKEN
999                           ,p_token1_value => SQLCODE
1000                           ,p_token2       => G_SQLERRM_TOKEN
1001                           ,p_token2_value => SQLERRM);
1002       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1003   END validate_title_trnsfr_code;
1004   ---------------------------------------------------
1005   -- Validate_Attributes for: SALE_LEASE_BACK_CODE --
1006   ---------------------------------------------------
1007   PROCEDURE validate_sale_lease_back_code(
1008     x_return_status                OUT NOCOPY VARCHAR2,
1009     p_tbcv_rec                     IN tbcv_rec_type) IS
1010     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1011 
1012     l_dummy_var         VARCHAR2(1) := '?' ;
1013 
1014     CURSOR okl_tbcv_salelease_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
1015       SELECT 'x'
1016       FROM Fnd_Lookup_Values
1017       WHERE fnd_lookup_values.lookup_code = p_lookup_code
1018       AND   fnd_lookup_values.lookup_type = p_lookup_type;
1019   BEGIN
1020 
1021     IF (p_tbcv_rec.sale_lease_back_code <> OKL_API.G_MISS_CHAR AND   p_tbcv_rec.sale_lease_back_code IS NOT NULL)
1022     THEN
1023       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'sale_lease_back_code');
1024       --l_return_status := OKL_API.G_RET_STS_ERROR;
1025     --ELSE
1026         -- enforce foreign key
1027         OPEN   okl_tbcv_salelease_fk_csr(p_tbcv_rec.sale_lease_back_code, 'YES_NO')  ;
1028         FETCH  okl_tbcv_salelease_fk_csr INTO l_dummy_var ;
1029         CLOSE  okl_tbcv_salelease_fk_csr ;
1030         -- still set to default means data was not found
1031         IF ( l_dummy_var = '?' ) THEN
1032            OKC_API.set_message(g_app_name,
1033                         g_no_parent_record,
1034                         g_col_name_token,
1035                         'sale_lease_back_code',
1036                         g_child_table_token ,
1037                         'OKL_TAX_ATTR_DEFINITIONS',
1038                         g_parent_table_token ,
1039                         'FND_LOOKUP_VALUES');
1040             l_return_status := OKC_API.G_RET_STS_ERROR;
1041         END IF;
1042     END IF;
1043     x_return_status := l_return_status;
1044   EXCEPTION
1045 
1046     WHEN OTHERS THEN
1047       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1048                           ,p_msg_name     => G_UNEXPECTED_ERROR
1049                           ,p_token1       => G_SQLCODE_TOKEN
1050                           ,p_token1_value => SQLCODE
1051                           ,p_token2       => G_SQLERRM_TOKEN
1052                           ,p_token2_value => SQLERRM);
1053       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1054   END validate_sale_lease_back_code;
1055   ---------------------------------------------------
1056   -- Validate_Attributes for: LEASE_PURCHASED_CODE --
1057   ---------------------------------------------------
1058   PROCEDURE validate_lease_purchased_code(
1059     x_return_status                OUT NOCOPY VARCHAR2,
1060     p_tbcv_rec                     IN tbcv_rec_type) IS
1061     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1062 
1063     l_dummy_var         VARCHAR2(1) := '?' ;
1064 
1065     CURSOR okl_tbcv_saleprch_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
1066       SELECT 'x'
1067       FROM Fnd_Lookup_Values
1068       WHERE fnd_lookup_values.lookup_code = p_lookup_code
1069       AND   fnd_lookup_values.lookup_type = p_lookup_type;
1070   BEGIN
1071 
1072     IF (p_tbcv_rec.lease_purchased_code <> OKL_API.G_MISS_CHAR AND p_tbcv_rec.lease_purchased_code IS NOT NULL)
1073     THEN
1074       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'lease_purchased_code');
1075       --l_return_status := OKL_API.G_RET_STS_ERROR;
1076     --ELSE
1077         -- enforce foreign key
1078         OPEN   okl_tbcv_saleprch_fk_csr(p_tbcv_rec.lease_purchased_code, 'YES_NO')  ;
1079         FETCH  okl_tbcv_saleprch_fk_csr INTO l_dummy_var ;
1080         CLOSE  okl_tbcv_saleprch_fk_csr ;
1081         -- still set to default means data was not found
1082         IF ( l_dummy_var = '?' ) THEN
1083            OKC_API.set_message(g_app_name,
1084                         g_no_parent_record,
1085                         g_col_name_token,
1086                         'lease_purchased_code',
1087                         g_child_table_token ,
1088                         'OKL_TAX_ATTR_DEFINITIONS',
1089                         g_parent_table_token ,
1090                         'FND_LOOKUP_VALUES');
1091             l_return_status := OKC_API.G_RET_STS_ERROR;
1092         END IF;
1093     END IF;
1094     x_return_status := l_return_status;
1095   EXCEPTION
1096 
1097     WHEN OTHERS THEN
1098       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1099                           ,p_msg_name     => G_UNEXPECTED_ERROR
1100                           ,p_token1       => G_SQLCODE_TOKEN
1101                           ,p_token1_value => SQLCODE
1102                           ,p_token2       => G_SQLERRM_TOKEN
1103                           ,p_token2_value => SQLERRM);
1104       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1105   END validate_lease_purchased_code;
1106   -----------------------------------------------
1107   -- Validate_Attributes for: EQUIP_USAGE_CODE --
1108   -----------------------------------------------
1109 
1110   PROCEDURE validate_equip_usage_code(
1111     x_return_status                OUT NOCOPY VARCHAR2,
1112     p_tbcv_rec                     IN tbcv_rec_type) IS
1113     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1114 
1115     l_dummy_var         VARCHAR2(1) := '?' ;
1116 
1117     CURSOR okl_tbcv_equsg_fk_csr (p_lookup_code IN VARCHAR2) IS
1118       SELECT 'x'
1119       FROM zx_fc_intended_use_v
1120       WHERE classification_code = p_lookup_code;
1121 
1122   BEGIN
1123 
1124     IF (p_tbcv_rec.equip_usage_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.equip_usage_code IS NOT NULL)
1125     THEN
1126       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'equip_usage_code');
1127       --l_return_status := OKL_API.G_RET_STS_ERROR;
1128     --ELSE
1129         -- enforce foreign key
1130         OPEN   okl_tbcv_equsg_fk_csr(p_tbcv_rec.equip_usage_code)  ;
1131         FETCH  okl_tbcv_equsg_fk_csr INTO l_dummy_var ;
1132         CLOSE  okl_tbcv_equsg_fk_csr ;
1133         -- still set to default means data was not found
1134         IF ( l_dummy_var = '?' ) THEN
1135            OKC_API.set_message(g_app_name,
1136                         g_no_parent_record,
1137                         g_col_name_token,
1138                         'equip_usage_code',
1139                         g_child_table_token ,
1140                         'OKL_TAX_ATTR_DEFINITIONS',
1141                         g_parent_table_token ,
1142                         'ZX_FC_INTENDED_USE_V');
1143             l_return_status := OKC_API.G_RET_STS_ERROR;
1144         END IF;
1145     END IF;
1146     x_return_status := l_return_status;
1147   EXCEPTION
1148 
1149     WHEN OTHERS THEN
1150       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1151                           ,p_msg_name     => G_UNEXPECTED_ERROR
1152                           ,p_token1       => G_SQLCODE_TOKEN
1153                           ,p_token1_value => SQLCODE
1154                           ,p_token2       => G_SQLERRM_TOKEN
1155                           ,p_token2_value => SQLERRM);
1156       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1157   END validate_equip_usage_code;
1158   ---------------------------------------------
1159   -- Validate_Attributes for: VENDOR_SITE_ID --
1160   ---------------------------------------------
1161   PROCEDURE validate_vendor_site_id(
1162     x_return_status                OUT NOCOPY VARCHAR2,
1163     p_tbcv_rec                     IN tbcv_rec_type) IS
1164     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1165 
1166     l_dummy_var         VARCHAR2(1) := '?' ;
1167 
1168     CURSOR okl_tbcv_vsite_fk_csr (p_id IN NUMBER) IS
1169       SELECT 'x'
1170       FROM   Po_vendor_sites_all
1171       WHERE  vendor_site_id = p_id;
1172   BEGIN
1173 
1174     IF (p_tbcv_rec.vendor_site_id <> OKL_API.G_MISS_NUM AND  p_tbcv_rec.vendor_site_id IS NOT NULL)
1175     THEN
1176       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'vendor_site_id');
1177       --l_return_status := OKL_API.G_RET_STS_ERROR;
1178     --ELSE
1179           -- enforce foreign key
1180       OPEN   okl_tbcv_vsite_fk_csr(p_tbcv_rec.vendor_site_id) ;
1181       FETCH  okl_tbcv_vsite_fk_csr into l_dummy_var ;
1182       CLOSE  okl_tbcv_vsite_fk_csr ;
1183       -- still set to default means data was not found
1184       IF ( l_dummy_var = '?' ) THEN
1185            OKC_API.set_message(g_app_name,
1186                         g_no_parent_record,
1187                         g_col_name_token,
1188                         'vendor_site_id',
1189                         g_child_table_token ,
1190                         'OKL_TAX_ATTR_DEFINITIONS',
1191                         g_parent_table_token ,
1192                         'Po_vendor_sites_all');
1193            l_return_status := OKC_API.G_RET_STS_ERROR;
1194 
1195       END IF;
1196     END IF;
1197     x_return_status := l_return_status;
1198   EXCEPTION
1199 
1200     WHEN OTHERS THEN
1201       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1202                           ,p_msg_name     => G_UNEXPECTED_ERROR
1203                           ,p_token1       => G_SQLCODE_TOKEN
1204                           ,p_token1_value => SQLCODE
1205                           ,p_token2       => G_SQLERRM_TOKEN
1206                           ,p_token2_value => SQLERRM);
1207       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1208   END validate_vendor_site_id;
1209 
1210 
1211   -------------------------------------
1212   -- Validate_Attributes for: age_of_equipment_from --
1213   -------------------------------------
1214   PROCEDURE validate_AGE_OF_EQUIP_FROM(
1215     x_return_status                OUT NOCOPY VARCHAR2,
1216     p_tbcv_rec                     IN tbcv_rec_type) IS
1217     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1218 
1219 
1220   BEGIN
1221 
1222     IF (p_tbcv_rec.AGE_OF_EQUIP_FROM <> OKL_API.G_MISS_NUM AND p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL)
1223     THEN
1224       IF p_tbcv_rec.AGE_OF_EQUIP_FROM < 0 THEN
1225          l_return_status := OKC_API.G_RET_STS_ERROR;
1226              --Unable to create Transcation Business Category definition as none of the attributes are provided.
1227          OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'AGE_OF_EQUIP_FROM');
1228 
1229       END IF;
1230     END IF;
1231     x_return_status := l_return_status;
1232   EXCEPTION
1233 
1234     WHEN OTHERS THEN
1235       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1236                           ,p_msg_name     => G_UNEXPECTED_ERROR
1237                           ,p_token1       => G_SQLCODE_TOKEN
1238                           ,p_token1_value => SQLCODE
1239                           ,p_token2       => G_SQLERRM_TOKEN
1240                           ,p_token2_value => SQLERRM);
1241       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1242   END validate_AGE_OF_EQUIP_FROM;
1243 
1244     -------------------------------------
1245   -- Validate_Attributes for: age_of_equipment_to --
1246   -------------------------------------
1247   PROCEDURE validate_AGE_OF_EQUIP_TO(
1248     x_return_status                OUT NOCOPY VARCHAR2,
1249     p_tbcv_rec                     IN tbcv_rec_type) IS
1250     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1251 
1252 
1253   BEGIN
1254 
1255     IF (p_tbcv_rec.AGE_OF_EQUIP_TO <> OKL_API.G_MISS_NUM AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL)
1256     THEN
1257       IF p_tbcv_rec.AGE_OF_EQUIP_TO < 0 THEN
1258          l_return_status := OKC_API.G_RET_STS_ERROR;
1259              --Unable to create Transcation Business Category definition as none of the attributes are provided.
1260          OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'AGE_OF_EQUIP_TO');
1261 
1262       END IF;
1263     END IF;
1264     x_return_status := l_return_status;
1265   EXCEPTION
1266 
1267     WHEN OTHERS THEN
1268       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1269                           ,p_msg_name     => G_UNEXPECTED_ERROR
1270                           ,p_token1       => G_SQLCODE_TOKEN
1271                           ,p_token1_value => SQLCODE
1272                           ,p_token2       => G_SQLERRM_TOKEN
1273                           ,p_token2_value => SQLERRM);
1274       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1275   END validate_AGE_OF_EQUIP_TO;
1276 
1277   ----------------------------------------------------
1278   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
1279   ----------------------------------------------------
1280   PROCEDURE validate_object_version_number(
1281     x_return_status                OUT NOCOPY VARCHAR2,
1282     p_tbcv_rec                     IN tbcv_rec_type) IS
1283     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1284   BEGIN
1285 
1286     IF (p_tbcv_rec.object_version_number = OKL_API.G_MISS_NUM OR  p_tbcv_rec.object_version_number IS NULL)
1287     THEN
1288       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
1289       l_return_status := OKL_API.G_RET_STS_ERROR;
1290 
1291     END IF;
1292     x_return_status := l_return_status;
1293   EXCEPTION
1294 
1295     WHEN OTHERS THEN
1296       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1297                           ,p_msg_name     => G_UNEXPECTED_ERROR
1298                           ,p_token1       => G_SQLCODE_TOKEN
1299                           ,p_token1_value => SQLCODE
1300                           ,p_token2       => G_SQLERRM_TOKEN
1301                           ,p_token2_value => SQLERRM);
1302       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1303   END validate_object_version_number;
1304 
1305 -- modified by dcshanmu for eBTax project - modification start
1306 -- adding validation methods for new columns
1307   ----------------------------------------------------
1308   -- Validate_Attributes for: RESULT_TYPE_CODE --
1309   ----------------------------------------------------
1310   PROCEDURE validate_result_type_code(
1311     x_return_status                OUT NOCOPY VARCHAR2,
1312     p_tbcv_rec                     IN tbcv_rec_type) IS
1313     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1314     l_dummy_var         VARCHAR2(1) := '?' ;
1315 
1316     CURSOR okl_tbcv_res_type_fk_csr (p_id IN VARCHAR2) IS
1317       SELECT 'x'
1318       FROM   fnd_lookups
1319       WHERE  lookup_code = p_id
1320       AND lookup_type='OKL_TAX_ATTR_TYPE_CODE';
1321   BEGIN
1322 
1323     IF (p_tbcv_rec.result_type_code <> OKL_API.G_MISS_CHAR OR  p_tbcv_rec.result_type_code IS NOT NULL)
1324     THEN
1325       OPEN   okl_tbcv_res_type_fk_csr(p_tbcv_rec.result_type_code) ;
1326       FETCH  okl_tbcv_res_type_fk_csr into l_dummy_var ;
1327       CLOSE  okl_tbcv_res_type_fk_csr ;
1328       -- still set to default means data was not found
1329       IF ( l_dummy_var = '?' ) THEN
1330            OKC_API.set_message(g_app_name,
1331                         g_no_parent_record,
1332                         g_col_name_token,
1333                         'result_type_code',
1334                         g_child_table_token ,
1335                         'OKL_TAX_ATTR_DEFINITIONS',
1336                         g_parent_table_token ,
1337                         'FND_LOOKUPS');
1338            l_return_status := OKC_API.G_RET_STS_ERROR;
1339 
1340       END IF;
1341     END IF;
1342     x_return_status := l_return_status;
1343   EXCEPTION
1344 
1345     WHEN OTHERS THEN
1346       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1347                           ,p_msg_name     => G_UNEXPECTED_ERROR
1348                           ,p_token1       => G_SQLCODE_TOKEN
1349                           ,p_token1_value => SQLCODE
1350                           ,p_token2       => G_SQLERRM_TOKEN
1351                           ,p_token2_value => SQLERRM);
1352       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1353   END validate_result_type_code;
1354 
1355   ----------------------------------------------------
1356   -- Validate_Attributes for: BOOK_CLASS_CODE --
1357   ----------------------------------------------------
1358   PROCEDURE validate_book_class_code(
1359     x_return_status                OUT NOCOPY VARCHAR2,
1360     p_tbcv_rec                     IN tbcv_rec_type) IS
1361     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1362     l_dummy_var         VARCHAR2(1) := '?' ;
1363 
1364     CURSOR okl_tbcv_bc_fk_csr (p_id IN VARCHAR2) IS
1365       SELECT 'x'
1366       FROM   fnd_lookups
1367       WHERE  lookup_code = p_id
1368       AND lookup_type='OKL_BOOK_CLASS';
1369   BEGIN
1370 
1371     IF (p_tbcv_rec.book_class_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.book_class_code IS NOT NULL)
1372     THEN
1373       OPEN   okl_tbcv_bc_fk_csr(p_tbcv_rec.book_class_code) ;
1374       FETCH  okl_tbcv_bc_fk_csr into l_dummy_var ;
1375       CLOSE  okl_tbcv_bc_fk_csr ;
1376       -- still set to default means data was not found
1377       IF ( l_dummy_var = '?' ) THEN
1378            OKC_API.set_message(g_app_name,
1379                         g_no_parent_record,
1380                         g_col_name_token,
1381                         'book_class_code',
1382                         g_child_table_token ,
1383                         'OKL_TAX_ATTR_DEFINITIONS',
1384                         g_parent_table_token ,
1385                         'FND_LOOKUPS');
1386            l_return_status := OKC_API.G_RET_STS_ERROR;
1387 
1388       END IF;
1389     END IF;
1390     x_return_status := l_return_status;
1391   EXCEPTION
1392 
1393     WHEN OTHERS THEN
1394       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1395                           ,p_msg_name     => G_UNEXPECTED_ERROR
1396                           ,p_token1       => G_SQLCODE_TOKEN
1397                           ,p_token1_value => SQLCODE
1398                           ,p_token2       => G_SQLERRM_TOKEN
1399                           ,p_token2_value => SQLERRM);
1400       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1401   END validate_book_class_code;
1402 
1403   ----------------------------------------------------
1404   -- Validate_Attributes for: DATE_EFFECTIVE_TO --
1405   ----------------------------------------------------
1406   PROCEDURE validate_date_eff_to(
1407     x_return_status                OUT NOCOPY VARCHAR2,
1408     p_tbcv_rec                     IN tbcv_rec_type) IS
1409     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1410 
1411   BEGIN
1412 
1413     IF (p_tbcv_rec.date_effective_from <> OKL_API.G_MISS_DATE AND  p_tbcv_rec.date_effective_from IS NOT NULL
1414       AND p_tbcv_rec.date_effective_to <> OKL_API.G_MISS_DATE AND p_tbcv_rec.date_effective_to IS NOT NULL)
1415     THEN
1416       IF (TRUNC(p_tbcv_rec.date_effective_to) < TRUNC(p_tbcv_rec.date_effective_from)) THEN
1417            OKL_API.set_message(p_app_name => G_APP_NAME,
1418                         p_msg_name => 'OKL_AM_DATE_EFF_FROM_LESS_TO',
1419                         p_token1 => 'DATE_EFFECTIVE_TO',
1420                         p_token1_value => p_tbcv_rec.date_effective_to,
1421                         p_token2 => 'DATE_EFFECTIVE_FROM',
1422                         p_token2_value => p_tbcv_rec.date_effective_from);
1423            l_return_status := OKC_API.G_RET_STS_ERROR;
1424 
1425       END IF;
1426     END IF;
1427     x_return_status := l_return_status;
1428   EXCEPTION
1429 
1430     WHEN OTHERS THEN
1431       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1432                           ,p_msg_name     => G_UNEXPECTED_ERROR
1433                           ,p_token1       => G_SQLCODE_TOKEN
1434                           ,p_token1_value => SQLCODE
1435                           ,p_token2       => G_SQLERRM_TOKEN
1436                           ,p_token2_value => SQLERRM);
1437       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1438   END validate_date_eff_to;
1439 
1440   ----------------------------------------------------
1441   -- Validate_Attributes for: TAX_COUNTRY_CODE --
1442   ----------------------------------------------------
1443   PROCEDURE validate_tax_country_code(
1444     x_return_status                OUT NOCOPY VARCHAR2,
1445     p_tbcv_rec                     IN tbcv_rec_type) IS
1446     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1447     l_dummy_var         VARCHAR2(1) := '?' ;
1448 
1449     CURSOR okl_tbcv_tx_cntry_code_fk_csr (p_id IN VARCHAR2) IS
1450       SELECT 'x'
1451       FROM   fnd_territories_tl
1452       WHERE  territory_code = p_id;
1453 
1454   BEGIN
1455 
1456     IF (p_tbcv_rec.tax_country_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.tax_country_code IS NOT NULL)
1457     THEN
1458       OPEN   okl_tbcv_tx_cntry_code_fk_csr(p_tbcv_rec.tax_country_code) ;
1459       FETCH  okl_tbcv_tx_cntry_code_fk_csr into l_dummy_var ;
1460       CLOSE  okl_tbcv_tx_cntry_code_fk_csr ;
1461       -- still set to default means data was not found
1462       IF ( l_dummy_var = '?' ) THEN
1463            OKC_API.set_message(g_app_name,
1464                         g_no_parent_record,
1465                         g_col_name_token,
1466                         'tax_country_code',
1467                         g_child_table_token ,
1468                         'OKL_TAX_ATTR_DEFINITIONS',
1469                         g_parent_table_token ,
1470                         'FND_TERRITORIES_TL');
1471            l_return_status := OKC_API.G_RET_STS_ERROR;
1472 
1473       END IF;
1474     END IF;
1475     x_return_status := l_return_status;
1476   EXCEPTION
1477 
1478     WHEN OTHERS THEN
1479       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1480                           ,p_msg_name     => G_UNEXPECTED_ERROR
1481                           ,p_token1       => G_SQLCODE_TOKEN
1482                           ,p_token1_value => SQLCODE
1483                           ,p_token2       => G_SQLERRM_TOKEN
1484                           ,p_token2_value => SQLERRM);
1485       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1486   END validate_tax_country_code;
1487 
1488   ----------------------------------------------------
1489   -- Validate_Attributes for: TERM_QUOTE_TYPE_CODE --
1490   ----------------------------------------------------
1491   PROCEDURE validate_term_quote_type_code(
1492     x_return_status                OUT NOCOPY VARCHAR2,
1493     p_tbcv_rec                     IN tbcv_rec_type) IS
1494     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1495     l_dummy_var         VARCHAR2(1) := '?' ;
1496 
1497     CURSOR okl_tbcv_term_qtcode_fk_csr (p_id IN VARCHAR2) IS
1498       SELECT 'x'
1499       FROM   fnd_lookups
1500       WHERE  lookup_code = p_id
1501       AND lookup_type='OKL_QUOTE_TYPE';
1502 
1503   BEGIN
1504 
1505     IF (p_tbcv_rec.term_quote_type_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.term_quote_type_code IS NOT NULL)
1506     THEN
1507       OPEN   okl_tbcv_term_qtcode_fk_csr(p_tbcv_rec.term_quote_type_code) ;
1508       FETCH  okl_tbcv_term_qtcode_fk_csr into l_dummy_var ;
1509       CLOSE  okl_tbcv_term_qtcode_fk_csr ;
1510       -- still set to default means data was not found
1511       IF ( l_dummy_var = '?' ) THEN
1512            OKC_API.set_message(g_app_name,
1513                         g_no_parent_record,
1514                         g_col_name_token,
1515                         'term_quote_type_code',
1516                         g_child_table_token ,
1517                         'OKL_TAX_ATTR_DEFINITIONS',
1518                         g_parent_table_token ,
1519                         'FND_LOOKUPS');
1520            l_return_status := OKC_API.G_RET_STS_ERROR;
1521 
1522       END IF;
1523     END IF;
1524     x_return_status := l_return_status;
1525   EXCEPTION
1526 
1527     WHEN OTHERS THEN
1528       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1529                           ,p_msg_name     => G_UNEXPECTED_ERROR
1530                           ,p_token1       => G_SQLCODE_TOKEN
1531                           ,p_token1_value => SQLCODE
1532                           ,p_token2       => G_SQLERRM_TOKEN
1533                           ,p_token2_value => SQLERRM);
1534       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1535   END validate_term_quote_type_code;
1536 
1537   ----------------------------------------------------
1538   -- Validate_Attributes for: TERM_QUOTE_REASON_CODE --
1539   ----------------------------------------------------
1540   PROCEDURE validate_term_qt_reason_code(
1541     x_return_status                OUT NOCOPY VARCHAR2,
1542     p_tbcv_rec                     IN tbcv_rec_type) IS
1543     l_return_status     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1544     l_dummy_var         VARCHAR2(1) := '?' ;
1545 
1546     CURSOR okl_tbcv_term_qrcode_fk_csr (p_id IN VARCHAR2) IS
1547       SELECT 'x'
1548       FROM   fnd_lookups
1549       WHERE  lookup_code = p_id
1550       AND lookup_type='OKL_QUOTE_REASON';
1551 
1552   BEGIN
1553 
1554     IF (p_tbcv_rec.term_quote_reason_code <> OKL_API.G_MISS_CHAR AND  p_tbcv_rec.term_quote_reason_code IS NOT NULL)
1555     THEN
1556       OPEN   okl_tbcv_term_qrcode_fk_csr(p_tbcv_rec.term_quote_reason_code) ;
1557       FETCH  okl_tbcv_term_qrcode_fk_csr into l_dummy_var ;
1558       CLOSE  okl_tbcv_term_qrcode_fk_csr ;
1559       -- still set to default means data was not found
1560       IF ( l_dummy_var = '?' ) THEN
1561            OKC_API.set_message(g_app_name,
1562                         g_no_parent_record,
1563                         g_col_name_token,
1564                         'term_quote_reason_code',
1565                         g_child_table_token ,
1566                         'OKL_TAX_ATTR_DEFINITIONS',
1567                         g_parent_table_token ,
1568                         'FND_LOOKUPS');
1569            l_return_status := OKC_API.G_RET_STS_ERROR;
1570 
1571       END IF;
1572     END IF;
1573     x_return_status := l_return_status;
1574   EXCEPTION
1575 
1576     WHEN OTHERS THEN
1577       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1578                           ,p_msg_name     => G_UNEXPECTED_ERROR
1579                           ,p_token1       => G_SQLCODE_TOKEN
1580                           ,p_token1_value => SQLCODE
1581                           ,p_token2       => G_SQLERRM_TOKEN
1582                           ,p_token2_value => SQLERRM);
1583       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1584   END validate_term_qt_reason_code;
1585 -- modified by dcshanmu for eBTax project - modification end
1586 
1587   ---------------------------------------------------------------------------
1588   -- FUNCTION Validate_Attributes
1589   ---------------------------------------------------------------------------
1590   ---------------------------------------------------
1591   -- Validate_Attributes for:OKL_TAX_ATTR_DEFINITIONS --
1592   ---------------------------------------------------
1593   FUNCTION Validate_Attributes (
1594     p_tbcv_rec                     IN tbcv_rec_type
1595   ) RETURN VARCHAR2 IS
1596     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1597     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1598   BEGIN
1599     -----------------------------
1600     -- Column Level Validation --
1601     -----------------------------
1602     -- ***
1603     -- id
1604     -- ***
1605    /* validate_id(x_return_status, p_tbcv_rec);
1606     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1607       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1608           x_return_status := l_return_status;
1609           RAISE G_EXCEPTION_HALT_VALIDATION;
1610       ELSE
1611           x_return_status := l_return_status;
1612       END IF;
1613     END IF;
1614 */
1615 
1616     -- modified by dcshanmu for eBTax project - modification start
1617     -- modified tbc_code to result_code due to datamodel change
1618     -- ***
1619     -- result_code
1620     -- ***
1621     validate_result_code(l_return_status, p_tbcv_rec);
1622     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1623       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1624           x_return_status := l_return_status;
1625           RAISE G_EXCEPTION_HALT_VALIDATION;
1626       ELSE
1627           x_return_status := l_return_status;
1628       END IF;
1629     END IF;
1630     -- modified by dcshanmu for eBTax project - modification end
1631 
1632     -- ***
1633     -- purchase_option_code
1634     -- ***
1635     validate_purchase_option_code(l_return_status, p_tbcv_rec);
1636     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1637       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1638           x_return_status := l_return_status;
1639           RAISE G_EXCEPTION_HALT_VALIDATION;
1640       ELSE
1641           x_return_status := l_return_status;
1642       END IF;
1643     END IF;
1644 
1645     -- ***
1646     -- pdt_id
1647     -- ***
1648     validate_pdt_id(l_return_status, p_tbcv_rec);
1649     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1650       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1651           x_return_status := l_return_status;
1652           RAISE G_EXCEPTION_HALT_VALIDATION;
1653       ELSE
1654           x_return_status := l_return_status;
1655       END IF;
1656     END IF;
1657 
1658     -- ***
1659     -- try_id
1660     -- ***
1661     validate_try_id(l_return_status, p_tbcv_rec);
1662     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1663       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1664           x_return_status := l_return_status;
1665           RAISE G_EXCEPTION_HALT_VALIDATION;
1666       ELSE
1667           x_return_status := l_return_status;
1668       END IF;
1669     END IF;
1670 
1671     -- ***
1672     -- sty_id
1673     -- ***
1674     validate_sty_id(l_return_status, p_tbcv_rec);
1675     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1676       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1677           x_return_status := l_return_status;
1678           RAISE G_EXCEPTION_HALT_VALIDATION;
1679       ELSE
1680           x_return_status := l_return_status;
1681       END IF;
1682     END IF;
1683 
1684     -- ***
1685     -- int_disclosed_code
1686     -- ***
1687     validate_int_disclosed_code(l_return_status, p_tbcv_rec);
1688     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1689       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1690           x_return_status := l_return_status;
1691           RAISE G_EXCEPTION_HALT_VALIDATION;
1692       ELSE
1693           x_return_status := l_return_status;
1694       END IF;
1695     END IF;
1696 
1697     -- ***
1698     -- title_trnsfr_code
1699     -- ***
1700     validate_title_trnsfr_code(l_return_status, p_tbcv_rec);
1701     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1702       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1703           x_return_status := l_return_status;
1704           RAISE G_EXCEPTION_HALT_VALIDATION;
1705       ELSE
1706           x_return_status := l_return_status;
1707       END IF;
1708     END IF;
1709     -- ***
1710     -- sale_lease_back_code
1711     -- ***
1712     validate_sale_lease_back_code(l_return_status, p_tbcv_rec);
1713     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1714       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1715           x_return_status := l_return_status;
1716           RAISE G_EXCEPTION_HALT_VALIDATION;
1717       ELSE
1718           x_return_status := l_return_status;
1719       END IF;
1720     END IF;
1721 
1722     -- ***
1723     -- lease_purchased_code
1724     -- ***
1725     validate_lease_purchased_code(l_return_status, p_tbcv_rec);
1726     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1727       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1728           x_return_status := l_return_status;
1729           RAISE G_EXCEPTION_HALT_VALIDATION;
1730       ELSE
1731           x_return_status := l_return_status;
1732       END IF;
1733     END IF;
1734 
1735     -- ***
1736     -- equip_usage_code
1737     -- ***
1738     validate_equip_usage_code(l_return_status, p_tbcv_rec);
1739     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1740       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1741           x_return_status := l_return_status;
1742           RAISE G_EXCEPTION_HALT_VALIDATION;
1743       ELSE
1744           x_return_status := l_return_status;
1745       END IF;
1746     END IF;
1747 
1748     -- ***
1749     -- vendor_site_id
1750     -- ***
1751     validate_vendor_site_id(l_return_status, p_tbcv_rec);
1752     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1753       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1754           x_return_status := l_return_status;
1755           RAISE G_EXCEPTION_HALT_VALIDATION;
1756       ELSE
1757           x_return_status := l_return_status;
1758       END IF;
1759     END IF;
1760 
1761     -- ***
1762     -- age_of_equip_from
1763     -- ***
1764     validate_age_of_equip_from(l_return_status, p_tbcv_rec);
1765     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1766       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1767           x_return_status := l_return_status;
1768           RAISE G_EXCEPTION_HALT_VALIDATION;
1769       ELSE
1770           x_return_status := l_return_status;
1771       END IF;
1772     END IF;
1773 
1774     -- ***
1775     -- age_of_equip_to
1776     -- ***
1777     validate_age_of_equip_to(l_return_status, p_tbcv_rec);
1778     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1779       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1780           x_return_status := l_return_status;
1781           RAISE G_EXCEPTION_HALT_VALIDATION;
1782       ELSE
1783           x_return_status := l_return_status;
1784       END IF;
1785     END IF;
1786 
1787     -- ***
1788     -- object_version_number
1789     -- ***
1790     validate_object_version_number(l_return_status, p_tbcv_rec);
1791     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1792       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1793           x_return_status := l_return_status;
1794           RAISE G_EXCEPTION_HALT_VALIDATION;
1795       ELSE
1796           x_return_status := l_return_status;
1797       END IF;
1798     END IF;
1799 
1800    -- modified by dcshanmu for eBTax project - modification start
1801    -- call for validation for values of new columns
1802     -- ***
1803     -- result_type_code
1804     -- ***
1805     validate_result_type_code(l_return_status, p_tbcv_rec);
1806     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1807       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1808           x_return_status := l_return_status;
1809           RAISE G_EXCEPTION_HALT_VALIDATION;
1810       ELSE
1811           x_return_status := l_return_status;
1812       END IF;
1813     END IF;
1814 
1815     -- ***
1816     -- book_class_code
1817     -- ***
1818     validate_book_class_code(l_return_status, p_tbcv_rec);
1819     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1820       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1821           x_return_status := l_return_status;
1822           RAISE G_EXCEPTION_HALT_VALIDATION;
1823       ELSE
1824           x_return_status := l_return_status;
1825       END IF;
1826     END IF;
1827 
1828     -- ***
1829     -- Date check
1830     -- ***
1831     validate_date_eff_to(l_return_status, p_tbcv_rec);
1832     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1833       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1834           x_return_status := l_return_status;
1835           RAISE G_EXCEPTION_HALT_VALIDATION;
1836       ELSE
1837           x_return_status := l_return_status;
1838       END IF;
1839     END IF;
1840 
1841     -- ***
1842     -- tax_country_code
1843     -- ***
1844     validate_tax_country_code(l_return_status, p_tbcv_rec);
1845     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1846       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1847           x_return_status := l_return_status;
1848           RAISE G_EXCEPTION_HALT_VALIDATION;
1849       ELSE
1850           x_return_status := l_return_status;
1851       END IF;
1852     END IF;
1853 
1854     -- ***
1855     -- term_quote_type_code
1856     -- ***
1857     validate_term_quote_type_code(l_return_status, p_tbcv_rec);
1858     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1859       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1860           x_return_status := l_return_status;
1861           RAISE G_EXCEPTION_HALT_VALIDATION;
1862       ELSE
1863           x_return_status := l_return_status;
1864       END IF;
1865     END IF;
1866 
1867     -- ***
1868     -- term_quote_reason_code
1869     -- ***
1870     validate_term_qt_reason_code(l_return_status, p_tbcv_rec);
1871     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1872       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1873           x_return_status := l_return_status;
1874           RAISE G_EXCEPTION_HALT_VALIDATION;
1875       ELSE
1876           x_return_status := l_return_status;
1877       END IF;
1878     END IF;
1879     -- modified by dcshanmu for eBTax project - modification end
1880 
1881     RETURN(x_return_status);
1882   EXCEPTION
1883     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1884       RETURN(x_return_status);
1885     WHEN OTHERS THEN
1886       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1887                           ,p_msg_name     => G_UNEXPECTED_ERROR
1888                           ,p_token1       => G_SQLCODE_TOKEN
1889                           ,p_token1_value => SQLCODE
1890                           ,p_token2       => G_SQLERRM_TOKEN
1891                           ,p_token2_value => SQLERRM);
1892       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1893       RETURN(x_return_status);
1894   END Validate_Attributes;
1895   ---------------------------------------------------------------------------
1896   -- PROCEDURE Validate_Record
1897   ---------------------------------------------------------------------------
1898   -----------------------------------------------
1899   -- Validate Record for:OKL_TAX_ATTR_DEFINITIONS --
1900   -----------------------------------------------
1901   /* Not needed as foreign key validations ar eincluded in individual validate procedures
1902   FUNCTION Validate_Record (
1903     p_tbcv_rec IN tbcv_rec_type,
1904     p_db_tbcv_rec IN tbcv_rec_type
1905   ) RETURN VARCHAR2 IS
1906     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1907     ------------------------------------
1908     -- FUNCTION validate_foreign_keys --
1909     ------------------------------------
1910     FUNCTION validate_foreign_keys (
1911       p_tbcv_rec IN tbcv_rec_type,
1912       p_db_tbcv_rec IN tbcv_rec_type
1913     ) RETURN VARCHAR2 IS
1914       item_not_found_error           EXCEPTION;
1915 
1916     CURSOR okl_tbcv_res_type_fk_csr (p_id IN VARCHAR2) IS
1917       SELECT 'x'
1918       FROM   fnd_lookups
1919       WHERE  lookup_code = p_id
1920       AND lookup_type='OKL_TAX_ATTR_TYPE_CODE';
1921       l_okl_tbcv_res_type       okl_tbcv_res_type_fk_csr%ROWTYPE;
1922 
1923     CURSOR okl_tbcv_bc_fk_csr (p_id IN VARCHAR2) IS
1924       SELECT 'x'
1925       FROM   fnd_lookups
1926       WHERE  lookup_code = p_id
1927       AND lookup_type='OKL_BOOK_CLASS';
1928       l_okl_tbcv_bc                     okl_tbcv_bc_fk_csr%ROWTYPE;
1929 
1930     CURSOR okl_tbcv_tx_cntry_code_fk_csr (p_id IN VARCHAR2) IS
1931       SELECT 'x'
1932       FROM   fnd_territories_tl
1933       WHERE  territory_code = p_id;
1934       l_okl_tbcv_tx_cntry_code          okl_tbcv_tx_cntry_code_fk_csr%ROWTYPE;
1935 
1936     CURSOR okl_tbcv_term_qtcode_fk_csr (p_id IN VARCHAR2) IS
1937       SELECT 'x'
1938       FROM   fnd_lookups
1939       WHERE  lookup_code = p_id
1940       AND lookup_type='OKL_QUOTE_TYPE';
1941       l_okl_tbcv_term_qtcode            okl_tbcv_term_qtcode_fk_csr%ROWTYPE;
1942 
1943     CURSOR okl_tbcv_term_qrcode_fk_csr (p_id IN VARCHAR2) IS
1944       SELECT 'x'
1945       FROM   fnd_lookups
1946       WHERE  lookup_code = p_id
1947       AND lookup_type='OKL_QUOTE_REASON';
1948       l_okl_tbcv_term_qrcode            okl_tbcv_term_qrcode_fk_csr%ROWTYPE;
1949 
1950     CURSOR okl_tbcv_res_code_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
1951       SELECT 'x'
1952       FROM zx_fc_business_categories_v
1953       WHERE classification_code = p_lookup_code;
1954       --AND   lookup_type = p_lookup_type;
1955       l_okl_tbcv_res_code               okl_tbcv_res_code_fk_csr%ROWTYPE;
1956 
1957       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1958       l_row_notfound                 BOOLEAN := TRUE;
1959 
1960     BEGIN
1961 
1962       IF ((p_ttdv_rec.RESULT_TYPE_CODE IS NOT NULL)
1963        AND
1964           (p_ttdv_rec.RESULT_TYPE_CODE <> p_db_okl_tax_trx_details_v_rec.RESULT_TYPE_CODE))
1965       THEN
1966         OPEN okl_tbcv_res_type_fk_csr (p_ttdv_rec.RESULT_TYPE_CODE);
1967         FETCH okl_tbcv_res_type_fk_csr INTO l_okl_tbcv_res_type;
1968         l_row_notfound := okl_tbcv_res_type_fk_csr%NOTFOUND;
1969         CLOSE okl_tbcv_res_type_fk_csr;
1970         IF (l_row_notfound) THEN
1971           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'RESULT_TYPE_CODE');
1972           RAISE item_not_found_error;
1973         END IF;
1974       END IF;
1975 
1976       IF ((p_ttdv_rec.RESULT_CODE IS NOT NULL)
1977        AND
1978           (p_ttdv_rec.RESULT_CODE <> p_db_okl_tax_trx_details_v_rec.RESULT_CODE))
1979       THEN
1980         OPEN okl_tbcv_res_code_fk_csr (p_ttdv_rec.RESULT_CODE);
1981         FETCH okl_tbcv_res_code_fk_csr INTO l_okl_tbcv_res_code;
1982         l_row_notfound := okl_tbcv_res_code_fk_csr%NOTFOUND;
1983         CLOSE okl_tbcv_res_code_fk_csr;
1984         IF (l_row_notfound) THEN
1985           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'RESULT_CODE');
1986           RAISE item_not_found_error;
1987         END IF;
1988       END IF;
1989 
1990       IF ((p_ttdv_rec.BOOK_CLASS_CODE IS NOT NULL)
1991        AND
1992           (p_ttdv_rec.BOOK_CLASS_CODE <> p_db_okl_tax_trx_details_v_rec.BOOK_CLASS_CODE))
1993       THEN
1994         OPEN okl_tbcv_bc_fk_csr (p_ttdv_rec.BOOK_CLASS_CODE);
1995         FETCH okl_tbcv_bc_fk_csr INTO l_okl_tbcv_bc;
1996         l_row_notfound := okl_tbcv_bc_fk_csr%NOTFOUND;
1997         CLOSE okl_tbcv_bc_fk_csr;
1998         IF (l_row_notfound) THEN
1999           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'BOOK_CLASS_CODE');
2000           RAISE item_not_found_error;
2001         END IF;
2002       END IF;
2003 
2004       IF ((p_ttdv_rec.TAX_COUNTRY_CODE IS NOT NULL)
2005        AND
2006           (p_ttdv_rec.TAX_COUNTRY_CODE <> p_db_okl_tax_trx_details_v_rec.TAX_COUNTRY_CODE))
2007       THEN
2008         OPEN okl_tbcv_tx_cntry_code_fk_csr (p_ttdv_rec.TAX_COUNTRY_CODE);
2009         FETCH okl_tbcv_tx_cntry_code_fk_csr INTO l_okl_tbcv_tx_cntry_code;
2010         l_row_notfound := okl_tbcv_tx_cntry_code_fk_csr%NOTFOUND;
2011         CLOSE okl_tbcv_tx_cntry_code_fk_csr;
2012         IF (l_row_notfound) THEN
2013           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TAX_COUNTRY_CODE');
2014           RAISE item_not_found_error;
2015         END IF;
2016       END IF;
2017 
2018       IF ((p_ttdv_rec.TERM_QUOTE_TYPE_CODE IS NOT NULL)
2019        AND
2020           (p_ttdv_rec.TERM_QUOTE_TYPE_CODE <> p_db_okl_tax_trx_details_v_rec.TERM_QUOTE_TYPE_CODE))
2021       THEN
2022         OPEN okl_tbcv_term_qtcode_fk_csr (p_ttdv_rec.TERM_QUOTE_TYPE_CODE);
2023         FETCH okl_tbcv_term_qtcode_fk_csr INTO l_okl_tbcv_term_qtcode;
2024         l_row_notfound := okl_tbcv_term_qtcode_fk_csr%NOTFOUND;
2025         CLOSE okl_tbcv_term_qtcode_fk_csr;
2026         IF (l_row_notfound) THEN
2027           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TERM_QUOTE_TYPE_CODE');
2028           RAISE item_not_found_error;
2029         END IF;
2030       END IF;
2031 
2032       IF ((p_ttdv_rec.TERM_QUOTE_REASON_CODE IS NOT NULL)
2033        AND
2034           (p_ttdv_rec.TERM_QUOTE_REASON_CODE <> p_db_okl_tax_trx_details_v_rec.TERM_QUOTE_REASON_CODE))
2035       THEN
2036         OPEN okl_tbcv_term_qrcode_fk_csr (p_ttdv_rec.TERM_QUOTE_REASON_CODE);
2037         FETCH okl_tbcv_term_qrcode_fk_csr INTO l_okl_tbcv_term_qrcode;
2038         l_row_notfound := okl_tbcv_term_qrcode_fk_csr%NOTFOUND;
2039         CLOSE okl_tbcv_term_qrcode_fk_csr;
2040         IF (l_row_notfound) THEN
2041           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TERM_QUOTE_REASON_CODE');
2042           RAISE item_not_found_error;
2043         END IF;
2044       END IF;
2045 
2046       RETURN (l_return_status);
2047 
2048     EXCEPTION
2049       WHEN item_not_found_error THEN
2050         l_return_status := OKL_API.G_RET_STS_ERROR;
2051         RETURN (l_return_status);
2052 
2053     END Validate_Record;
2054 
2055     FUNCTION Validate_Record (
2056       p_tbcv_rec IN tbcv_rec_type
2057     ) RETURN VARCHAR2 IS
2058       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2059       l_db_tbcv_rec                  tbcv_rec_type := get_rec(p_tbcv_rec);
2060     BEGIN
2061       l_return_status := Validate_Record(p_tbcv_rec => p_tbcv_rec,
2062                                          p_db_tbcv_rec => l_db_tbcv_rec);
2063       RETURN (l_return_status);
2064     END Validate_Record;
2065 */
2066 
2067     FUNCTION Validate_Record (
2068     p_tbcv_rec IN tbcv_rec_type
2069 
2070 
2071 
2072   ) RETURN VARCHAR2 IS
2073 
2074    -- modified by dcshanmu for eBTax project - modification start
2075    -- modified the method to add just the necessary conditions for duplication for
2076    -- TBC_CODE, PC_CODE and UFC_CODE categories
2077     CURSOR l_checkduplicate_tbc_csr(cp_tax_attribute_def_id IN VARCHAR2) IS
2078     SELECT result_code
2079     FROM   OKL_TAX_ATTR_DEFINITIONS
2080     WHERE  result_type_code = 'TBC_CODE'
2081 --      AND    nvl(PURCHASE_OPTION_CODE,'XXXXX') = nvl(p_tbcv_rec.PURCHASE_OPTION_CODE,'XXXXX')
2082 --      AND    nvl(PDT_ID, -99999) = nvl(p_tbcv_rec.PDT_ID,-99999)
2083         AND    nvl(TRY_ID, -99999) = nvl(p_tbcv_rec.TRY_ID,-99999)
2084         AND    nvl(STY_ID, -99999) = nvl(p_tbcv_rec.STY_ID,-99999)
2085 --      AND    nvl(INT_DISCLOSED_CODE,'N') = nvl(p_tbcv_rec.INT_DISCLOSED_CODE,'N')
2086 --      AND    nvl(TITLE_TRNSFR_CODE,'N') = nvl(p_tbcv_rec.TITLE_TRNSFR_CODE,'N')
2087 --      AND    nvl(SALE_LEASE_BACK_CODE,'N') = nvl(p_tbcv_rec.SALE_LEASE_BACK_CODE,'N')
2088 --      AND    nvl(LEASE_PURCHASED_CODE,'N') = nvl(p_tbcv_rec.LEASE_PURCHASED_CODE,'N')
2089 --      AND    nvl(EQUIP_USAGE_CODE,'XXXXX') = nvl(p_tbcv_rec.EQUIP_USAGE_CODE,'XXXXX')
2090 --      AND    nvl(VENDOR_SITE_ID,-99999) = nvl(p_tbcv_rec.VENDOR_SITE_ID,-99999)
2091         AND       nvl(BOOK_CLASS_CODE,'XXXXX') = nvl(p_tbcv_rec.BOOK_CLASS_CODE,'XXXXX')
2092         AND    nvl(TAX_COUNTRY_CODE,'XXXXX') = nvl(p_tbcv_rec.TAX_COUNTRY_CODE,'XXXXX')
2093         AND   nvl(TAX_ATTRIBUTE_DEF_ID, -99999) <> nvl(cp_tax_attribute_def_id,-99999)
2094         AND       nvl(EXPIRE_FLAG,'N')<> 'Y'
2095 
2096 
2097         /*AND (  (   -- This condition will allow cases where DB FROm and To are NULL and also Screen FROM and TO are null
2098                    --(AGE_OF_EQUIP_FROM IS NOT NULL OR AGE_OF_EQUIP_TO IS NOT NULL OR p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL OR p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL )
2099                   -- AND
2100                     -- this condition will prevent exact matches (including cases where some values are null)
2101                    (nvl(AGE_OF_EQUIP_FROM,-99999) = nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,-99999) AND
2102                     nvl(AGE_OF_EQUIP_TO, -99999) = nvl(p_tbcv_rec.AGE_OF_EQUIP_TO,-99999)
2103                     )
2104                 )
2105                OR -- age of equipment from can not be null for comparison purposes (when TO is not null),
2106                       -- as we can assume it is 0, if null
2107                   -- so this condition takes care of scenarios where both Froms and both Tos have a value
2108                   -- OR any of the FROMs are null and both Tos have a value
2109                (--nvl(AGE_OF_EQUIP_FROM,0) IS NOT NULL AND nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) IS NOT NULL AND
2110                 AGE_OF_EQUIP_TO IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL AND
2111                   (  (nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) < nvl(AGE_OF_EQUIP_FROM,0) AND p_tbcv_rec.AGE_OF_EQUIP_TO >= nvl(AGE_OF_EQUIP_FROM,0))
2112                      OR
2113                      (nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) >= nvl(AGE_OF_EQUIP_FROM,0) AND nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) <= AGE_OF_EQUIP_TO) --AND p_tbcv_rec.AGE_OF_EQUIP_TO > AGE_OF_EQUIP_TO)
2114                   )
2115 
2116                )
2117                OR
2118                ( AGE_OF_EQUIP_TO IS NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NULL AND
2119                  -- In this case Both the FROMs can not be null together or have the same value, as it will get captured in condition 1
2120                  -- here, either DB FROM is Null and Screen FROM is not null --> This combination is ok
2121                  -- OR DB FROM is not null and Screen FROM is null --> this combinatio is ok
2122                  -- OR both FROMs have a value(differenr value) --> restrict this combination
2123                  AGE_OF_EQUIP_FROM IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL -- The 2 FROMs can not have same value at this point
2124                )
2125                OR
2126                    ( AGE_OF_EQUIP_TO IS NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL AND -- TO in DB is Null,TO on screen is not null
2127                      -- In this case following scenarios are possible
2128                      -- DB FROM is Null (DB To is also NUll) FROM on the screen can be considered to be be >=0 (0 if null), since TO on screen is not null - OK
2129                          -- DB FROM >=0, SCREEN TO < DB FROM - ok
2130                          -- DB FROM >=0, SCREEN TO >= DB FROM - restrict this condition
2131                          AGE_OF_EQUIP_FROM >= 0 AND p_tbcv_rec.AGE_OF_EQUIP_TO >= AGE_OF_EQUIP_FROM
2132                    )
2133                    OR
2134                    ( AGE_OF_EQUIP_TO IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NULL AND
2135                      -- In this case following scenarios are possible
2136                      -- DB FROM can be considered to be >=0 (0 if null), since DB TO is not null, so there is a fixed age range defined in DB
2137                      -- SCREEN FROM is null (TO is always NULL) - OK
2138                      -- screen from >=0, SCREEN FROM > DB TO - ok
2139                      -- screen from >=0, screen from <= db to - RESTRICT THIS CONDITION
2140                      p_tbcv_rec.AGE_OF_EQUIP_FROM >=0 AND p_tbcv_rec.AGE_OF_EQUIP_FROM <= AGE_OF_EQUIP_TO
2141                    )
2142             )*/  ;
2143 
2144         CURSOR l_checkduplicate_pc_csr(cp_tax_attribute_def_id IN VARCHAR2) IS
2145             SELECT result_code
2146             FROM   OKL_TAX_ATTR_DEFINITIONS
2147             WHERE  result_type_code = 'PC_CODE'
2148         AND    nvl(PURCHASE_OPTION_CODE,'XXXXX') = nvl(p_tbcv_rec.PURCHASE_OPTION_CODE,'XXXXX')
2149                 AND    nvl(STY_ID, -99999) = nvl(p_tbcv_rec.STY_ID,-99999)
2150                 AND    nvl(INT_DISCLOSED_CODE,'N') = nvl(p_tbcv_rec.INT_DISCLOSED_CODE,'N')
2151                 AND    nvl(TITLE_TRNSFR_CODE,'N') = nvl(p_tbcv_rec.TITLE_TRNSFR_CODE,'N')
2152                 AND    nvl(SALE_LEASE_BACK_CODE,'N') = nvl(p_tbcv_rec.SALE_LEASE_BACK_CODE,'N')
2153                 AND    nvl(LEASE_PURCHASED_CODE,'N') = nvl(p_tbcv_rec.LEASE_PURCHASED_CODE,'N')
2154                 AND    nvl(TAX_COUNTRY_CODE,'XXXXX') = nvl(p_tbcv_rec.TAX_COUNTRY_CODE,'XXXXX')
2155                 AND   nvl(TAX_ATTRIBUTE_DEF_ID, -99999) <> nvl(cp_tax_attribute_def_id,-99999)
2156                 AND       nvl(EXPIRE_FLAG,'N')<> 'Y' ;
2157 
2158         CURSOR l_checkduplicate_ufc_csr(cp_tax_attribute_def_id IN VARCHAR2) IS
2159             SELECT result_code
2160             FROM   OKL_TAX_ATTR_DEFINITIONS
2161             WHERE  /*result_code <> cp_tbc_code
2162                 AND   */result_type_code = 'UFC_CODE'
2163         AND     nvl(PURCHASE_OPTION_CODE,'XXXXX') = nvl(p_tbcv_rec.PURCHASE_OPTION_CODE,'XXXXX')
2164                 AND    nvl(PDT_ID, -99999) = nvl(p_tbcv_rec.PDT_ID,-99999)
2165                 AND    nvl(STY_ID, -99999) = nvl(p_tbcv_rec.STY_ID,-99999)
2166                 AND    nvl(TRY_ID, -99999) = nvl(p_tbcv_rec.TRY_ID,-99999)
2167                 AND    nvl(LEASE_PURCHASED_CODE,'N') = nvl(p_tbcv_rec.LEASE_PURCHASED_CODE,'N')
2168                 AND    nvl(EQUIP_USAGE_CODE,'XXXXX') = nvl(p_tbcv_rec.EQUIP_USAGE_CODE,'XXXXX')
2169                 AND    nvl(VENDOR_SITE_ID,-99999) = nvl(p_tbcv_rec.VENDOR_SITE_ID,-99999)
2170                 AND    nvl(INT_DISCLOSED_CODE,'N') = nvl(p_tbcv_rec.INT_DISCLOSED_CODE,'N')
2171                 AND    nvl(TITLE_TRNSFR_CODE,'N') = nvl(p_tbcv_rec.TITLE_TRNSFR_CODE,'N')
2172                 AND    nvl(SALE_LEASE_BACK_CODE,'N') = nvl(p_tbcv_rec.SALE_LEASE_BACK_CODE,'N')
2173                 AND    nvl(TAX_COUNTRY_CODE,'XXXXX') = nvl(p_tbcv_rec.TAX_COUNTRY_CODE,'XXXXX')
2174                 AND    nvl(TERM_QUOTE_TYPE_CODE,'XXXXX') = nvl(p_tbcv_rec.TERM_QUOTE_TYPE_CODE,'XXXXX')
2175                 AND    nvl(TERM_QUOTE_REASON_CODE,'XXXXX') = nvl(p_tbcv_rec.TERM_QUOTE_REASON_CODE,'XXXXX')
2176                 AND       nvl(EXPIRE_FLAG,'N')<> 'Y'
2177                 AND   nvl(TAX_ATTRIBUTE_DEF_ID, -99999) <> nvl(cp_tax_attribute_def_id,-99999)
2178 
2179                 AND (  (   -- This condition will allow cases where DB FROm and To are NULL and also Screen FROM and TO are null
2180                    --(AGE_OF_EQUIP_FROM IS NOT NULL OR AGE_OF_EQUIP_TO IS NOT NULL OR p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL OR p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL )
2181                   -- AND
2182                     -- this condition will prevent exact matches (including cases where some values are null)
2183                    (nvl(AGE_OF_EQUIP_FROM,-99999) = nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,-99999) AND
2184                     nvl(AGE_OF_EQUIP_TO, -99999) = nvl(p_tbcv_rec.AGE_OF_EQUIP_TO,-99999)
2185                     )
2186                 )
2187                OR -- age of equipment from can not be null for comparison purposes (when TO is not null),
2188                       -- as we can assume it is 0, if null
2189                   -- so this condition takes care of scenarios where both Froms and both Tos have a value
2190                   -- OR any of the FROMs are null and both Tos have a value
2191                (--nvl(AGE_OF_EQUIP_FROM,0) IS NOT NULL AND nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) IS NOT NULL AND
2192                 AGE_OF_EQUIP_TO IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL AND
2193                   (  (nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) < nvl(AGE_OF_EQUIP_FROM,0) AND p_tbcv_rec.AGE_OF_EQUIP_TO >= nvl(AGE_OF_EQUIP_FROM,0))
2194                      OR
2195                      (nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) >= nvl(AGE_OF_EQUIP_FROM,0) AND nvl(p_tbcv_rec.AGE_OF_EQUIP_FROM,0) <= AGE_OF_EQUIP_TO) --AND p_tbcv_rec.AGE_OF_EQUIP_TO > AGE_OF_EQUIP_TO)
2196                   )
2197 
2198                )
2199                OR
2200                ( AGE_OF_EQUIP_TO IS NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NULL AND
2201                  -- In this case Both the FROMs can not be null together or have the same value, as it will get captured in condition 1
2202                  -- here, either DB FROM is Null and Screen FROM is not null --> This combination is ok
2203                  -- OR DB FROM is not null and Screen FROM is null --> this combinatio is ok
2204                  -- OR both FROMs have a value(differenr value) --> restrict this combination
2205                  AGE_OF_EQUIP_FROM IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL -- The 2 FROMs can not have same value at this point
2206                )
2207                OR
2208                    ( AGE_OF_EQUIP_TO IS NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL AND -- TO in DB is Null,TO on screen is not null
2209                      -- In this case following scenarios are possible
2210                      -- DB FROM is Null (DB To is also NUll) FROM on the screen can be considered to be be >=0 (0 if null), since TO on screen is not null - OK
2211                          -- DB FROM >=0, SCREEN TO < DB FROM - ok
2212                          -- DB FROM >=0, SCREEN TO >= DB FROM - restrict this condition
2213                          AGE_OF_EQUIP_FROM >= 0 AND p_tbcv_rec.AGE_OF_EQUIP_TO >= AGE_OF_EQUIP_FROM
2214                    )
2215                    OR
2216                    ( AGE_OF_EQUIP_TO IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO IS NULL AND
2217                      -- In this case following scenarios are possible
2218                      -- DB FROM can be considered to be >=0 (0 if null), since DB TO is not null, so there is a fixed age range defined in DB
2219                      -- SCREEN FROM is null (TO is always NULL) - OK
2220                      -- screen from >=0, SCREEN FROM > DB TO - ok
2221                      -- screen from >=0, screen from <= db to - RESTRICT THIS CONDITION
2222                      p_tbcv_rec.AGE_OF_EQUIP_FROM >=0 AND p_tbcv_rec.AGE_OF_EQUIP_FROM <= AGE_OF_EQUIP_TO
2223                    )
2224             ) ;
2225 
2226 
2227 
2228 
2229         -- modified by dcshanmu for eBTax project - modification end
2230 
2231     CURSOR okl_tbc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
2232       SELECT classification_name
2233       FROM zx_fc_business_categories_v
2234       WHERE classification_code = p_lookup_code;
2235 
2236     CURSOR okl_pc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
2237       SELECT classification_name
2238       FROM zx_fc_product_categories_v
2239       WHERE classification_code = p_lookup_code;
2240 
2241     CURSOR okl_ufc_res_code_fk_csr (p_lookup_code IN VARCHAR2) IS
2242       SELECT classification_name
2243       FROM zx_fc_user_defined_v
2244       WHERE classification_code = p_lookup_code;
2245 
2246     CURSOR get_try_name(cp_try_id IN VARCHAR2) IS
2247         select NAME
2248         from okl_trx_types_tl
2249         where  ID = cp_try_id
2250         AND    language = 'US';
2251 
2252 
2253         l_result_code                                      VARCHAR2(300) := 'XXXXX';
2254         x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2255         l_meaning                                          VARCHAR2(80);
2256 
2257         l_msg_name VARCHAR2(80);
2258         l_token1        VARCHAR2(10);
2259         l_try_name      VARCHAR2(255);
2260 
2261     BEGIN
2262 
2263       IF (--(p_tbcv_rec.PURCHASE_OPTION_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.purchase_option_code IS NULL) AND
2264          --(p_tbcv_rec.PDT_ID = OKL_API.G_MISS_NUM OR p_tbcv_rec.PDT_ID IS NULL) AND
2265          --(p_tbcv_rec.TRY_ID = OKL_API.G_MISS_NUM OR p_tbcv_rec.TRY_ID IS NULL) AND
2266          --    (p_tbcv_rec.STY_ID = OKL_API.G_MISS_NUM OR p_tbcv_rec.STY_ID IS NULL) AND
2267          --    (p_tbcv_rec.INT_DISCLOSED_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.INT_DISCLOSED_CODE IS NULL) AND
2268          --    (p_tbcv_rec.TITLE_TRNSFR_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.TITLE_TRNSFR_CODE IS NULL) AND
2269          --    (p_tbcv_rec.SALE_LEASE_BACK_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.SALE_LEASE_BACK_CODE IS NULL) AND
2270          --    (p_tbcv_rec.LEASE_PURCHASED_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.LEASE_PURCHASED_CODE IS NULL) AND
2271          --    (p_tbcv_rec.EQUIP_USAGE_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.EQUIP_USAGE_CODE IS NULL) AND
2272          --    (p_tbcv_rec.VENDOR_SITE_ID = OKL_API.G_MISS_NUM OR p_tbcv_rec.VENDOR_SITE_ID IS NULL) AND
2273          --   (p_tbcv_rec.AGE_OF_EQUIP_FROM = OKL_API.G_MISS_NUM OR p_tbcv_rec.AGE_OF_EQUIP_FROM IS NULL) AND
2274          --    (p_tbcv_rec.AGE_OF_EQUIP_TO = OKL_API.G_MISS_NUM OR p_tbcv_rec.AGE_OF_EQUIP_TO IS NULL)
2275          (p_tbcv_rec.RESULT_CODE = OKL_API.G_MISS_CHAR OR p_tbcv_rec.RESULT_CODE IS NULL) ) THEN
2276 
2277                   x_return_status := OKC_API.G_RET_STS_ERROR;
2278                   --Unable to create Category definition as mandatory attributes are provided.
2279                   OKL_API.set_message(p_app_name    => 'OKL',
2280                                   p_msg_name    => 'OKL_TX_NO_TBC_ATTR');
2281                   RAISE G_EXCEPTION_HALT_VALIDATION;
2282 
2283       END IF;
2284       IF (p_tbcv_rec.AGE_OF_EQUIP_FROM IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_FROM <> OKL_API.G_MISS_NUM) AND
2285          (p_tbcv_rec.AGE_OF_EQUIP_TO IS NOT NULL AND p_tbcv_rec.AGE_OF_EQUIP_TO <> OKL_API.G_MISS_NUM) THEN
2286           IF p_tbcv_rec.AGE_OF_EQUIP_TO < p_tbcv_rec.AGE_OF_EQUIP_FROM THEN
2287               x_return_status := OKC_API.G_RET_STS_ERROR;
2288                   --Unable to create Transcation Business Category definition as none of the attributes are provided.
2289                   OKL_API.set_message(p_app_name    => 'OKL',
2290                                   p_msg_name    => 'OKL_TX_INVALID_AGE_RANGE');
2291                   RAISE G_EXCEPTION_HALT_VALIDATION;
2292 
2293           END IF;
2294       END IF;
2295 
2296       -- modified by dcshanmu for eBTax project - modification start
2297       IF (p_tbcv_rec.result_type_code = 'TBC_CODE') THEN
2298               OPEN  l_checkduplicate_tbc_csr(p_tbcv_rec.tax_attribute_def_id);
2299               FETCH l_checkduplicate_tbc_csr INTO l_result_code;
2300               CLOSE l_checkduplicate_tbc_csr;
2301               IF l_result_code <> 'XXXXX' THEN
2302                 OPEN  okl_tbc_res_code_fk_csr(l_result_code);
2303                 FETCH okl_tbc_res_code_fk_csr INTO l_meaning;
2304                 CLOSE okl_tbc_res_code_fk_csr;
2305               END IF;
2306               l_msg_name := 'OKL_TX_DUP_TBC_ERR';
2307               l_token1 := 'TBC';
2308 
2309       ELSIF (p_tbcv_rec.result_type_code = 'PC_CODE') THEN
2310               OPEN  l_checkduplicate_pc_csr(p_tbcv_rec.tax_attribute_def_id);
2311               FETCH l_checkduplicate_pc_csr INTO l_result_code;
2312               CLOSE l_checkduplicate_pc_csr;
2313               IF l_result_code <> 'XXXXX' THEN
2314                 OPEN  okl_pc_res_code_fk_csr(l_result_code);
2315                 FETCH okl_pc_res_code_fk_csr INTO l_meaning;
2316                 CLOSE okl_pc_res_code_fk_csr;
2317               END IF;
2318               l_msg_name := 'OKL_TX_DUP_PC_ERR';
2319               l_token1 := 'PC_CODE';
2320 
2321       ELSIF (p_tbcv_rec.result_type_code = 'UFC_CODE') THEN
2322 
2323                             IF (p_tbcv_rec.term_quote_reason_code IS NOT NULL AND p_tbcv_rec.term_quote_reason_code <> OKL_API.G_MISS_CHAR ) THEN
2324                 IF p_tbcv_rec.try_id IS NOT NULL THEN
2325                    OPEN  get_try_name(p_tbcv_rec.try_id);
2326                    FETCH get_try_name INTO l_try_name;
2327                    CLOSE get_try_name;
2328 
2329                    IF l_try_name NOT IN ('Estimated Billing',
2330                                          'Billing',
2331                                          'Credit Memo',
2332                                          'Rollover Billing',
2333                                          'Rollover Credit Memo',
2334                                          'Release Billing',
2335                                          'Release Credit Memo') THEN
2336 
2337                     x_return_status := OKC_API.G_RET_STS_ERROR;
2338                      OKL_API.set_message(p_app_name      => 'OKL',
2339                                         p_msg_name      => 'OKL_TERMQTE_RSNTYP_NA_ERR',
2340                                         p_token1        => 'TRX_TYPE',
2341                                         p_token1_value  => l_try_name);
2342                      RAISE G_EXCEPTION_HALT_VALIDATION;
2343                   END IF;
2344                 END IF;
2345               END IF;
2346 
2347               IF (p_tbcv_rec.term_quote_type_code IS NOT NULL AND p_tbcv_rec.term_quote_type_code <> OKL_API.G_MISS_CHAR ) THEN
2348                 IF p_tbcv_rec.try_id IS NOT NULL THEN
2349                   OPEN  get_try_name(p_tbcv_rec.try_id);
2350                   FETCH get_try_name INTO l_try_name;
2351                   CLOSE get_try_name;
2352 
2353                    IF l_try_name NOT IN ('Estimated Billing',
2354                                          'Billing',
2355                                          'Credit Memo',
2356                                          'Rollover Billing',
2357                                          'Rollover Credit Memo',
2358                                          'Release Billing',
2359                                          'Release Credit Memo') THEN
2360 
2361                     x_return_status := OKC_API.G_RET_STS_ERROR;
2362                      OKL_API.set_message(p_app_name      => 'OKL',
2363                                         p_msg_name      => 'OKL_TERMQTE_RSNTYP_NA_ERR',
2364                                         p_token1        => 'TRX_TYPE',
2365                                         p_token1_value  => l_try_name);
2366                      RAISE G_EXCEPTION_HALT_VALIDATION;
2367                   END IF;
2368                 END IF;
2369               END IF;
2370 
2371 
2372 
2373 
2374 
2375               OPEN  l_checkduplicate_ufc_csr(p_tbcv_rec.tax_attribute_def_id);
2376               FETCH l_checkduplicate_ufc_csr INTO l_result_code;
2377               CLOSE l_checkduplicate_ufc_csr;
2378               IF l_result_code <> 'XXXXX' THEN
2379                 OPEN  okl_ufc_res_code_fk_csr(l_result_code);
2380                 FETCH okl_ufc_res_code_fk_csr INTO l_meaning;
2381                 CLOSE okl_ufc_res_code_fk_csr;
2382               END IF;
2383               l_msg_name := 'OKL_TX_DUP_UFC_ERR';
2384               l_token1 := 'UFC_CODE';
2385       END IF;
2386       -- modified by dcshanmu for eBTax project - modification end
2387 
2388       -- There can be at the most one duplicate record.
2389       IF l_result_code <> 'XXXXX' THEN
2390          x_return_status := OKC_API.G_RET_STS_ERROR;
2391              -- Another Category already exists for this combination of tax determinants.
2392              -- modified by dcshanmu for eBTax project - modification start
2393              -- modified default values passed to p_msg_name and p_token1
2394 
2395          OKL_API.set_message(p_app_name      => 'OKL',
2396                              p_msg_name      => l_msg_name,
2397                              p_token1        => l_token1,
2398                              p_token1_value  => l_meaning);
2399          RAISE G_EXCEPTION_HALT_VALIDATION;
2400 
2401         -- modified by dcshanmu for eBTax project - modification start
2402 
2403      END IF;
2404 
2405       RETURN (x_return_status);
2406     EXCEPTION
2407       WHEN G_EXCEPTION_HALT_VALIDATION THEN
2408         RETURN(x_return_status);
2409       WHEN OTHERS THEN
2410         OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
2411                           ,p_msg_name     => G_UNEXPECTED_ERROR
2412                           ,p_token1       => G_SQLCODE_TOKEN
2413                           ,p_token1_value => SQLCODE
2414                           ,p_token2       => G_SQLERRM_TOKEN
2415                           ,p_token2_value => SQLERRM);
2416         x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2417         RETURN(x_return_status);
2418     END Validate_Record;
2419     ---------------------------------------------------------------------------
2420     -- PROCEDURE Migrate
2421     ---------------------------------------------------------------------------
2422     PROCEDURE migrate (
2423       p_from IN tbcv_rec_type,
2424       p_to   IN OUT NOCOPY tbc_rec_type
2425     ) IS
2426     BEGIN
2427      -- p_to.id := p_from.id;
2428     --  p_to.org_id := p_from.org_id;
2429       p_to.result_code := p_from.result_code;
2430       p_to.purchase_option_code := p_from.purchase_option_code;
2431       p_to.pdt_id := p_from.pdt_id;
2432       p_to.try_id := p_from.try_id;
2433       p_to.sty_id := p_from.sty_id;
2434       p_to.int_disclosed_code := p_from.int_disclosed_code;
2435       p_to.title_trnsfr_code := p_from.title_trnsfr_code;
2436       p_to.sale_lease_back_code := p_from.sale_lease_back_code;
2437       p_to.lease_purchased_code := p_from.lease_purchased_code;
2438       p_to.equip_usage_code := p_from.equip_usage_code;
2439       p_to.vendor_site_id := p_from.vendor_site_id;
2440       p_to.age_of_equip_from := p_from.age_of_equip_from;
2441       p_to.age_of_equip_to := p_from.age_of_equip_to;
2442       p_to.object_version_number := p_from.object_version_number;
2443       p_to.attribute_category := p_from.attribute_category;
2444       p_to.attribute1 := p_from.attribute1;
2445       p_to.attribute2 := p_from.attribute2;
2446       p_to.attribute3 := p_from.attribute3;
2447       p_to.attribute4 := p_from.attribute4;
2448       p_to.attribute5 := p_from.attribute5;
2449       p_to.attribute6 := p_from.attribute6;
2450       p_to.attribute7 := p_from.attribute7;
2451       p_to.attribute8 := p_from.attribute8;
2452       p_to.attribute9 := p_from.attribute9;
2453       p_to.attribute10 := p_from.attribute10;
2454       p_to.attribute11 := p_from.attribute11;
2455       p_to.attribute12 := p_from.attribute12;
2456       p_to.attribute13 := p_from.attribute13;
2457       p_to.attribute14 := p_from.attribute14;
2458       p_to.attribute15 := p_from.attribute15;
2459       p_to.created_by := p_from.created_by;
2460       p_to.creation_date := p_from.creation_date;
2461       p_to.last_updated_by := p_from.last_updated_by;
2462       p_to.last_update_date := p_from.last_update_date;
2463       p_to.last_update_login := p_from.last_update_login;
2464 
2465       -- modified by dcshanmu for eBTax project - modification start
2466       p_to.tax_attribute_def_id := p_from.tax_attribute_def_id;
2467       p_to.result_type_code := p_from.result_type_code;
2468       p_to.book_class_code := p_from.book_class_code;
2469       p_to.date_effective_from := p_from.date_effective_from;
2470       p_to.date_effective_to := p_from.date_effective_to;
2471       p_to.tax_country_code := p_from.tax_country_code;
2472       p_to.term_quote_type_code := p_from.term_quote_type_code;
2473       p_to.term_quote_reason_code := p_from.term_quote_reason_code;
2474       p_to.expire_flag := p_from.expire_flag;
2475       -- modified by dcshanmu for eBTax project - modification end
2476     END migrate;
2477     PROCEDURE migrate (
2478       p_from IN tbc_rec_type,
2479       p_to   IN OUT NOCOPY tbcv_rec_type
2480     ) IS
2481     BEGIN
2482      -- p_to.id := p_from.id;
2483      -- p_to.org_id := p_from.org_id;
2484       p_to.result_code := p_from.result_code;
2485       p_to.purchase_option_code := p_from.purchase_option_code;
2486       p_to.pdt_id := p_from.pdt_id;
2487       p_to.try_id := p_from.try_id;
2488       p_to.sty_id := p_from.sty_id;
2489       p_to.int_disclosed_code := p_from.int_disclosed_code;
2490       p_to.title_trnsfr_code := p_from.title_trnsfr_code;
2491       p_to.sale_lease_back_code := p_from.sale_lease_back_code;
2492       p_to.lease_purchased_code := p_from.lease_purchased_code;
2493       p_to.equip_usage_code := p_from.equip_usage_code;
2494       p_to.vendor_site_id := p_from.vendor_site_id;
2495       p_to.age_of_equip_from := p_from.age_of_equip_from;
2496       p_to.age_of_equip_to := p_from.age_of_equip_to;
2497       p_to.object_version_number := p_from.object_version_number;
2498       p_to.attribute_category := p_from.attribute_category;
2499       p_to.attribute1 := p_from.attribute1;
2500       p_to.attribute2 := p_from.attribute2;
2501       p_to.attribute3 := p_from.attribute3;
2502       p_to.attribute4 := p_from.attribute4;
2503       p_to.attribute5 := p_from.attribute5;
2504       p_to.attribute6 := p_from.attribute6;
2505       p_to.attribute7 := p_from.attribute7;
2506       p_to.attribute8 := p_from.attribute8;
2507       p_to.attribute9 := p_from.attribute9;
2508       p_to.attribute10 := p_from.attribute10;
2509       p_to.attribute11 := p_from.attribute11;
2510       p_to.attribute12 := p_from.attribute12;
2511       p_to.attribute13 := p_from.attribute13;
2512       p_to.attribute14 := p_from.attribute14;
2513       p_to.attribute15 := p_from.attribute15;
2514       p_to.created_by := p_from.created_by;
2515       p_to.creation_date := p_from.creation_date;
2516       p_to.last_updated_by := p_from.last_updated_by;
2517       p_to.last_update_date := p_from.last_update_date;
2518       p_to.last_update_login := p_from.last_update_login;
2519 
2520       -- modified by dcshanmu for eBTax project - modification start
2521       p_to.tax_attribute_def_id := p_from.tax_attribute_def_id;
2522       p_to.result_type_code := p_from.result_type_code;
2523       p_to.book_class_code := p_from.book_class_code;
2524       p_to.date_effective_from := p_from.date_effective_from;
2525       p_to.date_effective_to := p_from.date_effective_to;
2526       p_to.tax_country_code := p_from.tax_country_code;
2527       p_to.term_quote_type_code := p_from.term_quote_type_code;
2528       p_to.term_quote_reason_code := p_from.term_quote_reason_code;
2529       p_to.expire_flag := p_from.expire_flag;
2530       -- modified by dcshanmu for eBTax project - modification end
2531     END migrate;
2532     ---------------------------------------------------------------------------
2533     -- PROCEDURE validate_row
2534     ---------------------------------------------------------------------------
2535     --------------------------------------------
2536     -- validate_row for:OKL_TAX_ATTR_DEFINITIONS --
2537     --------------------------------------------
2538     PROCEDURE validate_row(
2539       p_api_version                  IN NUMBER,
2540       p_init_msg_list                IN VARCHAR2,
2541       x_return_status                OUT NOCOPY VARCHAR2,
2542       x_msg_count                    OUT NOCOPY NUMBER,
2543       x_msg_data                     OUT NOCOPY VARCHAR2,
2544       p_tbcv_rec                     IN tbcv_rec_type) IS
2545 
2546       l_api_version                  CONSTANT NUMBER := 1;
2547       l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
2548       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2549       l_tbcv_rec                     tbcv_rec_type := p_tbcv_rec;
2550       l_tbc_rec                      tbc_rec_type;
2551       l_tbc_rec                      tbc_rec_type;
2552     BEGIN
2553       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2554                                                 G_PKG_NAME,
2555                                                 p_init_msg_list,
2556                                                 l_api_version,
2557                                                 p_api_version,
2558                                                 '_PVT',
2559                                                 x_return_status);
2560       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2561         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2562       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2563         RAISE OKL_API.G_EXCEPTION_ERROR;
2564       END IF;
2565       --- Validate all non-missing attributes (Item Level Validation)
2566       l_return_status := Validate_Attributes(l_tbcv_rec);
2567       --- If any errors happen abort API
2568       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2569         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2570       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2571         RAISE OKL_API.G_EXCEPTION_ERROR;
2572       END IF;
2573       l_return_status := Validate_Record(l_tbcv_rec);
2574       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2575         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2576       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2577         RAISE OKL_API.G_EXCEPTION_ERROR;
2578       END IF;
2579       x_return_status := l_return_status;
2580     EXCEPTION
2581       WHEN OKL_API.G_EXCEPTION_ERROR THEN
2582         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2583         (
2584           l_api_name,
2585           G_PKG_NAME,
2586           'OKL_API.G_RET_STS_ERROR',
2587           x_msg_count,
2588           x_msg_data,
2589           '_PVT'
2590         );
2591       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2592         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2593         (
2594           l_api_name,
2595           G_PKG_NAME,
2596           'OKL_API.G_RET_STS_UNEXP_ERROR',
2597           x_msg_count,
2598           x_msg_data,
2599           '_PVT'
2600         );
2601       WHEN OTHERS THEN
2602         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2603         (
2604           l_api_name,
2605           G_PKG_NAME,
2606           'OTHERS',
2607           x_msg_count,
2608           x_msg_data,
2609           '_PVT'
2610         );
2611     END validate_row;
2612     -------------------------------------------------------
2613     -- PL/SQL TBL validate_row for:OKL_TAX_ATTR_DEFINITIONS --
2614     -------------------------------------------------------
2615     PROCEDURE validate_row(
2616       p_api_version                  IN NUMBER,
2617       p_init_msg_list                IN VARCHAR2,
2618       x_return_status                OUT NOCOPY VARCHAR2,
2619       x_msg_count                    OUT NOCOPY NUMBER,
2620       x_msg_data                     OUT NOCOPY VARCHAR2,
2621       p_tbcv_tbl                     IN tbcv_tbl_type,
2622       px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2623 
2624       l_api_version                  CONSTANT NUMBER := 1;
2625       l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
2626       i                              NUMBER := 0;
2627     BEGIN
2628       OKL_API.init_msg_list(p_init_msg_list);
2629       -- Make sure PL/SQL table has records in it before passing
2630       IF (p_tbcv_tbl.COUNT > 0) THEN
2631         i := p_tbcv_tbl.FIRST;
2632         LOOP
2633           DECLARE
2634             l_error_rec         OKL_API.ERROR_REC_TYPE;
2635           BEGIN
2636             l_error_rec.api_name := l_api_name;
2637             l_error_rec.api_package := G_PKG_NAME;
2638             l_error_rec.idx := i;
2639             validate_row (
2640               p_api_version                  => p_api_version,
2641               p_init_msg_list                => OKL_API.G_FALSE,
2642               x_return_status                => l_error_rec.error_type,
2643               x_msg_count                    => l_error_rec.msg_count,
2644               x_msg_data                     => l_error_rec.msg_data,
2645               p_tbcv_rec                     => p_tbcv_tbl(i));
2646             IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2647               l_error_rec.sqlcode := SQLCODE;
2648               load_error_tbl(l_error_rec, px_error_tbl);
2649             ELSE
2650               x_msg_count := l_error_rec.msg_count;
2651               x_msg_data := l_error_rec.msg_data;
2652             END IF;
2653           EXCEPTION
2654             WHEN OKL_API.G_EXCEPTION_ERROR THEN
2655               l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2656               l_error_rec.sqlcode := SQLCODE;
2657               load_error_tbl(l_error_rec, px_error_tbl);
2658             WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2659               l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2660               l_error_rec.sqlcode := SQLCODE;
2661               load_error_tbl(l_error_rec, px_error_tbl);
2662             WHEN OTHERS THEN
2663               l_error_rec.error_type := 'OTHERS';
2664               l_error_rec.sqlcode := SQLCODE;
2665               load_error_tbl(l_error_rec, px_error_tbl);
2666           END;
2667           EXIT WHEN (i = p_tbcv_tbl.LAST);
2668           i := p_tbcv_tbl.NEXT(i);
2669         END LOOP;
2670       END IF;
2671       -- Loop through the error_tbl to find the error with the highest severity
2672       -- and return it.
2673       x_return_status := find_highest_exception(px_error_tbl);
2674       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2675     EXCEPTION
2676       WHEN OKL_API.G_EXCEPTION_ERROR THEN
2677         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2678         (
2679           l_api_name,
2680           G_PKG_NAME,
2681           'OKL_API.G_RET_STS_ERROR',
2682           x_msg_count,
2683           x_msg_data,
2684           '_PVT'
2685         );
2686       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2687         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2688         (
2689           l_api_name,
2690           G_PKG_NAME,
2691           'OKL_API.G_RET_STS_UNEXP_ERROR',
2692           x_msg_count,
2693           x_msg_data,
2694           '_PVT'
2695         );
2696       WHEN OTHERS THEN
2697         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2698         (
2699           l_api_name,
2700           G_PKG_NAME,
2701           'OTHERS',
2702           x_msg_count,
2703           x_msg_data,
2704           '_PVT'
2705         );
2706     END validate_row;
2707 
2708     -------------------------------------------------------
2709     -- PL/SQL TBL validate_row for:OKL_TAX_ATTR_DEFINITIONS --
2710     -------------------------------------------------------
2711     PROCEDURE validate_row(
2712       p_api_version                  IN NUMBER,
2713       p_init_msg_list                IN VARCHAR2,
2714       x_return_status                OUT NOCOPY VARCHAR2,
2715       x_msg_count                    OUT NOCOPY NUMBER,
2716       x_msg_data                     OUT NOCOPY VARCHAR2,
2717       p_tbcv_tbl                     IN tbcv_tbl_type) IS
2718 
2719       l_api_version                  CONSTANT NUMBER := 1;
2720       l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
2721       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2722       l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2723     BEGIN
2724       OKL_API.init_msg_list(p_init_msg_list);
2725       -- Make sure PL/SQL table has records in it before passing
2726       IF (p_tbcv_tbl.COUNT > 0) THEN
2727         validate_row (
2728           p_api_version                  => p_api_version,
2729           p_init_msg_list                => OKL_API.G_FALSE,
2730           x_return_status                => x_return_status,
2731           x_msg_count                    => x_msg_count,
2732           x_msg_data                     => x_msg_data,
2733           p_tbcv_tbl                     => p_tbcv_tbl,
2734           px_error_tbl                   => l_error_tbl);
2735       END IF;
2736       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2737     EXCEPTION
2738       WHEN OKL_API.G_EXCEPTION_ERROR THEN
2739         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2740         (
2741           l_api_name,
2742           G_PKG_NAME,
2743           'OKL_API.G_RET_STS_ERROR',
2744           x_msg_count,
2745           x_msg_data,
2746           '_PVT'
2747         );
2748       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2749         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2750         (
2751           l_api_name,
2752           G_PKG_NAME,
2753           'OKL_API.G_RET_STS_UNEXP_ERROR',
2754           x_msg_count,
2755           x_msg_data,
2756           '_PVT'
2757         );
2758       WHEN OTHERS THEN
2759         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2760         (
2761           l_api_name,
2762           G_PKG_NAME,
2763           'OTHERS',
2764           x_msg_count,
2765           x_msg_data,
2766           '_PVT'
2767         );
2768     END validate_row;
2769 
2770     ---------------------------------------------------------------------------
2771     -- PROCEDURE insert_row
2772     ---------------------------------------------------------------------------
2773     ------------------------------------------
2774     -- insert_row for:OKL_TAX_ATTR_DEFINITIONS --
2775     ------------------------------------------
2776     PROCEDURE insert_row(
2777       p_init_msg_list                IN VARCHAR2,
2778       x_return_status                OUT NOCOPY VARCHAR2,
2779       x_msg_count                    OUT NOCOPY NUMBER,
2780       x_msg_data                     OUT NOCOPY VARCHAR2,
2781       p_tbc_rec                      IN tbc_rec_type,
2782       x_tbc_rec                      OUT NOCOPY tbc_rec_type) IS
2783 
2784       l_api_version                  CONSTANT NUMBER := 1;
2785       l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
2786       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2787       l_tbc_rec                      tbc_rec_type := p_tbc_rec;
2788       l_def_tbc_rec                  tbc_rec_type;
2789       ----------------------------------------------
2790       -- Set_Attributes for:OKL_TAX_ATTR_DEFINITIONS--
2791       ----------------------------------------------
2792       FUNCTION Set_Attributes (
2793         p_tbc_rec IN tbc_rec_type,
2794         x_tbc_rec OUT NOCOPY tbc_rec_type
2795       ) RETURN VARCHAR2 IS
2796         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2797       BEGIN
2798         x_tbc_rec := p_tbc_rec;
2799         x_tbc_rec.tax_attribute_def_id := okc_p_util.raw_to_number(sys_guid());
2800         x_tbc_rec.date_effective_from := to_date('01-01-1960','dd-mm-rrrr');
2801         RETURN(l_return_status);
2802       END Set_Attributes;
2803     BEGIN
2804       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2805                                                 p_init_msg_list,
2806                                                 '_PVT',
2807                                                 x_return_status);
2808       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2809         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2810       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2811         RAISE OKL_API.G_EXCEPTION_ERROR;
2812       END IF;
2813       --- Setting item atributes
2814       l_return_status := Set_Attributes(
2815         p_tbc_rec,                         -- IN
2816         l_tbc_rec);                        -- OUT
2817       --- If any errors happen abort API
2818       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2819         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2820       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2821         RAISE OKL_API.G_EXCEPTION_ERROR;
2822       END IF;
2823       INSERT INTO OKL_TAX_ATTR_DEFINITIONS(
2824        -- id,
2825        -- org_id,
2826         result_code,
2827         purchase_option_code,
2828         pdt_id,
2829         try_id,
2830         sty_id,
2831         int_disclosed_code,
2832         title_trnsfr_code,
2833         sale_lease_back_code,
2834         lease_purchased_code,
2835         equip_usage_code,
2836         vendor_site_id,
2837         age_of_equip_from,
2838         age_of_equip_to,
2839         object_version_number,
2840         attribute_category,
2841         attribute1,
2842         attribute2,
2843         attribute3,
2844         attribute4,
2845         attribute5,
2846         attribute6,
2847         attribute7,
2848         attribute8,
2849         attribute9,
2850         attribute10,
2851         attribute11,
2852         attribute12,
2853         attribute13,
2854         attribute14,
2855         attribute15,
2856         created_by,
2857         creation_date,
2858         last_updated_by,
2859         last_update_date,
2860         last_update_login,
2861         -- modified by dcshanmu for eBTax project - modification start
2862         tax_attribute_def_id,
2863         result_type_code,
2864         book_class_code,
2865         date_effective_from,
2866         date_effective_to,
2867         tax_country_code,
2868         term_quote_type_code,
2869         term_quote_reason_code,
2870         expire_flag)
2871         -- modified by dcshanmu for eBTax project - modification end
2872       VALUES (
2873        -- l_tbc_rec.id,
2874        -- l_tbc_rec.org_id,
2875         l_tbc_rec.result_code,
2876         l_tbc_rec.purchase_option_code,
2877         l_tbc_rec.pdt_id,
2878         l_tbc_rec.try_id,
2879         l_tbc_rec.sty_id,
2880         l_tbc_rec.int_disclosed_code,
2881         l_tbc_rec.title_trnsfr_code,
2882         l_tbc_rec.sale_lease_back_code,
2883         l_tbc_rec.lease_purchased_code,
2884         l_tbc_rec.equip_usage_code,
2885         l_tbc_rec.vendor_site_id,
2886         l_tbc_rec.age_of_equip_from,
2887         l_tbc_rec.age_of_equip_to,
2888         l_tbc_rec.object_version_number,
2889         l_tbc_rec.attribute_category,
2890         l_tbc_rec.attribute1,
2891         l_tbc_rec.attribute2,
2892         l_tbc_rec.attribute3,
2893         l_tbc_rec.attribute4,
2894         l_tbc_rec.attribute5,
2895         l_tbc_rec.attribute6,
2896         l_tbc_rec.attribute7,
2897         l_tbc_rec.attribute8,
2898         l_tbc_rec.attribute9,
2899         l_tbc_rec.attribute10,
2900         l_tbc_rec.attribute11,
2901         l_tbc_rec.attribute12,
2902         l_tbc_rec.attribute13,
2903         l_tbc_rec.attribute14,
2904         l_tbc_rec.attribute15,
2905         l_tbc_rec.created_by,
2906         l_tbc_rec.creation_date,
2907         l_tbc_rec.last_updated_by,
2908         l_tbc_rec.last_update_date,
2909         l_tbc_rec.last_update_login,
2910         -- modified by dcshanmu for eBTax project - modification start
2911         l_tbc_rec.tax_attribute_def_id,
2912         l_tbc_rec.result_type_code,
2913         l_tbc_rec.book_class_code,
2914         l_tbc_rec.date_effective_from,
2915         l_tbc_rec.date_effective_to,
2916         l_tbc_rec.tax_country_code,
2917         l_tbc_rec.term_quote_type_code,
2918         l_tbc_rec.term_quote_reason_code,
2919         l_tbc_rec.expire_flag);
2920         -- modified by dcshanmu for eBTax project - modification end
2921       -- Set OUT values
2922       x_tbc_rec := l_tbc_rec;
2923       x_return_status := l_return_status;
2924       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2925     EXCEPTION
2926       WHEN OKL_API.G_EXCEPTION_ERROR THEN
2927         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2928         (
2929           l_api_name,
2930           G_PKG_NAME,
2931           'OKL_API.G_RET_STS_ERROR',
2932           x_msg_count,
2933           x_msg_data,
2934           '_PVT'
2935         );
2936       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2937         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2938         (
2939           l_api_name,
2940           G_PKG_NAME,
2941           'OKL_API.G_RET_STS_UNEXP_ERROR',
2942           x_msg_count,
2943           x_msg_data,
2944           '_PVT'
2945         );
2946       WHEN OTHERS THEN
2947         x_return_status := OKL_API.HANDLE_EXCEPTIONS
2948         (
2949           l_api_name,
2950           G_PKG_NAME,
2951           'OTHERS',
2952           x_msg_count,
2953           x_msg_data,
2954           '_PVT'
2955         );
2956     END insert_row;
2957     -------------------------------------------
2958     -- insert_row for :OKL_TAX_ATTR_DEFINITIONS --
2959     -------------------------------------------
2960     PROCEDURE insert_row(
2961       p_api_version                  IN NUMBER,
2962       p_init_msg_list                IN VARCHAR2,
2963       x_return_status                OUT NOCOPY VARCHAR2,
2964       x_msg_count                    OUT NOCOPY NUMBER,
2965       x_msg_data                     OUT NOCOPY VARCHAR2,
2966       p_tbcv_rec                     IN tbcv_rec_type,
2967       x_tbcv_rec                     OUT NOCOPY tbcv_rec_type) IS
2968 
2969       l_api_version                  CONSTANT NUMBER := 1;
2970       l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2971       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2972       l_tbcv_rec                     tbcv_rec_type := p_tbcv_rec;
2973       l_def_tbcv_rec                 tbcv_rec_type;
2974       l_tbc_rec                      tbc_rec_type;
2975       lx_tbc_rec                     tbc_rec_type;
2976       -------------------------------
2977       -- FUNCTION fill_who_columns --
2978       -------------------------------
2979       FUNCTION fill_who_columns (
2980         p_tbcv_rec IN tbcv_rec_type
2981       ) RETURN tbcv_rec_type IS
2982         l_tbcv_rec tbcv_rec_type := p_tbcv_rec;
2983       BEGIN
2984         l_tbcv_rec.CREATION_DATE := SYSDATE;
2985         l_tbcv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2986         l_tbcv_rec.LAST_UPDATE_DATE := l_tbcv_rec.CREATION_DATE;
2987         l_tbcv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2988         l_tbcv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2989         RETURN(l_tbcv_rec);
2990       END fill_who_columns;
2991       ----------------------------------------------
2992       -- Set_Attributes for:OKL_TAX_ATTR_DEFINITIONS --
2993       ----------------------------------------------
2994       FUNCTION Set_Attributes (
2995         p_tbcv_rec IN tbcv_rec_type,
2996         x_tbcv_rec OUT NOCOPY tbcv_rec_type
2997       ) RETURN VARCHAR2 IS
2998         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2999       BEGIN
3000         x_tbcv_rec := p_tbcv_rec;
3001         x_tbcv_rec.OBJECT_VERSION_NUMBER := 1;
3002         RETURN(l_return_status);
3003       END Set_Attributes;
3004     BEGIN
3005       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3006                                                 G_PKG_NAME,
3007                                                 p_init_msg_list,
3008                                                 l_api_version,
3009                                                 p_api_version,
3010                                                 '_PVT',
3011                                                 x_return_status);
3012       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3013         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3014       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3015         RAISE OKL_API.G_EXCEPTION_ERROR;
3016       END IF;
3017       l_tbcv_rec := null_out_defaults(p_tbcv_rec);
3018       -- Set primary key value
3019       l_tbcv_rec.tax_attribute_def_id := get_seq_id;
3020       -- Setting item attributes
3021       l_return_Status := Set_Attributes(
3022         l_tbcv_rec,                        -- IN
3023         l_def_tbcv_rec);                   -- OUT
3024       --- If any errors happen abort API
3025       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3026         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3027       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3028         RAISE OKL_API.G_EXCEPTION_ERROR;
3029       END IF;
3030       l_def_tbcv_rec := fill_who_columns(l_def_tbcv_rec);
3031 
3032       --- Validate all non-missing attributes (Item Level Validation)
3033       l_return_status := Validate_Attributes(l_def_tbcv_rec);
3034       --- If any errors happen abort API
3035       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3036         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3037       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3038         RAISE OKL_API.G_EXCEPTION_ERROR;
3039       END IF;
3040       l_return_status := Validate_Record(l_def_tbcv_rec);
3041       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3042         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3043       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3044         RAISE OKL_API.G_EXCEPTION_ERROR;
3045       END IF;
3046       -----------------------------------------
3047       -- Move VIEW record to "Child" records --
3048       -----------------------------------------
3049       migrate(l_def_tbcv_rec, l_tbc_rec);
3050       -----------------------------------------------
3051       -- Call the INSERT_ROW for each child record --
3052       -----------------------------------------------
3053       insert_row(
3054         p_init_msg_list,
3055         l_return_status,
3056         x_msg_count,
3057         x_msg_data,
3058         l_tbc_rec,
3059         lx_tbc_rec
3060       );
3061       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3062         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3063       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3064         RAISE OKL_API.G_EXCEPTION_ERROR;
3065       END IF;
3066       migrate(lx_tbc_rec, l_def_tbcv_rec);
3067       -- Set OUT values
3068 
3069       x_tbcv_rec := l_def_tbcv_rec;
3070       x_return_status := l_return_status;
3071       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3072     EXCEPTION
3073       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3074         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3075         (
3076           l_api_name,
3077           G_PKG_NAME,
3078           'OKL_API.G_RET_STS_ERROR',
3079           x_msg_count,
3080           x_msg_data,
3081           '_PVT'
3082         );
3083       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3084         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3085         (
3086           l_api_name,
3087           G_PKG_NAME,
3088           'OKL_API.G_RET_STS_UNEXP_ERROR',
3089           x_msg_count,
3090           x_msg_data,
3091           '_PVT'
3092         );
3093       WHEN OTHERS THEN
3094         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3095         (
3096           l_api_name,
3097           G_PKG_NAME,
3098           'OTHERS',
3099           x_msg_count,
3100           x_msg_data,
3101           '_PVT'
3102         );
3103     END insert_row;
3104     ----------------------------------------
3105     -- PL/SQL TBL insert_row for:TBCV_TBL --
3106     ----------------------------------------
3107     PROCEDURE insert_row(
3108       p_api_version                  IN NUMBER,
3109       p_init_msg_list                IN VARCHAR2,
3110       x_return_status                OUT NOCOPY VARCHAR2,
3111       x_msg_count                    OUT NOCOPY NUMBER,
3112       x_msg_data                     OUT NOCOPY VARCHAR2,
3113       p_tbcv_tbl                     IN tbcv_tbl_type,
3114       x_tbcv_tbl                     OUT NOCOPY tbcv_tbl_type,
3115       px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3116 
3117       l_api_version                  CONSTANT NUMBER := 1;
3118       l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
3119       i                              NUMBER := 0;
3120     BEGIN
3121       OKL_API.init_msg_list(p_init_msg_list);
3122       -- Make sure PL/SQL table has records in it before passing
3123       IF (p_tbcv_tbl.COUNT > 0) THEN
3124         i := p_tbcv_tbl.FIRST;
3125         LOOP
3126           DECLARE
3127             l_error_rec         OKL_API.ERROR_REC_TYPE;
3128           BEGIN
3129             l_error_rec.api_name := l_api_name;
3130             l_error_rec.api_package := G_PKG_NAME;
3131             l_error_rec.idx := i;
3132             insert_row (
3133               p_api_version                  => p_api_version,
3134               p_init_msg_list                => OKL_API.G_FALSE,
3135               x_return_status                => l_error_rec.error_type,
3136               x_msg_count                    => l_error_rec.msg_count,
3137               x_msg_data                     => l_error_rec.msg_data,
3138               p_tbcv_rec                     => p_tbcv_tbl(i),
3139               x_tbcv_rec                     => x_tbcv_tbl(i));
3140             IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3141               l_error_rec.sqlcode := SQLCODE;
3142               load_error_tbl(l_error_rec, px_error_tbl);
3143             ELSE
3144               x_msg_count := l_error_rec.msg_count;
3145               x_msg_data := l_error_rec.msg_data;
3146             END IF;
3147           EXCEPTION
3148             WHEN OKL_API.G_EXCEPTION_ERROR THEN
3149               l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3150               l_error_rec.sqlcode := SQLCODE;
3151               load_error_tbl(l_error_rec, px_error_tbl);
3152             WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3153               l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3154               l_error_rec.sqlcode := SQLCODE;
3155               load_error_tbl(l_error_rec, px_error_tbl);
3156             WHEN OTHERS THEN
3157               l_error_rec.error_type := 'OTHERS';
3158               l_error_rec.sqlcode := SQLCODE;
3159               load_error_tbl(l_error_rec, px_error_tbl);
3160           END;
3161           EXIT WHEN (i = p_tbcv_tbl.LAST);
3162           i := p_tbcv_tbl.NEXT(i);
3163         END LOOP;
3164       END IF;
3165       -- Loop through the error_tbl to find the error with the highest severity
3166       -- and return it.
3167       x_return_status := find_highest_exception(px_error_tbl);
3168       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3169     EXCEPTION
3170       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3171         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3172         (
3173           l_api_name,
3174           G_PKG_NAME,
3175           'OKL_API.G_RET_STS_ERROR',
3176           x_msg_count,
3177           x_msg_data,
3178           '_PVT'
3179         );
3180       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3181         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3182         (
3183           l_api_name,
3184           G_PKG_NAME,
3185           'OKL_API.G_RET_STS_UNEXP_ERROR',
3186           x_msg_count,
3187           x_msg_data,
3188           '_PVT'
3189         );
3190       WHEN OTHERS THEN
3191         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3192         (
3193           l_api_name,
3194           G_PKG_NAME,
3195           'OTHERS',
3196           x_msg_count,
3197           x_msg_data,
3198           '_PVT'
3199         );
3200     END insert_row;
3201 
3202     ----------------------------------------
3203     -- PL/SQL TBL insert_row for:TBCV_TBL --
3204     ----------------------------------------
3205     -- This procedure is the same as the one above except it does not have a "px_error_tbl" argument.
3206     -- This procedure was create for backward compatibility and simply is a wrapper for the one above.
3207     PROCEDURE insert_row(
3208       p_api_version                  IN NUMBER,
3209       p_init_msg_list                IN VARCHAR2,
3210       x_return_status                OUT NOCOPY VARCHAR2,
3211       x_msg_count                    OUT NOCOPY NUMBER,
3212       x_msg_data                     OUT NOCOPY VARCHAR2,
3213       p_tbcv_tbl                     IN tbcv_tbl_type,
3214       x_tbcv_tbl                     OUT NOCOPY tbcv_tbl_type) IS
3215 
3216       l_api_version                  CONSTANT NUMBER := 1;
3217       l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
3218       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3219       l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3220     BEGIN
3221       OKL_API.init_msg_list(p_init_msg_list);
3222       -- Make sure PL/SQL table has records in it before passing
3223       IF (p_tbcv_tbl.COUNT > 0) THEN
3224         insert_row (
3225           p_api_version                  => p_api_version,
3226           p_init_msg_list                => OKL_API.G_FALSE,
3227           x_return_status                => x_return_status,
3228           x_msg_count                    => x_msg_count,
3229           x_msg_data                     => x_msg_data,
3230           p_tbcv_tbl                     => p_tbcv_tbl,
3231           x_tbcv_tbl                     => x_tbcv_tbl,
3232           px_error_tbl                   => l_error_tbl);
3233       END IF;
3234       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3235     EXCEPTION
3236       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3237         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3238         (
3239           l_api_name,
3240           G_PKG_NAME,
3241           'OKL_API.G_RET_STS_ERROR',
3242           x_msg_count,
3243           x_msg_data,
3244           '_PVT'
3245         );
3246       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3247         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3248         (
3249           l_api_name,
3250           G_PKG_NAME,
3251           'OKL_API.G_RET_STS_UNEXP_ERROR',
3252           x_msg_count,
3253           x_msg_data,
3254           '_PVT'
3255         );
3256       WHEN OTHERS THEN
3257         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3258         (
3259           l_api_name,
3260           G_PKG_NAME,
3261           'OTHERS',
3262           x_msg_count,
3263           x_msg_data,
3264           '_PVT'
3265         );
3266     END insert_row;
3267 
3268     ---------------------------------------------------------------------------
3269     -- PROCEDURE lock_row
3270     ---------------------------------------------------------------------------
3271     ----------------------------------------
3272     -- lock_row for:OKL_TAX_ATTR_DEFINITIONS --
3273     ----------------------------------------
3274     PROCEDURE lock_row(
3275       p_init_msg_list                IN VARCHAR2,
3276       x_return_status                OUT NOCOPY VARCHAR2,
3277       x_msg_count                    OUT NOCOPY NUMBER,
3278       x_msg_data                     OUT NOCOPY VARCHAR2,
3279       p_tbc_rec                      IN tbc_rec_type) IS
3280 
3281       E_Resource_Busy                EXCEPTION;
3282       PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3283       CURSOR lock_csr (p_tbc_rec IN tbc_rec_type) IS
3284       SELECT OBJECT_VERSION_NUMBER
3285         FROM OKL_TAX_ATTR_DEFINITIONS
3286        --WHERE ID = p_tbc_rec.id
3287        WHERE RESULT_CODE = p_tbc_rec.result_code
3288          AND OBJECT_VERSION_NUMBER = p_tbc_rec.object_version_number
3289       FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
3290 
3291       CURSOR lchk_csr (p_tbc_rec IN tbc_rec_type) IS
3292       SELECT OBJECT_VERSION_NUMBER
3293         FROM OKL_TAX_ATTR_DEFINITIONS
3294       -- WHERE ID = p_tbc_rec.id;
3295       WHERE RESULT_CODE = p_tbc_rec.result_code;
3296       l_api_version                  CONSTANT NUMBER := 1;
3297       l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
3298       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3299       l_object_version_number        OKL_TAX_ATTR_DEFINITIONS.OBJECT_VERSION_NUMBER%TYPE;
3300       lc_object_version_number       OKL_TAX_ATTR_DEFINITIONS.OBJECT_VERSION_NUMBER%TYPE;
3301       l_row_notfound                 BOOLEAN := FALSE;
3302       lc_row_notfound                BOOLEAN := FALSE;
3303     BEGIN
3304       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3305                                                 p_init_msg_list,
3306                                                 '_PVT',
3307                                                 x_return_status);
3308       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3309         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3310       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3311         RAISE OKL_API.G_EXCEPTION_ERROR;
3312       END IF;
3313       BEGIN
3314         OPEN lock_csr(p_tbc_rec);
3315         FETCH lock_csr INTO l_object_version_number;
3316         l_row_notfound := lock_csr%NOTFOUND;
3317         CLOSE lock_csr;
3318       EXCEPTION
3319         WHEN E_Resource_Busy THEN
3320           IF (lock_csr%ISOPEN) THEN
3321             CLOSE lock_csr;
3322           END IF;
3323           OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3324           RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3325       END;
3326 
3327       IF ( l_row_notfound ) THEN
3328         OPEN lchk_csr(p_tbc_rec);
3329         FETCH lchk_csr INTO lc_object_version_number;
3330         lc_row_notfound := lchk_csr%NOTFOUND;
3331         CLOSE lchk_csr;
3332       END IF;
3333       IF (lc_row_notfound) THEN
3334         OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3335         RAISE OKL_API.G_EXCEPTION_ERROR;
3336       ELSIF lc_object_version_number > p_tbc_rec.object_version_number THEN
3337         OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3338         RAISE OKL_API.G_EXCEPTION_ERROR;
3339       ELSIF lc_object_version_number <> p_tbc_rec.object_version_number THEN
3340         OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3341         RAISE OKL_API.G_EXCEPTION_ERROR;
3342       ELSIF lc_object_version_number = -1 THEN
3343         OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
3344         RAISE OKL_API.G_EXCEPTION_ERROR;
3345       END IF;
3346       x_return_status := l_return_status;
3347       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3348     EXCEPTION
3349       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3350         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3351         (
3352           l_api_name,
3353           G_PKG_NAME,
3354           'OKL_API.G_RET_STS_ERROR',
3355           x_msg_count,
3356           x_msg_data,
3357           '_PVT'
3358         );
3359       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3360         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3361         (
3362           l_api_name,
3363           G_PKG_NAME,
3364           'OKL_API.G_RET_STS_UNEXP_ERROR',
3365           x_msg_count,
3366           x_msg_data,
3367           '_PVT'
3368         );
3369       WHEN OTHERS THEN
3370         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3371         (
3372           l_api_name,
3373           G_PKG_NAME,
3374           'OTHERS',
3375           x_msg_count,
3376           x_msg_data,
3377           '_PVT'
3378         );
3379     END lock_row;
3380     -----------------------------------------
3381     -- lock_row for: OKL_TAX_ATTR_DEFINITIONS --
3382     -----------------------------------------
3383     PROCEDURE lock_row(
3384       p_api_version                  IN NUMBER,
3385       p_init_msg_list                IN VARCHAR2,
3386       x_return_status                OUT NOCOPY VARCHAR2,
3387       x_msg_count                    OUT NOCOPY NUMBER,
3388       x_msg_data                     OUT NOCOPY VARCHAR2,
3389       p_tbcv_rec                     IN tbcv_rec_type) IS
3390 
3391       l_api_version                  CONSTANT NUMBER := 1;
3392       l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
3393       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3394       l_tbc_rec                      tbc_rec_type;
3395     BEGIN
3396       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3397                                                 G_PKG_NAME,
3398                                                 p_init_msg_list,
3399                                                 l_api_version,
3400                                                 p_api_version,
3401                                                 '_PVT',
3402                                                 x_return_status);
3403       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3404         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3405       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3406         RAISE OKL_API.G_EXCEPTION_ERROR;
3407       END IF;
3408       -----------------------------------------
3409       -- Move VIEW record to "Child" records --
3410       -----------------------------------------
3411       migrate(p_tbcv_rec, l_tbc_rec);
3412       ---------------------------------------------
3413       -- Call the LOCK_ROW for each child record --
3414       ---------------------------------------------
3415       lock_row(
3416         p_init_msg_list,
3417         l_return_status,
3418         x_msg_count,
3419         x_msg_data,
3420         l_tbc_rec
3421       );
3422       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3423         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3424       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3425         RAISE OKL_API.G_EXCEPTION_ERROR;
3426       END IF;
3427       x_return_status := l_return_status;
3428       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3429     EXCEPTION
3430       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3431         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3432         (
3433           l_api_name,
3434           G_PKG_NAME,
3435           'OKL_API.G_RET_STS_ERROR',
3436           x_msg_count,
3437           x_msg_data,
3438           '_PVT'
3439         );
3440       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3441         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3442         (
3443           l_api_name,
3444           G_PKG_NAME,
3445           'OKL_API.G_RET_STS_UNEXP_ERROR',
3446           x_msg_count,
3447           x_msg_data,
3448           '_PVT'
3449         );
3450       WHEN OTHERS THEN
3451         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3452         (
3453           l_api_name,
3454           G_PKG_NAME,
3455           'OTHERS',
3456           x_msg_count,
3457           x_msg_data,
3458           '_PVT'
3459         );
3460     END lock_row;
3461     --------------------------------------
3462     -- PL/SQL TBL lock_row for:TBCV_TBL --
3463     --------------------------------------
3464     PROCEDURE lock_row(
3465       p_api_version                  IN NUMBER,
3466       p_init_msg_list                IN VARCHAR2,
3467       x_return_status                OUT NOCOPY VARCHAR2,
3468       x_msg_count                    OUT NOCOPY NUMBER,
3469       x_msg_data                     OUT NOCOPY VARCHAR2,
3470       p_tbcv_tbl                     IN tbcv_tbl_type,
3471       px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3472 
3473       l_api_version                  CONSTANT NUMBER := 1;
3474       l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
3475       i                              NUMBER := 0;
3476     BEGIN
3477       OKL_API.init_msg_list(p_init_msg_list);
3478       -- Make sure PL/SQL table has recrods in it before passing
3479       IF (p_tbcv_tbl.COUNT > 0) THEN
3480         i := p_tbcv_tbl.FIRST;
3481         LOOP
3482           DECLARE
3483             l_error_rec         OKL_API.ERROR_REC_TYPE;
3484           BEGIN
3485             l_error_rec.api_name := l_api_name;
3486             l_error_rec.api_package := G_PKG_NAME;
3487             l_error_rec.idx := i;
3488             lock_row(
3489               p_api_version                  => p_api_version,
3490               p_init_msg_list                => OKL_API.G_FALSE,
3491               x_return_status                => l_error_rec.error_type,
3492               x_msg_count                    => l_error_rec.msg_count,
3493               x_msg_data                     => l_error_rec.msg_data,
3494               p_tbcv_rec                     => p_tbcv_tbl(i));
3495             IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3496               l_error_rec.sqlcode := SQLCODE;
3497               load_error_tbl(l_error_rec, px_error_tbl);
3498             ELSE
3499               x_msg_count := l_error_rec.msg_count;
3500               x_msg_data := l_error_rec.msg_data;
3501             END IF;
3502           EXCEPTION
3503             WHEN OKL_API.G_EXCEPTION_ERROR THEN
3504               l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3505               l_error_rec.sqlcode := SQLCODE;
3506               load_error_tbl(l_error_rec, px_error_tbl);
3507             WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3508               l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3509               l_error_rec.sqlcode := SQLCODE;
3510               load_error_tbl(l_error_rec, px_error_tbl);
3511             WHEN OTHERS THEN
3512               l_error_rec.error_type := 'OTHERS';
3513               l_error_rec.sqlcode := SQLCODE;
3514               load_error_tbl(l_error_rec, px_error_tbl);
3515           END;
3516           EXIT WHEN (i = p_tbcv_tbl.LAST);
3517           i := p_tbcv_tbl.NEXT(i);
3518         END LOOP;
3519       END IF;
3520       -- Loop through the error_tbl to find the error with the highest severity
3521       -- and return it.
3522       x_return_status := find_highest_exception(px_error_tbl);
3523       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3524     EXCEPTION
3525       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3526         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3527         (
3528           l_api_name,
3529           G_PKG_NAME,
3530           'OKL_API.G_RET_STS_ERROR',
3531           x_msg_count,
3532           x_msg_data,
3533           '_PVT'
3534         );
3535       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3536         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3537         (
3538           l_api_name,
3539           G_PKG_NAME,
3540           'OKL_API.G_RET_STS_UNEXP_ERROR',
3541           x_msg_count,
3542           x_msg_data,
3543           '_PVT'
3544         );
3545       WHEN OTHERS THEN
3546         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3547         (
3548           l_api_name,
3549           G_PKG_NAME,
3550           'OTHERS',
3551           x_msg_count,
3552           x_msg_data,
3553           '_PVT'
3554         );
3555     END lock_row;
3556     --------------------------------------
3557     -- PL/SQL TBL lock_row for:TBCV_TBL --
3558     --------------------------------------
3559     PROCEDURE lock_row(
3560       p_api_version                  IN NUMBER,
3561       p_init_msg_list                IN VARCHAR2,
3562       x_return_status                OUT NOCOPY VARCHAR2,
3563       x_msg_count                    OUT NOCOPY NUMBER,
3564       x_msg_data                     OUT NOCOPY VARCHAR2,
3565       p_tbcv_tbl                     IN tbcv_tbl_type) IS
3566 
3567       l_api_version                  CONSTANT NUMBER := 1;
3568       l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
3569       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3570       l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3571     BEGIN
3572       OKL_API.init_msg_list(p_init_msg_list);
3573       -- Make sure PL/SQL table has recrods in it before passing
3574       IF (p_tbcv_tbl.COUNT > 0) THEN
3575         lock_row(
3576           p_api_version                  => p_api_version,
3577           p_init_msg_list                => OKL_API.G_FALSE,
3578           x_return_status                => x_return_status,
3579           x_msg_count                    => x_msg_count,
3580           x_msg_data                     => x_msg_data,
3581           p_tbcv_tbl                     => p_tbcv_tbl,
3582           px_error_tbl                   => l_error_tbl);
3583       END IF;
3584       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3585     EXCEPTION
3586       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3587         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3588         (
3589           l_api_name,
3590           G_PKG_NAME,
3591           'OKL_API.G_RET_STS_ERROR',
3592           x_msg_count,
3593           x_msg_data,
3594           '_PVT'
3595         );
3596       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3597         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3598         (
3599           l_api_name,
3600           G_PKG_NAME,
3601           'OKL_API.G_RET_STS_UNEXP_ERROR',
3602           x_msg_count,
3603           x_msg_data,
3604           '_PVT'
3605         );
3606       WHEN OTHERS THEN
3607         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3608         (
3609           l_api_name,
3610           G_PKG_NAME,
3611           'OTHERS',
3612           x_msg_count,
3613           x_msg_data,
3614           '_PVT'
3615         );
3616     END lock_row;
3617     ---------------------------------------------------------------------------
3618     -- PROCEDURE update_row
3619     ---------------------------------------------------------------------------
3620     ------------------------------------------
3621     -- update_row for:OKL_TAX_ATTR_DEFINITIONS --
3622     ------------------------------------------
3623     PROCEDURE update_row(
3624       p_init_msg_list                IN VARCHAR2,
3625       x_return_status                OUT NOCOPY VARCHAR2,
3626       x_msg_count                    OUT NOCOPY NUMBER,
3627       x_msg_data                     OUT NOCOPY VARCHAR2,
3628       p_tbc_rec                      IN tbc_rec_type,
3629       x_tbc_rec                      OUT NOCOPY tbc_rec_type) IS
3630 
3631       l_api_version                  CONSTANT NUMBER := 1;
3632       l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3633       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3634       l_tbc_rec                      tbc_rec_type := p_tbc_rec;
3635       l_def_tbc_rec                  tbc_rec_type;
3636       l_row_notfound                 BOOLEAN := TRUE;
3637       ----------------------------------
3638       -- FUNCTION populate_new_record --
3639       ----------------------------------
3640       FUNCTION populate_new_record (
3641         p_tbc_rec IN tbc_rec_type,
3642         x_tbc_rec OUT NOCOPY tbc_rec_type
3643       ) RETURN VARCHAR2 IS
3644         l_tbc_rec                      tbc_rec_type;
3645         l_row_notfound                 BOOLEAN := TRUE;
3646         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3647       BEGIN
3648         x_tbc_rec := p_tbc_rec;
3649         -- Get current database values
3650         l_tbc_rec := get_rec(p_tbc_rec, l_return_status);
3651         IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3652           /*IF (x_tbc_rec.id = OKL_API.G_MISS_NUM)
3653           THEN
3654             x_tbc_rec.id := l_tbc_rec.id;
3655           END IF;
3656           IF (x_tbc_rec.org_id = OKL_API.G_MISS_NUM)
3657           THEN
3658             x_tbc_rec.org_id := l_tbc_rec.org_id;
3659           END IF; */
3660 
3661           -- modified by dcshanmu for eBTax project - modification start
3662           -- modified tbc_code to result_code
3663           IF (x_tbc_rec.result_code = OKL_API.G_MISS_CHAR)
3664           THEN
3665             x_tbc_rec.result_code := l_tbc_rec.result_code;
3666           END IF;
3667           -- modified by dcshanmu for eBTax project - modification end
3668 
3669           IF (x_tbc_rec.purchase_option_code = OKL_API.G_MISS_CHAR)
3670           THEN
3671             x_tbc_rec.purchase_option_code := l_tbc_rec.purchase_option_code;
3672           END IF;
3673           IF (x_tbc_rec.pdt_id = OKL_API.G_MISS_NUM)
3674           THEN
3675             x_tbc_rec.pdt_id := l_tbc_rec.pdt_id;
3676           END IF;
3677           IF (x_tbc_rec.try_id = OKL_API.G_MISS_NUM)
3678           THEN
3679             x_tbc_rec.try_id := l_tbc_rec.try_id;
3680           END IF;
3681           IF (x_tbc_rec.sty_id = OKL_API.G_MISS_NUM)
3682           THEN
3683             x_tbc_rec.sty_id := l_tbc_rec.sty_id;
3684           END IF;
3685           IF (x_tbc_rec.int_disclosed_code = OKL_API.G_MISS_CHAR)
3686           THEN
3687             x_tbc_rec.int_disclosed_code := l_tbc_rec.int_disclosed_code;
3688           END IF;
3689           IF (x_tbc_rec.title_trnsfr_code = OKL_API.G_MISS_CHAR)
3690           THEN
3691             x_tbc_rec.title_trnsfr_code := l_tbc_rec.title_trnsfr_code;
3692           END IF;
3693           IF (x_tbc_rec.sale_lease_back_code = OKL_API.G_MISS_CHAR)
3694           THEN
3695             x_tbc_rec.sale_lease_back_code := l_tbc_rec.sale_lease_back_code;
3696           END IF;
3697           IF (x_tbc_rec.lease_purchased_code = OKL_API.G_MISS_CHAR)
3698           THEN
3699             x_tbc_rec.lease_purchased_code := l_tbc_rec.lease_purchased_code;
3700           END IF;
3701           IF (x_tbc_rec.equip_usage_code = OKL_API.G_MISS_CHAR)
3702           THEN
3703             x_tbc_rec.equip_usage_code := l_tbc_rec.equip_usage_code;
3704           END IF;
3705           IF (x_tbc_rec.vendor_site_id = OKL_API.G_MISS_NUM)
3706           THEN
3707             x_tbc_rec.vendor_site_id := l_tbc_rec.vendor_site_id;
3708           END IF;
3709           IF (x_tbc_rec.age_of_equip_from = OKL_API.G_MISS_NUM)
3710           THEN
3711             x_tbc_rec.age_of_equip_from := l_tbc_rec.age_of_equip_from;
3712           END IF;
3713 
3714           IF (x_tbc_rec.age_of_equip_to = OKL_API.G_MISS_NUM)
3715           THEN
3716             x_tbc_rec.age_of_equip_to := l_tbc_rec.age_of_equip_to;
3717           END IF;
3718 
3719           IF (x_tbc_rec.object_version_number = OKL_API.G_MISS_NUM)
3720           THEN
3721             x_tbc_rec.object_version_number := l_tbc_rec.object_version_number;
3722           END IF;
3723           IF (x_tbc_rec.attribute_category = OKL_API.G_MISS_CHAR)
3724           THEN
3725             x_tbc_rec.attribute_category := l_tbc_rec.attribute_category;
3726           END IF;
3727           IF (x_tbc_rec.attribute1 = OKL_API.G_MISS_CHAR)
3728           THEN
3729             x_tbc_rec.attribute1 := l_tbc_rec.attribute1;
3730           END IF;
3731           IF (x_tbc_rec.attribute2 = OKL_API.G_MISS_CHAR)
3732           THEN
3733             x_tbc_rec.attribute2 := l_tbc_rec.attribute2;
3734           END IF;
3735           IF (x_tbc_rec.attribute3 = OKL_API.G_MISS_CHAR)
3736           THEN
3737             x_tbc_rec.attribute3 := l_tbc_rec.attribute3;
3738           END IF;
3739           IF (x_tbc_rec.attribute4 = OKL_API.G_MISS_CHAR)
3740           THEN
3741             x_tbc_rec.attribute4 := l_tbc_rec.attribute4;
3742           END IF;
3743           IF (x_tbc_rec.attribute5 = OKL_API.G_MISS_CHAR)
3744           THEN
3745             x_tbc_rec.attribute5 := l_tbc_rec.attribute5;
3746           END IF;
3747           IF (x_tbc_rec.attribute6 = OKL_API.G_MISS_CHAR)
3748           THEN
3749             x_tbc_rec.attribute6 := l_tbc_rec.attribute6;
3750           END IF;
3751           IF (x_tbc_rec.attribute7 = OKL_API.G_MISS_CHAR)
3752           THEN
3753             x_tbc_rec.attribute7 := l_tbc_rec.attribute7;
3754           END IF;
3755           IF (x_tbc_rec.attribute8 = OKL_API.G_MISS_CHAR)
3756           THEN
3757             x_tbc_rec.attribute8 := l_tbc_rec.attribute8;
3758           END IF;
3759           IF (x_tbc_rec.attribute9 = OKL_API.G_MISS_CHAR)
3760           THEN
3761             x_tbc_rec.attribute9 := l_tbc_rec.attribute9;
3762           END IF;
3763           IF (x_tbc_rec.attribute10 = OKL_API.G_MISS_CHAR)
3764           THEN
3765             x_tbc_rec.attribute10 := l_tbc_rec.attribute10;
3766           END IF;
3767           IF (x_tbc_rec.attribute11 = OKL_API.G_MISS_CHAR)
3768           THEN
3769             x_tbc_rec.attribute11 := l_tbc_rec.attribute11;
3770           END IF;
3771           IF (x_tbc_rec.attribute12 = OKL_API.G_MISS_CHAR)
3772           THEN
3773             x_tbc_rec.attribute12 := l_tbc_rec.attribute12;
3774           END IF;
3775           IF (x_tbc_rec.attribute13 = OKL_API.G_MISS_CHAR)
3776           THEN
3777             x_tbc_rec.attribute13 := l_tbc_rec.attribute13;
3778           END IF;
3779           IF (x_tbc_rec.attribute14 = OKL_API.G_MISS_CHAR)
3780           THEN
3781             x_tbc_rec.attribute14 := l_tbc_rec.attribute14;
3782           END IF;
3783           IF (x_tbc_rec.attribute15 = OKL_API.G_MISS_CHAR)
3784           THEN
3785             x_tbc_rec.attribute15 := l_tbc_rec.attribute15;
3786           END IF;
3787           IF (x_tbc_rec.created_by = OKL_API.G_MISS_NUM)
3788           THEN
3789             x_tbc_rec.created_by := l_tbc_rec.created_by;
3790           END IF;
3791           IF (x_tbc_rec.creation_date = OKL_API.G_MISS_DATE)
3792           THEN
3793             x_tbc_rec.creation_date := l_tbc_rec.creation_date;
3794           END IF;
3795           IF (x_tbc_rec.last_updated_by = OKL_API.G_MISS_NUM)
3796           THEN
3797             x_tbc_rec.last_updated_by := l_tbc_rec.last_updated_by;
3798           END IF;
3799           IF (x_tbc_rec.last_update_date = OKL_API.G_MISS_DATE)
3800           THEN
3801             x_tbc_rec.last_update_date := l_tbc_rec.last_update_date;
3802           END IF;
3803           IF (x_tbc_rec.last_update_login = OKL_API.G_MISS_NUM)
3804           THEN
3805             x_tbc_rec.last_update_login := l_tbc_rec.last_update_login;
3806           END IF;
3807 
3808           -- modified by dcshanmu for eBTax project - modification start
3809           -- added migration code for newly added columns
3810 
3811           IF (x_tbc_rec.tax_attribute_def_id = OKL_API.G_MISS_NUM)
3812           THEN
3813             x_tbc_rec.tax_attribute_def_id := l_tbc_rec.tax_attribute_def_id;
3814           END IF;
3815           IF (x_tbc_rec.result_type_code = OKL_API.G_MISS_CHAR)
3816           THEN
3817             x_tbc_rec.result_type_code := l_tbc_rec.result_type_code;
3818           END IF;
3819           IF (x_tbc_rec.book_class_code = OKL_API.G_MISS_CHAR)
3820           THEN
3821             x_tbc_rec.book_class_code := l_tbc_rec.book_class_code;
3822           END IF;
3823           IF (x_tbc_rec.date_effective_from = OKL_API.G_MISS_DATE)
3824           THEN
3825             x_tbc_rec.date_effective_from := l_tbc_rec.date_effective_from;
3826           END IF;
3827           IF (x_tbc_rec.date_effective_to = OKL_API.G_MISS_DATE)
3828           THEN
3829             x_tbc_rec.date_effective_to := l_tbc_rec.date_effective_to;
3830           END IF;
3831           IF (x_tbc_rec.tax_country_code = OKL_API.G_MISS_CHAR)
3832           THEN
3833             x_tbc_rec.tax_country_code := l_tbc_rec.tax_country_code;
3834           END IF;
3835           IF (x_tbc_rec.term_quote_type_code = OKL_API.G_MISS_CHAR)
3836           THEN
3837             x_tbc_rec.term_quote_type_code := l_tbc_rec.term_quote_type_code;
3838           END IF;
3839           IF (x_tbc_rec.term_quote_reason_code = OKL_API.G_MISS_CHAR)
3840           THEN
3841             x_tbc_rec.term_quote_reason_code := l_tbc_rec.term_quote_reason_code;
3842           END IF;
3843           IF (x_tbc_rec.expire_flag = OKL_API.G_MISS_CHAR)
3844           THEN
3845             x_tbc_rec.expire_flag := l_tbc_rec.expire_flag;
3846           END IF;
3847 
3848           -- modified by dcshanmu for eBTax project - modification end
3849 
3850         END IF;
3851         RETURN(l_return_status);
3852       END populate_new_record;
3853       ----------------------------------------------
3854       -- Set_Attributes for:OKL_TAX_ATTR_DEFINITIONS --
3855       ----------------------------------------------
3856       FUNCTION Set_Attributes (
3857         p_tbc_rec IN tbc_rec_type,
3858         x_tbc_rec OUT NOCOPY tbc_rec_type
3859       ) RETURN VARCHAR2 IS
3860         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3861       BEGIN
3862         x_tbc_rec := p_tbc_rec;
3863         x_tbc_rec.OBJECT_VERSION_NUMBER := p_tbc_rec.OBJECT_VERSION_NUMBER + 1;
3864         RETURN(l_return_status);
3865       END Set_Attributes;
3866     BEGIN
3867       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3868                                                 p_init_msg_list,
3869                                                 '_PVT',
3870                                                 x_return_status);
3871       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3872         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3873       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3874         RAISE OKL_API.G_EXCEPTION_ERROR;
3875       END IF;
3876       --- Setting item attributes
3877       l_return_status := Set_Attributes(
3878         p_tbc_rec,                         -- IN
3879         l_tbc_rec);                        -- OUT
3880       --- If any errors happen abort API
3881       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3882         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3883       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3884         RAISE OKL_API.G_EXCEPTION_ERROR;
3885       END IF;
3886       l_return_status := populate_new_record(l_tbc_rec, l_def_tbc_rec);
3887       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3888         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3889       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3890         RAISE OKL_API.G_EXCEPTION_ERROR;
3891       END IF;
3892 
3893       UPDATE OKL_TAX_ATTR_DEFINITIONS
3894       SET --ORG_ID = l_def_tbc_rec.org_id,
3895           RESULT_CODE = l_def_tbc_rec.result_code,
3896           PURCHASE_OPTION_CODE = l_def_tbc_rec.purchase_option_code,
3897           PDT_ID = l_def_tbc_rec.pdt_id,
3898           TRY_ID = l_def_tbc_rec.try_id,
3899           STY_ID = l_def_tbc_rec.sty_id,
3900           INT_DISCLOSED_CODE = l_def_tbc_rec.int_disclosed_code,
3901           TITLE_TRNSFR_CODE = l_def_tbc_rec.title_trnsfr_code,
3902           SALE_LEASE_BACK_CODE = l_def_tbc_rec.sale_lease_back_code,
3903           LEASE_PURCHASED_CODE = l_def_tbc_rec.lease_purchased_code,
3904           EQUIP_USAGE_CODE = l_def_tbc_rec.equip_usage_code,
3905           VENDOR_SITE_ID = l_def_tbc_rec.vendor_site_id,
3906           AGE_OF_EQUIP_FROM = l_def_tbc_rec.age_of_equip_from,
3907           AGE_OF_EQUIP_TO = l_def_tbc_rec.age_of_equip_to,
3908           OBJECT_VERSION_NUMBER = l_def_tbc_rec.object_version_number,
3909           ATTRIBUTE_CATEGORY = l_def_tbc_rec.attribute_category,
3910           ATTRIBUTE1 = l_def_tbc_rec.attribute1,
3911           ATTRIBUTE2 = l_def_tbc_rec.attribute2,
3912           ATTRIBUTE3 = l_def_tbc_rec.attribute3,
3913           ATTRIBUTE4 = l_def_tbc_rec.attribute4,
3914           ATTRIBUTE5 = l_def_tbc_rec.attribute5,
3915           ATTRIBUTE6 = l_def_tbc_rec.attribute6,
3916           ATTRIBUTE7 = l_def_tbc_rec.attribute7,
3917           ATTRIBUTE8 = l_def_tbc_rec.attribute8,
3918           ATTRIBUTE9 = l_def_tbc_rec.attribute9,
3919           ATTRIBUTE10 = l_def_tbc_rec.attribute10,
3920           ATTRIBUTE11 = l_def_tbc_rec.attribute11,
3921           ATTRIBUTE12 = l_def_tbc_rec.attribute12,
3922           ATTRIBUTE13 = l_def_tbc_rec.attribute13,
3923           ATTRIBUTE14 = l_def_tbc_rec.attribute14,
3924           ATTRIBUTE15 = l_def_tbc_rec.attribute15,
3925           CREATED_BY = l_def_tbc_rec.created_by,
3926           CREATION_DATE = l_def_tbc_rec.creation_date,
3927           LAST_UPDATED_BY = l_def_tbc_rec.last_updated_by,
3928           LAST_UPDATE_DATE = l_def_tbc_rec.last_update_date,
3929           LAST_UPDATE_LOGIN = l_def_tbc_rec.last_update_login,
3930 
3931           -- modified by dcshanmu for eBTax project - modification start
3932           TAX_ATTRIBUTE_DEF_ID = l_def_tbc_rec.tax_attribute_def_id,
3933           RESULT_TYPE_CODE = l_def_tbc_rec.result_type_code,
3934           BOOK_CLASS_CODE = l_def_tbc_rec.book_class_code,
3935           DATE_EFFECTIVE_FROM = l_def_tbc_rec.date_effective_from,
3936           DATE_EFFECTIVE_TO = l_def_tbc_rec.date_effective_to,
3937           TAX_COUNTRY_CODE = l_def_tbc_rec.tax_country_code,
3938           TERM_QUOTE_TYPE_CODE = l_def_tbc_rec.term_quote_type_code,
3939           TERM_QUOTE_REASON_CODE = l_def_tbc_rec.term_quote_reason_code,
3940           EXPIRE_FLAG = l_def_tbc_rec.expire_flag
3941           -- modified by dcshanmu for eBTax project - modification end
3942 --      WHERE ID = l_def_tbc_rec.id;
3943         WHERE tax_attribute_def_id = l_def_tbc_rec.tax_attribute_def_id;
3944 
3945       x_tbc_rec := l_tbc_rec;
3946       x_return_status := l_return_status;
3947       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3948     EXCEPTION
3949       WHEN OKL_API.G_EXCEPTION_ERROR THEN
3950         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3951         (
3952           l_api_name,
3953           G_PKG_NAME,
3954           'OKL_API.G_RET_STS_ERROR',
3955           x_msg_count,
3956           x_msg_data,
3957           '_PVT'
3958         );
3959       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3960         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3961         (
3962           l_api_name,
3963           G_PKG_NAME,
3964           'OKL_API.G_RET_STS_UNEXP_ERROR',
3965           x_msg_count,
3966           x_msg_data,
3967           '_PVT'
3968         );
3969       WHEN OTHERS THEN
3970         x_return_status := OKL_API.HANDLE_EXCEPTIONS
3971         (
3972           l_api_name,
3973           G_PKG_NAME,
3974           'OTHERS',
3975           x_msg_count,
3976           x_msg_data,
3977           '_PVT'
3978         );
3979     END update_row;
3980     ------------------------------------------
3981     -- update_row for:OKL_TAX_ATTR_DEFINITIONS --
3982     ------------------------------------------
3983     PROCEDURE update_row(
3984       p_api_version                  IN NUMBER,
3985       p_init_msg_list                IN VARCHAR2,
3986       x_return_status                OUT NOCOPY VARCHAR2,
3987       x_msg_count                    OUT NOCOPY NUMBER,
3988       x_msg_data                     OUT NOCOPY VARCHAR2,
3989       p_tbcv_rec                     IN tbcv_rec_type,
3990       x_tbcv_rec                     OUT NOCOPY tbcv_rec_type) IS
3991 
3992       l_api_version                  CONSTANT NUMBER := 1;
3993       l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
3994       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3995       l_tbcv_rec                     tbcv_rec_type := p_tbcv_rec;
3996       l_def_tbcv_rec                 tbcv_rec_type;
3997       l_db_tbcv_rec                  tbcv_rec_type;
3998       l_tbc_rec                      tbc_rec_type;
3999       lx_tbc_rec                     tbc_rec_type;
4000       -------------------------------
4001       -- FUNCTION fill_who_columns --
4002       -------------------------------
4003       FUNCTION fill_who_columns (
4004         p_tbcv_rec IN tbcv_rec_type
4005       ) RETURN tbcv_rec_type IS
4006         l_tbcv_rec tbcv_rec_type := p_tbcv_rec;
4007       BEGIN
4008         l_tbcv_rec.LAST_UPDATE_DATE := SYSDATE;
4009         l_tbcv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4010         l_tbcv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4011         RETURN(l_tbcv_rec);
4012       END fill_who_columns;
4013       ----------------------------------
4014       -- FUNCTION populate_new_record --
4015       ----------------------------------
4016       FUNCTION populate_new_record (
4017         p_tbcv_rec IN tbcv_rec_type,
4018         x_tbcv_rec OUT NOCOPY tbcv_rec_type
4019       ) RETURN VARCHAR2 IS
4020         l_row_notfound                 BOOLEAN := TRUE;
4021         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4022       BEGIN
4023         x_tbcv_rec := p_tbcv_rec;
4024 
4025         -- Get current database values
4026         -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
4027         --       so it may be verified through LOCK_ROW.
4028         l_db_tbcv_rec := get_rec(p_tbcv_rec, l_return_status);
4029 
4030         IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4031          /* IF (x_tbcv_rec.id = OKL_API.G_MISS_NUM)
4032           THEN
4033             x_tbcv_rec.id := l_db_tbcv_rec.id;
4034           END IF;
4035           IF (x_tbcv_rec.org_id = OKL_API.G_MISS_NUM)
4036           THEN
4037             x_tbcv_rec.org_id := l_db_tbcv_rec.org_id;
4038           END IF;  */
4039 
4040           -- modified by dcshanmu for eBTax project - modification start
4041           IF (x_tbcv_rec.result_code = OKL_API.G_MISS_CHAR)
4042           THEN
4043             x_tbcv_rec.result_code := l_db_tbcv_rec.result_code;
4044           END IF;
4045           -- modified by dcshanmu for eBTax project - modification end
4046 
4047           --SECHAWLA : Added code to set Object Version No. because of the locking issue
4048           IF (x_tbcv_rec.object_version_number = OKL_API.G_MISS_NUM)
4049           THEN
4050               x_tbcv_rec.object_version_number := l_db_tbcv_rec.object_version_number;
4051           END IF;
4052 
4053 
4054           IF (x_tbcv_rec.purchase_option_code = OKL_API.G_MISS_CHAR)
4055           THEN
4056             x_tbcv_rec.purchase_option_code := l_db_tbcv_rec.purchase_option_code;
4057           END IF;
4058           IF (x_tbcv_rec.pdt_id = OKL_API.G_MISS_NUM)
4059           THEN
4060             x_tbcv_rec.pdt_id := l_db_tbcv_rec.pdt_id;
4061           END IF;
4062           IF (x_tbcv_rec.try_id = OKL_API.G_MISS_NUM)
4063           THEN
4064             x_tbcv_rec.try_id := l_db_tbcv_rec.try_id;
4065           END IF;
4066           IF (x_tbcv_rec.sty_id = OKL_API.G_MISS_NUM)
4067           THEN
4068             x_tbcv_rec.sty_id := l_db_tbcv_rec.sty_id;
4069           END IF;
4070           IF (x_tbcv_rec.int_disclosed_code = OKL_API.G_MISS_CHAR)
4071           THEN
4072             x_tbcv_rec.int_disclosed_code := l_db_tbcv_rec.int_disclosed_code;
4073           END IF;
4074           IF (x_tbcv_rec.title_trnsfr_code = OKL_API.G_MISS_CHAR)
4075           THEN
4076             x_tbcv_rec.title_trnsfr_code := l_db_tbcv_rec.title_trnsfr_code;
4077           END IF;
4078           IF (x_tbcv_rec.sale_lease_back_code = OKL_API.G_MISS_CHAR)
4079           THEN
4080             x_tbcv_rec.sale_lease_back_code := l_db_tbcv_rec.sale_lease_back_code;
4081           END IF;
4082           IF (x_tbcv_rec.lease_purchased_code = OKL_API.G_MISS_CHAR)
4083           THEN
4084             x_tbcv_rec.lease_purchased_code := l_db_tbcv_rec.lease_purchased_code;
4085           END IF;
4086           IF (x_tbcv_rec.equip_usage_code = OKL_API.G_MISS_CHAR)
4087           THEN
4088             x_tbcv_rec.equip_usage_code := l_db_tbcv_rec.equip_usage_code;
4089           END IF;
4090           IF (x_tbcv_rec.vendor_site_id = OKL_API.G_MISS_NUM)
4091           THEN
4092             x_tbcv_rec.vendor_site_id := l_db_tbcv_rec.vendor_site_id;
4093           END IF;
4094           IF (x_tbcv_rec.age_of_equip_from = OKL_API.G_MISS_NUM)
4095           THEN
4096             x_tbcv_rec.age_of_equip_from := l_db_tbcv_rec.age_of_equip_from;
4097           END IF;
4098           IF (x_tbcv_rec.age_of_equip_to = OKL_API.G_MISS_NUM)
4099           THEN
4100             x_tbcv_rec.age_of_equip_to := l_db_tbcv_rec.age_of_equip_to;
4101           END IF;
4102 
4103           IF (x_tbcv_rec.attribute_category = OKL_API.G_MISS_CHAR)
4104           THEN
4105             x_tbcv_rec.attribute_category := l_db_tbcv_rec.attribute_category;
4106           END IF;
4107           IF (x_tbcv_rec.attribute1 = OKL_API.G_MISS_CHAR)
4108           THEN
4109             x_tbcv_rec.attribute1 := l_db_tbcv_rec.attribute1;
4110           END IF;
4111           IF (x_tbcv_rec.attribute2 = OKL_API.G_MISS_CHAR)
4112           THEN
4113             x_tbcv_rec.attribute2 := l_db_tbcv_rec.attribute2;
4114           END IF;
4115           IF (x_tbcv_rec.attribute3 = OKL_API.G_MISS_CHAR)
4116           THEN
4117             x_tbcv_rec.attribute3 := l_db_tbcv_rec.attribute3;
4118           END IF;
4119           IF (x_tbcv_rec.attribute4 = OKL_API.G_MISS_CHAR)
4120           THEN
4121             x_tbcv_rec.attribute4 := l_db_tbcv_rec.attribute4;
4122           END IF;
4123           IF (x_tbcv_rec.attribute5 = OKL_API.G_MISS_CHAR)
4124           THEN
4125             x_tbcv_rec.attribute5 := l_db_tbcv_rec.attribute5;
4126           END IF;
4127           IF (x_tbcv_rec.attribute6 = OKL_API.G_MISS_CHAR)
4128           THEN
4129             x_tbcv_rec.attribute6 := l_db_tbcv_rec.attribute6;
4130           END IF;
4131           IF (x_tbcv_rec.attribute7 = OKL_API.G_MISS_CHAR)
4132           THEN
4133             x_tbcv_rec.attribute7 := l_db_tbcv_rec.attribute7;
4134           END IF;
4135           IF (x_tbcv_rec.attribute8 = OKL_API.G_MISS_CHAR)
4136           THEN
4137             x_tbcv_rec.attribute8 := l_db_tbcv_rec.attribute8;
4138           END IF;
4139           IF (x_tbcv_rec.attribute9 = OKL_API.G_MISS_CHAR)
4140           THEN
4141             x_tbcv_rec.attribute9 := l_db_tbcv_rec.attribute9;
4142           END IF;
4143           IF (x_tbcv_rec.attribute10 = OKL_API.G_MISS_CHAR)
4144           THEN
4145             x_tbcv_rec.attribute10 := l_db_tbcv_rec.attribute10;
4146           END IF;
4147           IF (x_tbcv_rec.attribute11 = OKL_API.G_MISS_CHAR)
4148           THEN
4149             x_tbcv_rec.attribute11 := l_db_tbcv_rec.attribute11;
4150           END IF;
4151           IF (x_tbcv_rec.attribute12 = OKL_API.G_MISS_CHAR)
4152           THEN
4153             x_tbcv_rec.attribute12 := l_db_tbcv_rec.attribute12;
4154           END IF;
4155           IF (x_tbcv_rec.attribute13 = OKL_API.G_MISS_CHAR)
4156           THEN
4157             x_tbcv_rec.attribute13 := l_db_tbcv_rec.attribute13;
4158           END IF;
4159           IF (x_tbcv_rec.attribute14 = OKL_API.G_MISS_CHAR)
4160           THEN
4161             x_tbcv_rec.attribute14 := l_db_tbcv_rec.attribute14;
4162           END IF;
4163           IF (x_tbcv_rec.attribute15 = OKL_API.G_MISS_CHAR)
4164           THEN
4165             x_tbcv_rec.attribute15 := l_db_tbcv_rec.attribute15;
4166           END IF;
4167           IF (x_tbcv_rec.created_by = OKL_API.G_MISS_NUM)
4168           THEN
4169             x_tbcv_rec.created_by := l_db_tbcv_rec.created_by;
4170           END IF;
4171           IF (x_tbcv_rec.creation_date = OKL_API.G_MISS_DATE)
4172           THEN
4173             x_tbcv_rec.creation_date := l_db_tbcv_rec.creation_date;
4174           END IF;
4175           IF (x_tbcv_rec.last_updated_by = OKL_API.G_MISS_NUM)
4176           THEN
4177             x_tbcv_rec.last_updated_by := l_db_tbcv_rec.last_updated_by;
4178           END IF;
4179           IF (x_tbcv_rec.last_update_date = OKL_API.G_MISS_DATE)
4180           THEN
4181             x_tbcv_rec.last_update_date := l_db_tbcv_rec.last_update_date;
4182           END IF;
4183           IF (x_tbcv_rec.last_update_login = OKL_API.G_MISS_NUM)
4184           THEN
4185             x_tbcv_rec.last_update_login := l_db_tbcv_rec.last_update_login;
4186           END IF;
4187 
4188           -- modified by dcshanmu for eBTax project - modification start
4189           IF (x_tbcv_rec.tax_attribute_def_id = OKL_API.G_MISS_NUM)
4190           THEN
4191             x_tbcv_rec.tax_attribute_def_id := l_db_tbcv_rec.tax_attribute_def_id;
4192           END IF;
4193           IF (x_tbcv_rec.result_type_code = OKL_API.G_MISS_CHAR)
4194           THEN
4195             x_tbcv_rec.result_type_code := l_db_tbcv_rec.result_type_code;
4196           END IF;
4197           IF (x_tbcv_rec.book_class_code = OKL_API.G_MISS_CHAR)
4198           THEN
4199             x_tbcv_rec.book_class_code := l_db_tbcv_rec.book_class_code;
4200           END IF;
4201           IF (x_tbcv_rec.date_effective_from = OKL_API.G_MISS_DATE)
4202           THEN
4203             x_tbcv_rec.date_effective_from := l_tbcv_rec.date_effective_from;
4204           END IF;
4205           IF (x_tbcv_rec.date_effective_to = OKL_API.G_MISS_DATE)
4206           THEN
4207             x_tbcv_rec.date_effective_to := l_db_tbcv_rec.date_effective_to;
4208           END IF;
4209           IF (x_tbcv_rec.tax_country_code = OKL_API.G_MISS_CHAR)
4210           THEN
4211             x_tbcv_rec.tax_country_code := l_db_tbcv_rec.tax_country_code;
4212           END IF;
4213           IF (x_tbcv_rec.term_quote_type_code = OKL_API.G_MISS_CHAR)
4214           THEN
4215             x_tbcv_rec.term_quote_type_code := l_db_tbcv_rec.term_quote_type_code;
4216           END IF;
4217           IF (x_tbcv_rec.term_quote_reason_code = OKL_API.G_MISS_CHAR)
4218           THEN
4219             x_tbcv_rec.term_quote_reason_code := l_db_tbcv_rec.term_quote_reason_code;
4220           END IF;
4221           IF (x_tbcv_rec.expire_flag = OKL_API.G_MISS_CHAR)
4222           THEN
4223             x_tbcv_rec.expire_flag := l_db_tbcv_rec.expire_flag;
4224           END IF;
4225           -- modified by dcshanmu for eBTax project - modification end
4226 
4227         END IF;
4228         RETURN(l_return_status);
4229       END populate_new_record;
4230       ----------------------------------------------
4231       -- Set_Attributes for:OKL_TAX_ATTR_DEFINITIONS --
4232       ----------------------------------------------
4233       FUNCTION Set_Attributes (
4234         p_tbcv_rec IN tbcv_rec_type,
4235         x_tbcv_rec OUT NOCOPY tbcv_rec_type
4236       ) RETURN VARCHAR2 IS
4237         l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4238       BEGIN
4239         x_tbcv_rec := p_tbcv_rec;
4240         RETURN(l_return_status);
4241       END Set_Attributes;
4242     BEGIN
4243       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4244                                                 G_PKG_NAME,
4245                                                 p_init_msg_list,
4246                                                 l_api_version,
4247                                                 p_api_version,
4248                                                 '_PVT',
4249                                                 x_return_status);
4250       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4251         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4252       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4253         RAISE OKL_API.G_EXCEPTION_ERROR;
4254       END IF;
4255 
4256       --- Setting item attributes
4257       l_return_status := Set_Attributes(
4258         p_tbcv_rec,                        -- IN
4259         x_tbcv_rec);                       -- OUT
4260       --- If any errors happen abort API
4261       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4262         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4263       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4264         RAISE OKL_API.G_EXCEPTION_ERROR;
4265       END IF;
4266 
4267       l_return_status := populate_new_record(x_tbcv_rec, l_def_tbcv_rec);
4268       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4269         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4270       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4271         RAISE OKL_API.G_EXCEPTION_ERROR;
4272       END IF;
4273 
4274       l_def_tbcv_rec := fill_who_columns(l_def_tbcv_rec);
4275       --- Validate all non-missing attributes (Item Level Validation)
4276       l_return_status := Validate_Attributes(l_def_tbcv_rec);
4277       --- If any errors happen abort API
4278       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4279         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4280       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4281         RAISE OKL_API.G_EXCEPTION_ERROR;
4282       END IF;
4283 
4284       /*
4285       l_return_status := Validate_Record(l_def_tbcv_rec, l_db_tbcv_rec);
4286       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4287         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4288       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4289         RAISE OKL_API.G_EXCEPTION_ERROR;
4290       END IF;
4291      */
4292 
4293       l_return_status := Validate_Record(l_def_tbcv_rec);
4294       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4295         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4296       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4297         RAISE OKL_API.G_EXCEPTION_ERROR;
4298       END IF;
4299 
4300 
4301       -- Lock the Record
4302       lock_row(
4303         p_api_version                  => p_api_version,
4304         p_init_msg_list                => p_init_msg_list,
4305         x_return_status                => l_return_status,
4306         x_msg_count                    => x_msg_count,
4307         x_msg_data                     => x_msg_data,
4308         p_tbcv_rec                     => l_def_tbcv_rec); --p_tbcv_rec); -- SECHAWLA Changed to pass l_def_tbov_rec becoz of locking issue
4309       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4310         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4311       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4312         RAISE OKL_API.G_EXCEPTION_ERROR;
4313       END IF;
4314 
4315       -----------------------------------------
4316       -- Move VIEW record to "Child" records --
4317       -----------------------------------------
4318       migrate(l_def_tbcv_rec, l_tbc_rec);
4319 
4320       -----------------------------------------------
4321       -- Call the UPDATE_ROW for each child record --
4322       -----------------------------------------------
4323       update_row(
4324         p_init_msg_list,
4325         l_return_status,
4326         x_msg_count,
4327         x_msg_data,
4328         l_tbc_rec,
4329         lx_tbc_rec
4330       );
4331 
4332       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4333         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4334       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4335         RAISE OKL_API.G_EXCEPTION_ERROR;
4336       END IF;
4337       migrate(lx_tbc_rec, l_def_tbcv_rec);
4338       x_tbcv_rec := l_def_tbcv_rec;
4339       x_return_status := l_return_status;
4340       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4341     EXCEPTION
4342       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4343         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4344         (
4345           l_api_name,
4346           G_PKG_NAME,
4347           'OKL_API.G_RET_STS_ERROR',
4348           x_msg_count,
4349           x_msg_data,
4350           '_PVT'
4351         );
4352       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4353         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4354         (
4355           l_api_name,
4356           G_PKG_NAME,
4357           'OKL_API.G_RET_STS_UNEXP_ERROR',
4358           x_msg_count,
4359           x_msg_data,
4360           '_PVT'
4361         );
4362       WHEN OTHERS THEN
4363         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4364         (
4365           l_api_name,
4366           G_PKG_NAME,
4367           'OTHERS',
4368           x_msg_count,
4369           x_msg_data,
4370           '_PVT'
4371         );
4372     END update_row;
4373     ----------------------------------------
4374     -- PL/SQL TBL update_row for:tbcv_tbl --
4375     ----------------------------------------
4376     PROCEDURE update_row(
4377       p_api_version                  IN NUMBER,
4378       p_init_msg_list                IN VARCHAR2,
4379       x_return_status                OUT NOCOPY VARCHAR2,
4380       x_msg_count                    OUT NOCOPY NUMBER,
4381       x_msg_data                     OUT NOCOPY VARCHAR2,
4382       p_tbcv_tbl                     IN tbcv_tbl_type,
4383       x_tbcv_tbl                     OUT NOCOPY tbcv_tbl_type,
4384       px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
4385 
4386       l_api_version                  CONSTANT NUMBER := 1;
4387       l_api_name                     CONSTANT VARCHAR2(100) := 'v_err';
4388       i                              NUMBER := 0;
4389       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4390     BEGIN
4391         l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4392                                                 p_init_msg_list,
4393                                                 '_PVT',
4394                                                 x_return_status);
4395       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4396         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4397       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4398         RAISE OKL_API.G_EXCEPTION_ERROR;
4399       END IF;
4400 
4401       -- Make sure PL/SQL table has records in it before passing
4402       IF (p_tbcv_tbl.COUNT > 0) THEN
4403         i := p_tbcv_tbl.FIRST;
4404         LOOP
4405           DECLARE
4406             l_error_rec         OKL_API.ERROR_REC_TYPE;
4407           BEGIN
4408             l_error_rec.api_name := l_api_name;
4409             l_error_rec.api_package := G_PKG_NAME;
4410             l_error_rec.idx := i;
4411 
4412             update_row (
4413               p_api_version                  => p_api_version,
4414               p_init_msg_list                => OKL_API.G_FALSE,
4415               x_return_status                => l_error_rec.error_type,
4416               x_msg_count                    => l_error_rec.msg_count,
4417               x_msg_data                     => l_error_rec.msg_data,
4418               p_tbcv_rec                     => p_tbcv_tbl(i),
4419               x_tbcv_rec                     => x_tbcv_tbl(i));
4420             IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4421               l_error_rec.sqlcode := SQLCODE;
4422               load_error_tbl(l_error_rec, px_error_tbl);
4423             ELSE
4424               x_msg_count := l_error_rec.msg_count;
4425               x_msg_data := l_error_rec.msg_data;
4426             END IF;
4427           EXCEPTION
4428             WHEN OKL_API.G_EXCEPTION_ERROR THEN
4429               l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4430               l_error_rec.sqlcode := SQLCODE;
4431               load_error_tbl(l_error_rec, px_error_tbl);
4432             WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4433               l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4434               l_error_rec.sqlcode := SQLCODE;
4435               load_error_tbl(l_error_rec, px_error_tbl);
4436             WHEN OTHERS THEN
4437               l_error_rec.error_type := 'OTHERS';
4438               l_error_rec.sqlcode := SQLCODE;
4439               load_error_tbl(l_error_rec, px_error_tbl);
4440           END;
4441           EXIT WHEN (i = p_tbcv_tbl.LAST);
4442           i := p_tbcv_tbl.NEXT(i);
4443         END LOOP;
4444       END IF;
4445       -- Loop through the error_tbl to find the error with the highest severity
4446       -- and return it.
4447       x_return_status := find_highest_exception(px_error_tbl);
4448       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4449     EXCEPTION
4450       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4451         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4452         (
4453           l_api_name,
4454           G_PKG_NAME,
4455           'OKL_API.G_RET_STS_ERROR',
4456           x_msg_count,
4457           x_msg_data,
4458           '_PVT'
4459         );
4460       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4461         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4462         (
4463           l_api_name,
4464           G_PKG_NAME,
4465           'OKL_API.G_RET_STS_UNEXP_ERROR',
4466           x_msg_count,
4467           x_msg_data,
4468           '_PVT'
4469         );
4470       WHEN OTHERS THEN
4471         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4472         (
4473           l_api_name,
4474           G_PKG_NAME,
4475           'OTHERS',
4476           x_msg_count,
4477           x_msg_data,
4478           '_PVT'
4479         );
4480     END update_row;
4481 
4482     ----------------------------------------
4483     -- PL/SQL TBL update_row for:TBCV_TBL --
4484     ----------------------------------------
4485     -- This procedure is the same as the one above except it does not have a "px_error_tbl" argument.
4486     -- This procedure was create for backward compatibility and simply is a wrapper for the one above.
4487     PROCEDURE update_row(
4488       p_api_version                  IN NUMBER,
4489       p_init_msg_list                IN VARCHAR2,
4490       x_return_status                OUT NOCOPY VARCHAR2,
4491       x_msg_count                    OUT NOCOPY NUMBER,
4492       x_msg_data                     OUT NOCOPY VARCHAR2,
4493       p_tbcv_tbl                     IN tbcv_tbl_type,
4494       x_tbcv_tbl                     OUT NOCOPY tbcv_tbl_type) IS
4495 
4496       l_api_version                  CONSTANT NUMBER := 1;
4497       l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4498       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4499       l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4500     BEGIN
4501 
4502       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4503                                                 p_init_msg_list,
4504                                                 '_PVT',
4505                                                 x_return_status);
4506       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4507         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4508       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4509         RAISE OKL_API.G_EXCEPTION_ERROR;
4510       END IF;
4511       -- Make sure PL/SQL table has records in it before passing
4512       IF (p_tbcv_tbl.COUNT > 0) THEN
4513         update_row (
4514           p_api_version                  => p_api_version,
4515           p_init_msg_list                => OKL_API.G_FALSE,
4516           x_return_status                => x_return_status,
4517           x_msg_count                    => x_msg_count,
4518           x_msg_data                     => x_msg_data,
4519           p_tbcv_tbl                     => p_tbcv_tbl,
4520           x_tbcv_tbl                     => x_tbcv_tbl,
4521           px_error_tbl                   => l_error_tbl);
4522       END IF;
4523       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4524     EXCEPTION
4525       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4526         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4527         (
4528           l_api_name,
4529           G_PKG_NAME,
4530           'OKL_API.G_RET_STS_ERROR',
4531           x_msg_count,
4532           x_msg_data,
4533           '_PVT'
4534         );
4535       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4536         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4537         (
4538           l_api_name,
4539           G_PKG_NAME,
4540           'OKL_API.G_RET_STS_UNEXP_ERROR',
4541           x_msg_count,
4542           x_msg_data,
4543           '_PVT'
4544         );
4545       WHEN OTHERS THEN
4546         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4547         (
4548           l_api_name,
4549           G_PKG_NAME,
4550           'OTHERS',
4551           x_msg_count,
4552           x_msg_data,
4553           '_PVT'
4554         );
4555     END update_row;
4556 
4557     ---------------------------------------------------------------------------
4558     -- PROCEDURE delete_row
4559     ---------------------------------------------------------------------------
4560     ------------------------------------------
4561     -- delete_row for:OKL_TAX_ATTR_DEFINITIONS--
4562     ------------------------------------------
4563     PROCEDURE delete_row(
4564       p_init_msg_list                IN VARCHAR2,
4565       x_return_status                OUT NOCOPY VARCHAR2,
4566       x_msg_count                    OUT NOCOPY NUMBER,
4567       x_msg_data                     OUT NOCOPY VARCHAR2,
4568       p_tbc_rec                      IN tbc_rec_type) IS
4569 
4570       l_api_version                  CONSTANT NUMBER := 1;
4571       l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
4572       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4573       l_tbc_rec                      tbc_rec_type := p_tbc_rec;
4574       l_row_notfound                 BOOLEAN := TRUE;
4575     BEGIN
4576       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4577                                                 p_init_msg_list,
4578                                                 '_PVT',
4579                                                 x_return_status);
4580       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4581         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4582       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4583         RAISE OKL_API.G_EXCEPTION_ERROR;
4584       END IF;
4585 
4586       DELETE FROM OKL_TAX_ATTR_DEFINITIONS
4587 --       WHERE ID = p_tbc_rec.id;
4588          WHERE tax_attribute_def_id = p_tbc_rec.tax_attribute_def_id;
4589 
4590       x_return_status := l_return_status;
4591       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4592     EXCEPTION
4593       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4594         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4595         (
4596           l_api_name,
4597           G_PKG_NAME,
4598           'OKL_API.G_RET_STS_ERROR',
4599           x_msg_count,
4600           x_msg_data,
4601           '_PVT'
4602         );
4603       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4604         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4605         (
4606           l_api_name,
4607           G_PKG_NAME,
4608           'OKL_API.G_RET_STS_UNEXP_ERROR',
4609           x_msg_count,
4610           x_msg_data,
4611           '_PVT'
4612         );
4613       WHEN OTHERS THEN
4614         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4615         (
4616           l_api_name,
4617           G_PKG_NAME,
4618           'OTHERS',
4619           x_msg_count,
4620           x_msg_data,
4621           '_PVT'
4622         );
4623     END delete_row;
4624     ------------------------------------------
4625     -- delete_row for:OKL_TAX_ATTR_DEFINITIONS --
4626     ------------------------------------------
4627     PROCEDURE delete_row(
4628       p_api_version                  IN NUMBER,
4629       p_init_msg_list                IN VARCHAR2,
4630       x_return_status                OUT NOCOPY VARCHAR2,
4631       x_msg_count                    OUT NOCOPY NUMBER,
4632       x_msg_data                     OUT NOCOPY VARCHAR2,
4633       p_tbcv_rec                     IN tbcv_rec_type) IS
4634 
4635       l_api_version                  CONSTANT NUMBER := 1;
4636       l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
4637       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4638       l_tbcv_rec                     tbcv_rec_type := p_tbcv_rec;
4639       l_tbc_rec                      tbc_rec_type;
4640     BEGIN
4641       l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4642                                                 G_PKG_NAME,
4643                                                 p_init_msg_list,
4644                                                 l_api_version,
4645                                                 p_api_version,
4646                                                 '_PVT',
4647                                                 x_return_status);
4648       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4649         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4650       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4651         RAISE OKL_API.G_EXCEPTION_ERROR;
4652       END IF;
4653       -----------------------------------------
4654       -- Move VIEW record to "Child" records --
4655       -----------------------------------------
4656       migrate(l_tbcv_rec, l_tbc_rec);
4657       -----------------------------------------------
4658       -- Call the DELETE_ROW for each child record --
4659       -----------------------------------------------
4660       delete_row(
4661         p_init_msg_list,
4662         l_return_status,
4663         x_msg_count,
4664         x_msg_data,
4665         l_tbc_rec
4666       );
4667       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4668         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4669       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4670         RAISE OKL_API.G_EXCEPTION_ERROR;
4671       END IF;
4672       x_return_status := l_return_status;
4673       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4674     EXCEPTION
4675       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4676         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4677         (
4678           l_api_name,
4679           G_PKG_NAME,
4680           'OKL_API.G_RET_STS_ERROR',
4681           x_msg_count,
4682           x_msg_data,
4683           '_PVT'
4684         );
4685       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4686         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4687         (
4688           l_api_name,
4689           G_PKG_NAME,
4690           'OKL_API.G_RET_STS_UNEXP_ERROR',
4691           x_msg_count,
4692           x_msg_data,
4693           '_PVT'
4694         );
4695       WHEN OTHERS THEN
4696         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4697         (
4698           l_api_name,
4699           G_PKG_NAME,
4700           'OTHERS',
4701           x_msg_count,
4702           x_msg_data,
4703           '_PVT'
4704         );
4705     END delete_row;
4706     -----------------------------------------------------
4707     -- PL/SQL TBL delete_row for:OKL_TAX_ATTR_DEFINITIONS --
4708     -----------------------------------------------------
4709     PROCEDURE delete_row(
4710       p_api_version                  IN NUMBER,
4711       p_init_msg_list                IN VARCHAR2,
4712       x_return_status                OUT NOCOPY VARCHAR2,
4713       x_msg_count                    OUT NOCOPY NUMBER,
4714       x_msg_data                     OUT NOCOPY VARCHAR2,
4715       p_tbcv_tbl                     IN tbcv_tbl_type,
4716       px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
4717 
4718       l_api_version                  CONSTANT NUMBER := 1;
4719       l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
4720       i                              NUMBER := 0;
4721     BEGIN
4722       OKL_API.init_msg_list(p_init_msg_list);
4723       -- Make sure PL/SQL table has records in it before passing
4724       IF (p_tbcv_tbl.COUNT > 0) THEN
4725         i := p_tbcv_tbl.FIRST;
4726         LOOP
4727           DECLARE
4728             l_error_rec         OKL_API.ERROR_REC_TYPE;
4729           BEGIN
4730             l_error_rec.api_name := l_api_name;
4731             l_error_rec.api_package := G_PKG_NAME;
4732             l_error_rec.idx := i;
4733             delete_row (
4734               p_api_version                  => p_api_version,
4735               p_init_msg_list                => OKL_API.G_FALSE,
4736               x_return_status                => l_error_rec.error_type,
4737               x_msg_count                    => l_error_rec.msg_count,
4738               x_msg_data                     => l_error_rec.msg_data,
4739               p_tbcv_rec                     => p_tbcv_tbl(i));
4740             IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4741               l_error_rec.sqlcode := SQLCODE;
4742               load_error_tbl(l_error_rec, px_error_tbl);
4743             ELSE
4744               x_msg_count := l_error_rec.msg_count;
4745               x_msg_data := l_error_rec.msg_data;
4746             END IF;
4747           EXCEPTION
4748             WHEN OKL_API.G_EXCEPTION_ERROR THEN
4749               l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4750               l_error_rec.sqlcode := SQLCODE;
4751               load_error_tbl(l_error_rec, px_error_tbl);
4752             WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4753               l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4754               l_error_rec.sqlcode := SQLCODE;
4755               load_error_tbl(l_error_rec, px_error_tbl);
4756             WHEN OTHERS THEN
4757               l_error_rec.error_type := 'OTHERS';
4758               l_error_rec.sqlcode := SQLCODE;
4759               load_error_tbl(l_error_rec, px_error_tbl);
4760           END;
4761           EXIT WHEN (i = p_tbcv_tbl.LAST);
4762           i := p_tbcv_tbl.NEXT(i);
4763         END LOOP;
4764       END IF;
4765       -- Loop through the error_tbl to find the error with the highest severity
4766       -- and return it.
4767       x_return_status := find_highest_exception(px_error_tbl);
4768       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4769     EXCEPTION
4770       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4771         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4772         (
4773           l_api_name,
4774           G_PKG_NAME,
4775           'OKL_API.G_RET_STS_ERROR',
4776           x_msg_count,
4777           x_msg_data,
4778           '_PVT'
4779         );
4780       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4781         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4782         (
4783           l_api_name,
4784           G_PKG_NAME,
4785           'OKL_API.G_RET_STS_UNEXP_ERROR',
4786           x_msg_count,
4787           x_msg_data,
4788           '_PVT'
4789         );
4790       WHEN OTHERS THEN
4791         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4792         (
4793           l_api_name,
4794           G_PKG_NAME,
4795           'OTHERS',
4796           x_msg_count,
4797           x_msg_data,
4798           '_PVT'
4799         );
4800     END delete_row;
4801 
4802     -----------------------------------------------------
4803     -- PL/SQL TBL delete_row for:OKL_TAX_ATTR_DEFINITIONS --
4804     -----------------------------------------------------
4805     PROCEDURE delete_row(
4806       p_api_version                  IN NUMBER,
4807       p_init_msg_list                IN VARCHAR2,
4808       x_return_status                OUT NOCOPY VARCHAR2,
4809       x_msg_count                    OUT NOCOPY NUMBER,
4810       x_msg_data                     OUT NOCOPY VARCHAR2,
4811       p_tbcv_tbl                     IN tbcv_tbl_type) IS
4812 
4813       l_api_version                  CONSTANT NUMBER := 1;
4814       l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
4815       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4816       l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4817     BEGIN
4818       OKL_API.init_msg_list(p_init_msg_list);
4819       -- Make sure PL/SQL table has records in it before passing
4820       IF (p_tbcv_tbl.COUNT > 0) THEN
4821         delete_row (
4822           p_api_version                  => p_api_version,
4823           p_init_msg_list                => OKL_API.G_FALSE,
4824           x_return_status                => x_return_status,
4825           x_msg_count                    => x_msg_count,
4826           x_msg_data                     => x_msg_data,
4827           p_tbcv_tbl                     => p_tbcv_tbl,
4828           px_error_tbl                   => l_error_tbl);
4829       END IF;
4830       OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4831     EXCEPTION
4832       WHEN OKL_API.G_EXCEPTION_ERROR THEN
4833         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4834         (
4835           l_api_name,
4836           G_PKG_NAME,
4837           'OKL_API.G_RET_STS_ERROR',
4838           x_msg_count,
4839           x_msg_data,
4840           '_PVT'
4841         );
4842       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4843         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4844         (
4845           l_api_name,
4846           G_PKG_NAME,
4847           'OKL_API.G_RET_STS_UNEXP_ERROR',
4848           x_msg_count,
4849           x_msg_data,
4850           '_PVT'
4851         );
4852       WHEN OTHERS THEN
4853         x_return_status := OKL_API.HANDLE_EXCEPTIONS
4854         (
4855           l_api_name,
4856           G_PKG_NAME,
4857           'OTHERS',
4858           x_msg_count,
4859           x_msg_data,
4860           '_PVT'
4861         );
4862     END delete_row;
4863 
4864   END OKL_TBC_PVT;