DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_QCL_PVT

Source


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