DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_QAB_PVT

Source


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