DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_QA_CHECK_LIST_PUB

Source


1 PACKAGE BODY OKC_QA_CHECK_LIST_PUB AS
2 /* $Header: OKCPQCLB.pls 120.0 2005/05/25 19:03:31 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5   ---------------------------------------------------------------------------
6   -- FUNCTION migrate_qclv
7   ---------------------------------------------------------------------------
8   FUNCTION migrate_qclv (
9     p_qclv_rec1 IN qclv_rec_type,
10     p_qclv_rec2 IN qclv_rec_type
11   ) RETURN qclv_rec_type IS
12     l_qclv_rec qclv_rec_type;
13   BEGIN
14     l_qclv_rec.id                    := p_qclv_rec1.id;
15     l_qclv_rec.object_version_number := p_qclv_rec1.object_version_number;
16     l_qclv_rec.created_by            := p_qclv_rec1.created_by;
17     l_qclv_rec.creation_date         := p_qclv_rec1.creation_date;
18     l_qclv_rec.last_updated_by       := p_qclv_rec1.last_updated_by;
19     l_qclv_rec.last_update_date      := p_qclv_rec1.last_update_date;
20     l_qclv_rec.last_update_login     := p_qclv_rec1.last_update_login;
21     l_qclv_rec.name                  := p_qclv_rec2.name;
22     l_qclv_rec.short_description     := p_qclv_rec2.short_description;
23     l_qclv_rec.begin_date            := p_qclv_rec2.begin_date;
24     l_qclv_rec.end_date              := p_qclv_rec2.end_date;
25     l_qclv_rec.sfwt_flag             := p_qclv_rec2.sfwt_flag;
26     l_qclv_rec.attribute_category    := p_qclv_rec2.attribute_category;
27     l_qclv_rec.attribute1            := p_qclv_rec2.attribute1;
28     l_qclv_rec.attribute2            := p_qclv_rec2.attribute2;
29     l_qclv_rec.attribute3            := p_qclv_rec2.attribute3;
30     l_qclv_rec.attribute4            := p_qclv_rec2.attribute4;
31     l_qclv_rec.attribute5            := p_qclv_rec2.attribute5;
32     l_qclv_rec.attribute6            := p_qclv_rec2.attribute6;
33     l_qclv_rec.attribute7            := p_qclv_rec2.attribute7;
34     l_qclv_rec.attribute8            := p_qclv_rec2.attribute8;
35     l_qclv_rec.attribute9            := p_qclv_rec2.attribute9;
36     l_qclv_rec.attribute10           := p_qclv_rec2.attribute10;
37     l_qclv_rec.attribute11           := p_qclv_rec2.attribute11;
38     l_qclv_rec.attribute12           := p_qclv_rec2.attribute12;
39     l_qclv_rec.attribute13           := p_qclv_rec2.attribute13;
40     l_qclv_rec.attribute14           := p_qclv_rec2.attribute14;
41     l_qclv_rec.attribute15           := p_qclv_rec2.attribute15;
42     l_qclv_rec.application_id        := p_qclv_rec2.application_id;
43     l_qclv_rec.default_yn        := p_qclv_rec2.default_yn;
44 
45 
46     RETURN (l_qclv_rec);
47   END migrate_qclv;
48 
49   --------------------------------------
50   -- PROCEDURE create_qa_check_list
51   --------------------------------------
52   PROCEDURE create_qa_check_list(
53     p_api_version                  IN  NUMBER,
54     p_init_msg_list                IN  VARCHAR2 ,
55     x_return_status                OUT NOCOPY VARCHAR2,
56     x_msg_count                    OUT NOCOPY NUMBER,
57     x_msg_data                     OUT NOCOPY VARCHAR2,
58     p_qclv_rec                     IN  qclv_rec_type,
59     x_qclv_rec                     OUT NOCOPY qclv_rec_type) IS
60     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
61     l_api_name                     CONSTANT VARCHAR2(30) := 'create_qa_check_list';
62     l_qclv_rec                     qclv_rec_type := p_qclv_rec;
63   BEGIN
64     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
65                                               p_init_msg_list,
66                                               '_PUB',
67                                               x_return_status);
68     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
69       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
70     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
71       raise OKC_API.G_EXCEPTION_ERROR;
72     END IF;
73     -- Call user hook for BEFORE
74     g_qclv_rec := p_qclv_rec;
75     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
76     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
77       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
78     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
79       raise OKC_API.G_EXCEPTION_ERROR;
80     END IF;
81     l_qclv_rec := migrate_qclv(l_qclv_rec, g_qclv_rec);
82 
83     OKC_QA_CHECK_LIST_PVT.create_qa_check_list(
84       p_api_version   => p_api_version,
85       p_init_msg_list => p_init_msg_list,
86       x_return_status => x_return_status,
87       x_msg_count     => x_msg_count,
88       x_msg_data      => x_msg_data,
89       p_qclv_rec      => l_qclv_rec,
90       x_qclv_rec      => x_qclv_rec);
91 
92      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
93        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
94      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
95        raise OKC_API.G_EXCEPTION_ERROR;
96      END IF;
97 
98      -- Call user hook for AFTER
99      g_qclv_rec := x_qclv_rec;
100      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
101      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
102        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
103      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
104        raise OKC_API.G_EXCEPTION_ERROR;
105      END IF;
106      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
107   EXCEPTION
108   WHEN OKC_API.G_EXCEPTION_ERROR THEN
109     x_return_status := OKC_API.HANDLE_EXCEPTIONS
110       (l_api_name
111       ,G_PKG_NAME
112       ,'OKC_API.G_RET_STS_ERROR'
113       ,x_msg_count
114       ,x_msg_data
115       ,'_PUB');
116   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
117     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
118       (l_api_name
119       ,G_PKG_NAME
120       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
121       ,x_msg_count
122       ,x_msg_data
123       ,'_PUB');
124   WHEN OTHERS THEN
125     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
126       (l_api_name
127       ,G_PKG_NAME
128       ,'OTHERS'
129       ,x_msg_count
130       ,x_msg_data
131       ,'_PUB');
132   END create_qa_check_list;
133 
134   --------------------------------------
135   -- PROCEDURE create_qa_check_list
136   --------------------------------------
137   PROCEDURE create_qa_check_list(
138     p_api_version                  IN  NUMBER,
139     p_init_msg_list                IN  VARCHAR2 ,
140     x_return_status                OUT NOCOPY VARCHAR2,
141     x_msg_count                    OUT NOCOPY NUMBER,
142     x_msg_data                     OUT NOCOPY VARCHAR2,
143     p_qclv_tbl                     IN  qclv_tbl_type,
144     x_qclv_tbl                     OUT NOCOPY qclv_tbl_type) IS
145     i                              NUMBER := 0;
146     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
147   BEGIN
148     x_return_status := OKC_API.G_RET_STS_SUCCESS;
149     IF p_qclv_tbl.COUNT > 0 THEN
150       i := p_qclv_tbl.FIRST;
151       LOOP
152         create_qa_check_list(
153           p_api_version   => p_api_version,
154           p_init_msg_list => p_init_msg_list,
155           x_return_status => l_return_status,
156           x_msg_count     => x_msg_count,
157           x_msg_data      => x_msg_data,
158           p_qclv_rec      => p_qclv_tbl(i),
159           x_qclv_rec      => x_qclv_tbl(i));
160         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
161           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
162             x_return_status := l_return_status;
163             raise G_EXCEPTION_HALT_VALIDATION;
164           ELSE
165             x_return_status := l_return_status;
166           END IF;
167         END IF;
168         EXIT WHEN (i = p_qclv_tbl.LAST);
169         i := p_qclv_tbl.NEXT(i);
170       END LOOP;
171     END IF;
172   EXCEPTION
173   WHEN G_EXCEPTION_HALT_VALIDATION THEN
174     NULL;
175   WHEN OTHERS THEN
176     -- store SQL error message on message stack
177     OKC_API.SET_MESSAGE(
178       p_app_name        => G_APP_NAME,
179       p_msg_name        => G_UNEXPECTED_ERROR,
180       p_token1	        => G_SQLCODE_TOKEN,
181       p_token1_value    => SQLCODE,
182       p_token2          => G_SQLERRM_TOKEN,
183       p_token2_value    => SQLERRM);
184     -- notify caller of an error as UNEXPETED error
185     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
186   END create_qa_check_list;
187 
188   --------------------------------------
189   -- PROCEDURE update_qa_check_list
190   --------------------------------------
191   PROCEDURE update_qa_check_list(
192     p_api_version                  IN  NUMBER,
193     p_init_msg_list                IN  VARCHAR2 ,
194     x_return_status                OUT NOCOPY VARCHAR2,
195     x_msg_count                    OUT NOCOPY NUMBER,
196     x_msg_data                     OUT NOCOPY VARCHAR2,
197     p_qclv_rec                     IN  qclv_rec_type,
198     x_qclv_rec                     OUT NOCOPY qclv_rec_type) IS
199     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
200     l_api_name                     CONSTANT VARCHAR2(30) := 'update_qa_check_list';
201     l_qclv_rec                     qclv_rec_type := p_qclv_rec;
202   BEGIN
203     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
204                                               p_init_msg_list,
205                                               '_PUB',
206                                               x_return_status);
207     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
208       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
209     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
210       raise OKC_API.G_EXCEPTION_ERROR;
211     END IF;
212     -- Call user hook for BEFORE
213     g_qclv_rec := p_qclv_rec;
214     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
215     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
216       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
217     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
218       raise OKC_API.G_EXCEPTION_ERROR;
219     END IF;
220     l_qclv_rec := migrate_qclv(l_qclv_rec, g_qclv_rec);
221 
222     OKC_QA_CHECK_LIST_PVT.update_qa_check_list(
223       p_api_version   => p_api_version,
224       p_init_msg_list => p_init_msg_list,
225       x_return_status => x_return_status,
226       x_msg_count     => x_msg_count,
227       x_msg_data      => x_msg_data,
228       p_qclv_rec      => l_qclv_rec,
229       x_qclv_rec      => x_qclv_rec);
230 
231      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
232        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
233      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
234        raise OKC_API.G_EXCEPTION_ERROR;
235      END IF;
236 
237      -- Call user hook for AFTER
238      g_qclv_rec := x_qclv_rec;
239      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
240      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
241        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
242      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
243        raise OKC_API.G_EXCEPTION_ERROR;
244      END IF;
245      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
246   EXCEPTION
247   WHEN OKC_API.G_EXCEPTION_ERROR THEN
248     x_return_status := OKC_API.HANDLE_EXCEPTIONS
249       (l_api_name
250       ,G_PKG_NAME
251       ,'OKC_API.G_RET_STS_ERROR'
252       ,x_msg_count
253       ,x_msg_data
254       ,'_PUB');
255   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
256     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
257       (l_api_name
258       ,G_PKG_NAME
259       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
260       ,x_msg_count
261       ,x_msg_data
262       ,'_PUB');
263   WHEN OTHERS THEN
264     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
265       (l_api_name
266       ,G_PKG_NAME
267       ,'OTHERS'
268       ,x_msg_count
269       ,x_msg_data
270       ,'_PUB');
271   END update_qa_check_list;
272 
273   --------------------------------------
274   -- PROCEDURE update_qa_check_list
275   --------------------------------------
276   PROCEDURE update_qa_check_list(
277     p_api_version                  IN  NUMBER,
278     p_init_msg_list                IN  VARCHAR2 ,
279     x_return_status                OUT NOCOPY VARCHAR2,
280     x_msg_count                    OUT NOCOPY NUMBER,
281     x_msg_data                     OUT NOCOPY VARCHAR2,
282     p_qclv_tbl                     IN  qclv_tbl_type,
283     x_qclv_tbl                     OUT NOCOPY qclv_tbl_type) IS
284     i                              NUMBER := 0;
285     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
286   BEGIN
287     x_return_status := OKC_API.G_RET_STS_SUCCESS;
288     IF p_qclv_tbl.COUNT > 0 THEN
289       i := p_qclv_tbl.FIRST;
290       LOOP
291         update_qa_check_list(
292           p_api_version   => p_api_version,
293           p_init_msg_list => p_init_msg_list,
294           x_return_status => l_return_status,
295           x_msg_count     => x_msg_count,
296           x_msg_data      => x_msg_data,
297           p_qclv_rec      => p_qclv_tbl(i),
298           x_qclv_rec      => x_qclv_tbl(i));
299         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
300           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
301             x_return_status := l_return_status;
302             raise G_EXCEPTION_HALT_VALIDATION;
303           ELSE
304             x_return_status := l_return_status;
305           END IF;
306         END IF;
307         EXIT WHEN (i = p_qclv_tbl.LAST);
308         i := p_qclv_tbl.NEXT(i);
309       END LOOP;
310     END IF;
311   EXCEPTION
312   WHEN G_EXCEPTION_HALT_VALIDATION THEN
313     NULL;
314   WHEN OTHERS THEN
315     -- store SQL error message on message stack
316     OKC_API.SET_MESSAGE(
317       p_app_name        => G_APP_NAME,
318       p_msg_name        => G_UNEXPECTED_ERROR,
319       p_token1	        => G_SQLCODE_TOKEN,
320       p_token1_value    => SQLCODE,
321       p_token2          => G_SQLERRM_TOKEN,
322       p_token2_value    => SQLERRM);
323     -- notify caller of an error as UNEXPETED error
324     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
325   END update_qa_check_list;
326 
327   --------------------------------------
328   -- PROCEDURE delete_qa_check_list
329   --------------------------------------
330   PROCEDURE delete_qa_check_list(
331     p_api_version                  IN  NUMBER,
332     p_init_msg_list                IN  VARCHAR2 ,
333     x_return_status                OUT NOCOPY VARCHAR2,
334     x_msg_count                    OUT NOCOPY NUMBER,
335     x_msg_data                     OUT NOCOPY VARCHAR2,
336     p_qclv_rec                     IN  qclv_rec_type) IS
337     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
338     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_qa_check_list';
339     l_qclv_rec                     qclv_rec_type := p_qclv_rec;
340   BEGIN
341     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
342                                               p_init_msg_list,
343                                               '_PUB',
344                                               x_return_status);
345     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
346       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
347     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
348       raise OKC_API.G_EXCEPTION_ERROR;
349     END IF;
350     -- Call user hook for BEFORE
351     g_qclv_rec := p_qclv_rec;
352     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
353     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
354       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
355     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
356       raise OKC_API.G_EXCEPTION_ERROR;
357     END IF;
358 
359     OKC_QA_CHECK_LIST_PVT.delete_qa_check_list(
360       p_api_version   => p_api_version,
361       p_init_msg_list => p_init_msg_list,
362       x_return_status => x_return_status,
363       x_msg_count     => x_msg_count,
364       x_msg_data      => x_msg_data,
365       p_qclv_rec      => p_qclv_rec);
366 
367      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
368        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
369      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
370        raise OKC_API.G_EXCEPTION_ERROR;
371      END IF;
372 
373      -- Call user hook for AFTER
374      g_qclv_rec := l_qclv_rec;
375      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
376      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
377        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
378      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
379        raise OKC_API.G_EXCEPTION_ERROR;
380      END IF;
381      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
382   EXCEPTION
383   WHEN OKC_API.G_EXCEPTION_ERROR THEN
384     x_return_status := OKC_API.HANDLE_EXCEPTIONS
385       (l_api_name
386       ,G_PKG_NAME
387       ,'OKC_API.G_RET_STS_ERROR'
388       ,x_msg_count
389       ,x_msg_data
390       ,'_PUB');
391   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
392     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
393       (l_api_name
394       ,G_PKG_NAME
395       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
396       ,x_msg_count
397       ,x_msg_data
398       ,'_PUB');
399   WHEN OTHERS THEN
400     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
401       (l_api_name
402       ,G_PKG_NAME
403       ,'OTHERS'
404       ,x_msg_count
405       ,x_msg_data
406       ,'_PUB');
407   END delete_qa_check_list;
408 
409   --------------------------------------
410   -- PROCEDURE delete_qa_check_list
411   --------------------------------------
412   PROCEDURE delete_qa_check_list(
413     p_api_version                  IN  NUMBER,
414     p_init_msg_list                IN  VARCHAR2 ,
415     x_return_status                OUT NOCOPY VARCHAR2,
416     x_msg_count                    OUT NOCOPY NUMBER,
417     x_msg_data                     OUT NOCOPY VARCHAR2,
418     p_qclv_tbl                     IN  qclv_tbl_type) IS
419     i                              NUMBER := 0;
420     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
421   BEGIN
422     x_return_status := OKC_API.G_RET_STS_SUCCESS;
423     IF p_qclv_tbl.COUNT > 0 THEN
424       i := p_qclv_tbl.FIRST;
425       LOOP
426         delete_qa_check_list(
427           p_api_version   => p_api_version,
428           p_init_msg_list => p_init_msg_list,
429           x_return_status => l_return_status,
430           x_msg_count     => x_msg_count,
431           x_msg_data      => x_msg_data,
432           p_qclv_rec      => p_qclv_tbl(i));
433         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
434           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
435             x_return_status := l_return_status;
436             raise G_EXCEPTION_HALT_VALIDATION;
437           ELSE
438             x_return_status := l_return_status;
439           END IF;
440         END IF;
441         EXIT WHEN (i = p_qclv_tbl.LAST);
442         i := p_qclv_tbl.NEXT(i);
443       END LOOP;
444     END IF;
445   EXCEPTION
446   WHEN G_EXCEPTION_HALT_VALIDATION THEN
447     NULL;
448   WHEN OTHERS THEN
449     -- store SQL error message on message stack
450     OKC_API.SET_MESSAGE(
451       p_app_name        => G_APP_NAME,
452       p_msg_name        => G_UNEXPECTED_ERROR,
453       p_token1	        => G_SQLCODE_TOKEN,
454       p_token1_value    => SQLCODE,
455       p_token2          => G_SQLERRM_TOKEN,
456       p_token2_value    => SQLERRM);
457     -- notify caller of an error as UNEXPETED error
458     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
459   END delete_qa_check_list;
460 
461   --------------------------------------
462   -- PROCEDURE lock_qa_check_list
463   --------------------------------------
464   PROCEDURE lock_qa_check_list(
465     p_api_version                  IN  NUMBER,
466     p_init_msg_list                IN  VARCHAR2 ,
467     x_return_status                OUT NOCOPY VARCHAR2,
468     x_msg_count                    OUT NOCOPY NUMBER,
469     x_msg_data                     OUT NOCOPY VARCHAR2,
470     p_qclv_rec                     IN  qclv_rec_type) IS
471   BEGIN
472     OKC_QA_CHECK_LIST_PVT.lock_qa_check_list(
473       p_api_version   => p_api_version,
474       p_init_msg_list => p_init_msg_list,
475       x_return_status => x_return_status,
476       x_msg_count     => x_msg_count,
477       x_msg_data      => x_msg_data,
478       p_qclv_rec      => p_qclv_rec);
479   END lock_qa_check_list;
480 
481   --------------------------------------
482   -- PROCEDURE lock_qa_check_list
483   --------------------------------------
484   PROCEDURE lock_qa_check_list(
485     p_api_version                  IN  NUMBER,
486     p_init_msg_list                IN  VARCHAR2 ,
487     x_return_status                OUT NOCOPY VARCHAR2,
488     x_msg_count                    OUT NOCOPY NUMBER,
489     x_msg_data                     OUT NOCOPY VARCHAR2,
490     p_qclv_tbl                     IN  qclv_tbl_type) IS
491     i                              NUMBER := 0;
492     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
493   BEGIN
494     x_return_status := OKC_API.G_RET_STS_SUCCESS;
495     IF p_qclv_tbl.COUNT > 0 THEN
496       i := p_qclv_tbl.FIRST;
497       LOOP
498         lock_qa_check_list(
499           p_api_version   => p_api_version,
500           p_init_msg_list => p_init_msg_list,
501           x_return_status => l_return_status,
502           x_msg_count     => x_msg_count,
503           x_msg_data      => x_msg_data,
504           p_qclv_rec      => p_qclv_tbl(i));
505         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
506           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
507             x_return_status := l_return_status;
508             raise G_EXCEPTION_HALT_VALIDATION;
509           ELSE
510             x_return_status := l_return_status;
511           END IF;
512         END IF;
513         EXIT WHEN (i = p_qclv_tbl.LAST);
514         i := p_qclv_tbl.NEXT(i);
515       END LOOP;
516     END IF;
517   EXCEPTION
518   WHEN G_EXCEPTION_HALT_VALIDATION THEN
519     NULL;
520   WHEN OTHERS THEN
521     -- store SQL error message on message stack
522     OKC_API.SET_MESSAGE(
523       p_app_name        => G_APP_NAME,
524       p_msg_name        => G_UNEXPECTED_ERROR,
525       p_token1	        => G_SQLCODE_TOKEN,
526       p_token1_value    => SQLCODE,
527       p_token2          => G_SQLERRM_TOKEN,
528       p_token2_value    => SQLERRM);
529     -- notify caller of an error as UNEXPETED error
530     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
531   END lock_qa_check_list;
532 
533   --------------------------------------
534   -- PROCEDURE validate_qa_check_list
535   --------------------------------------
536   PROCEDURE validate_qa_check_list(
537     p_api_version                  IN  NUMBER,
538     p_init_msg_list                IN  VARCHAR2 ,
539     x_return_status                OUT NOCOPY VARCHAR2,
540     x_msg_count                    OUT NOCOPY NUMBER,
541     x_msg_data                     OUT NOCOPY VARCHAR2,
542     p_qclv_rec                     IN  qclv_rec_type) IS
543     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
544     l_api_name                     CONSTANT VARCHAR2(30) := 'validate_qa_check_list';
545     l_qclv_rec                     qclv_rec_type := p_qclv_rec;
546   BEGIN
547     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
548                                               p_init_msg_list,
549                                               '_PUB',
550                                               x_return_status);
551     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
552       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
553     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
554       raise OKC_API.G_EXCEPTION_ERROR;
555     END IF;
556     -- Call user hook for BEFORE
557     g_qclv_rec := p_qclv_rec;
558     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
559     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
560       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
561     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
562       raise OKC_API.G_EXCEPTION_ERROR;
563     END IF;
564 
565     OKC_QA_CHECK_LIST_PVT.validate_qa_check_list(
566       p_api_version   => p_api_version,
567       p_init_msg_list => p_init_msg_list,
568       x_return_status => x_return_status,
569       x_msg_count     => x_msg_count,
570       x_msg_data      => x_msg_data,
571       p_qclv_rec      => p_qclv_rec);
572 
573      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
574        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
575      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
576        raise OKC_API.G_EXCEPTION_ERROR;
577      END IF;
578 
579      -- Call user hook for AFTER
580      g_qclv_rec := l_qclv_rec;
581      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
582      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
583        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
584      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
585        raise OKC_API.G_EXCEPTION_ERROR;
586      END IF;
587      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
588   EXCEPTION
589   WHEN OKC_API.G_EXCEPTION_ERROR THEN
590     x_return_status := OKC_API.HANDLE_EXCEPTIONS
591       (l_api_name
592       ,G_PKG_NAME
593       ,'OKC_API.G_RET_STS_ERROR'
594       ,x_msg_count
595       ,x_msg_data
596       ,'_PUB');
597   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
598     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
599       (l_api_name
600       ,G_PKG_NAME
601       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
602       ,x_msg_count
603       ,x_msg_data
604       ,'_PUB');
605   WHEN OTHERS THEN
606     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
607       (l_api_name
608       ,G_PKG_NAME
609       ,'OTHERS'
610       ,x_msg_count
611       ,x_msg_data
612       ,'_PUB');
613   END validate_qa_check_list;
614 
615   --------------------------------------
616   -- PROCEDURE validate_qa_check_list
617   --------------------------------------
618   PROCEDURE validate_qa_check_list(
619     p_api_version                  IN  NUMBER,
620     p_init_msg_list                IN  VARCHAR2 ,
621     x_return_status                OUT NOCOPY VARCHAR2,
622     x_msg_count                    OUT NOCOPY NUMBER,
623     x_msg_data                     OUT NOCOPY VARCHAR2,
624     p_qclv_tbl                     IN  qclv_tbl_type) IS
625     i                              NUMBER := 0;
626     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
627   BEGIN
628     x_return_status := OKC_API.G_RET_STS_SUCCESS;
629     IF p_qclv_tbl.COUNT > 0 THEN
630       i := p_qclv_tbl.FIRST;
631       LOOP
632         validate_qa_check_list(
633           p_api_version   => p_api_version,
634           p_init_msg_list => p_init_msg_list,
635           x_return_status => l_return_status,
636           x_msg_count     => x_msg_count,
637           x_msg_data      => x_msg_data,
638           p_qclv_rec      => p_qclv_tbl(i));
639         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
643           ELSE
640           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
641             x_return_status := l_return_status;
642             raise G_EXCEPTION_HALT_VALIDATION;
644             x_return_status := l_return_status;
645           END IF;
646         END IF;
647         EXIT WHEN (i = p_qclv_tbl.LAST);
648         i := p_qclv_tbl.NEXT(i);
649       END LOOP;
650     END IF;
651   EXCEPTION
652   WHEN G_EXCEPTION_HALT_VALIDATION THEN
653     NULL;
654   WHEN OTHERS THEN
655     -- store SQL error message on message stack
656     OKC_API.SET_MESSAGE(
657       p_app_name        => G_APP_NAME,
658       p_msg_name        => G_UNEXPECTED_ERROR,
659       p_token1	        => G_SQLCODE_TOKEN,
660       p_token1_value    => SQLCODE,
661       p_token2          => G_SQLERRM_TOKEN,
662       p_token2_value    => SQLERRM);
663     -- notify caller of an error as UNEXPETED error
664     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
665   END validate_qa_check_list;
666 
667   ---------------------------------------------------------------------------
668   -- FUNCTION migrate_qlpv
669   ---------------------------------------------------------------------------
670   FUNCTION migrate_qlpv (
671     p_qlpv_rec1 IN qlpv_rec_type,
672     p_qlpv_rec2 IN qlpv_rec_type
673   ) RETURN qlpv_rec_type IS
674     l_qlpv_rec qlpv_rec_type;
675   BEGIN
676     l_qlpv_rec.row_id                := p_qlpv_rec1.row_id;
677     l_qlpv_rec.object_version_number := p_qlpv_rec1.object_version_number;
678     l_qlpv_rec.created_by            := p_qlpv_rec1.created_by;
679     l_qlpv_rec.creation_date         := p_qlpv_rec1.creation_date;
680     l_qlpv_rec.last_updated_by       := p_qlpv_rec1.last_updated_by;
681     l_qlpv_rec.last_update_date      := p_qlpv_rec1.last_update_date;
682     l_qlpv_rec.last_update_login     := p_qlpv_rec1.last_update_login;
683     l_qlpv_rec.qcl_id                := p_qlpv_rec2.qcl_id;
684     l_qlpv_rec.pdf_id                := p_qlpv_rec2.pdf_id;
685     l_qlpv_rec.severity              := p_qlpv_rec2.severity;
686     l_qlpv_rec.active_yn             := p_qlpv_rec2.active_yn;
687     l_qlpv_rec.run_sequence          := p_qlpv_rec2.run_sequence;
688     l_qlpv_rec.attribute_category    := p_qlpv_rec2.attribute_category;
689     l_qlpv_rec.attribute1            := p_qlpv_rec2.attribute1;
690     l_qlpv_rec.attribute2            := p_qlpv_rec2.attribute2;
691     l_qlpv_rec.attribute3            := p_qlpv_rec2.attribute3;
692     l_qlpv_rec.attribute4            := p_qlpv_rec2.attribute4;
693     l_qlpv_rec.attribute5            := p_qlpv_rec2.attribute5;
694     l_qlpv_rec.attribute6            := p_qlpv_rec2.attribute6;
695     l_qlpv_rec.attribute7            := p_qlpv_rec2.attribute7;
696     l_qlpv_rec.attribute8            := p_qlpv_rec2.attribute8;
697     l_qlpv_rec.attribute9            := p_qlpv_rec2.attribute9;
698     l_qlpv_rec.attribute10           := p_qlpv_rec2.attribute10;
699     l_qlpv_rec.attribute11           := p_qlpv_rec2.attribute11;
700     l_qlpv_rec.attribute12           := p_qlpv_rec2.attribute12;
701     l_qlpv_rec.attribute13           := p_qlpv_rec2.attribute13;
702     l_qlpv_rec.attribute14           := p_qlpv_rec2.attribute14;
703     l_qlpv_rec.attribute15           := p_qlpv_rec2.attribute15;
704     l_qlpv_rec.access_level          := p_qlpv_rec2.access_level;
705 
706     RETURN (l_qlpv_rec);
707   END migrate_qlpv;
708 
709   --------------------------------------
710   -- PROCEDURE create_qa_process
711   --------------------------------------
712   PROCEDURE create_qa_process(
713     p_api_version                  IN  NUMBER,
714     p_init_msg_list                IN  VARCHAR2 ,
715     x_return_status                OUT NOCOPY VARCHAR2,
716     x_msg_count                    OUT NOCOPY NUMBER,
717     x_msg_data                     OUT NOCOPY VARCHAR2,
718     p_qlpv_rec                     IN  qlpv_rec_type,
719     x_qlpv_rec                     OUT NOCOPY qlpv_rec_type) IS
720     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
721     l_api_name                     CONSTANT VARCHAR2(30) := 'create_qa_process';
722     l_qlpv_rec                     qlpv_rec_type := p_qlpv_rec;
723   BEGIN
724     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
725                                               p_init_msg_list,
726                                               '_PUB',
727                                               x_return_status);
728     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
729       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
730     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
731       raise OKC_API.G_EXCEPTION_ERROR;
732     END IF;
733     -- Call user hook for BEFORE
734     g_qlpv_rec := p_qlpv_rec;
735     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
736     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
737       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
738     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
739       raise OKC_API.G_EXCEPTION_ERROR;
740     END IF;
741     l_qlpv_rec := migrate_qlpv(l_qlpv_rec, g_qlpv_rec);
742 
743     OKC_QA_CHECK_LIST_PVT.create_qa_process(
744       p_api_version   => p_api_version,
745       p_init_msg_list => p_init_msg_list,
746       x_return_status => x_return_status,
747       x_msg_count     => x_msg_count,
748       x_msg_data      => x_msg_data,
749       p_qlpv_rec      => l_qlpv_rec,
750       x_qlpv_rec      => x_qlpv_rec);
751 
752      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
753        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
754      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
758      -- Call user hook for AFTER
755        raise OKC_API.G_EXCEPTION_ERROR;
756      END IF;
757 
759      g_qlpv_rec := x_qlpv_rec;
760      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
761      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
762        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
763      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
764        raise OKC_API.G_EXCEPTION_ERROR;
765      END IF;
766      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
767   EXCEPTION
768   WHEN OKC_API.G_EXCEPTION_ERROR THEN
769     x_return_status := OKC_API.HANDLE_EXCEPTIONS
770       (l_api_name
771       ,G_PKG_NAME
772       ,'OKC_API.G_RET_STS_ERROR'
773       ,x_msg_count
774       ,x_msg_data
775       ,'_PUB');
776   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
777     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
778       (l_api_name
779       ,G_PKG_NAME
780       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
781       ,x_msg_count
782       ,x_msg_data
783       ,'_PUB');
784   WHEN OTHERS THEN
785     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
786       (l_api_name
787       ,G_PKG_NAME
788       ,'OTHERS'
789       ,x_msg_count
790       ,x_msg_data
791       ,'_PUB');
792   END create_qa_process;
793 
794   --------------------------------------
795   -- PROCEDURE create_qa_process
796   --------------------------------------
797   PROCEDURE create_qa_process(
798     p_api_version                  IN  NUMBER,
799     p_init_msg_list                IN  VARCHAR2 ,
800     x_return_status                OUT NOCOPY VARCHAR2,
801     x_msg_count                    OUT NOCOPY NUMBER,
802     x_msg_data                     OUT NOCOPY VARCHAR2,
803     p_qlpv_tbl                     IN  qlpv_tbl_type,
804     x_qlpv_tbl                     OUT NOCOPY qlpv_tbl_type) IS
805     i                              NUMBER := 0;
806     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
807   BEGIN
808     x_return_status := OKC_API.G_RET_STS_SUCCESS;
809     IF p_qlpv_tbl.COUNT > 0 THEN
810       i := p_qlpv_tbl.FIRST;
811       LOOP
812         create_qa_process(
813           p_api_version   => p_api_version,
814           p_init_msg_list => p_init_msg_list,
815           x_return_status => l_return_status,
816           x_msg_count     => x_msg_count,
817           x_msg_data      => x_msg_data,
818           p_qlpv_rec      => p_qlpv_tbl(i),
819           x_qlpv_rec      => x_qlpv_tbl(i));
820         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
821           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
822             x_return_status := l_return_status;
823             raise G_EXCEPTION_HALT_VALIDATION;
824           ELSE
825             x_return_status := l_return_status;
826           END IF;
827         END IF;
828         EXIT WHEN (i = p_qlpv_tbl.LAST);
829         i := p_qlpv_tbl.NEXT(i);
830       END LOOP;
831     END IF;
832   EXCEPTION
833   WHEN G_EXCEPTION_HALT_VALIDATION THEN
834     NULL;
835   WHEN OTHERS THEN
836     -- store SQL error message on message stack
837     OKC_API.SET_MESSAGE(
838       p_app_name        => G_APP_NAME,
839       p_msg_name        => G_UNEXPECTED_ERROR,
840       p_token1	        => G_SQLCODE_TOKEN,
841       p_token1_value    => SQLCODE,
842       p_token2          => G_SQLERRM_TOKEN,
843       p_token2_value    => SQLERRM);
844     -- notify caller of an error as UNEXPETED error
845     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
846   END create_qa_process;
847 
848   --------------------------------------
849   -- PROCEDURE update_qa_process
850   --------------------------------------
851   PROCEDURE update_qa_process(
852     p_api_version                  IN  NUMBER,
853     p_init_msg_list                IN  VARCHAR2 ,
854     x_return_status                OUT NOCOPY VARCHAR2,
855     x_msg_count                    OUT NOCOPY NUMBER,
856     x_msg_data                     OUT NOCOPY VARCHAR2,
857     p_qlpv_rec                     IN  qlpv_rec_type,
858     x_qlpv_rec                     OUT NOCOPY qlpv_rec_type) IS
859     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
860     l_api_name                     CONSTANT VARCHAR2(30) := 'update_qa_process';
861     l_qlpv_rec                     qlpv_rec_type := p_qlpv_rec;
862   BEGIN
863     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
864                                               p_init_msg_list,
865                                               '_PUB',
866                                               x_return_status);
867     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
868       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
869     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
870       raise OKC_API.G_EXCEPTION_ERROR;
871     END IF;
872     -- Call user hook for BEFORE
873     g_qlpv_rec := p_qlpv_rec;
874     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
875     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
876       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
877     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
878       raise OKC_API.G_EXCEPTION_ERROR;
879     END IF;
880     l_qlpv_rec := migrate_qlpv(l_qlpv_rec, g_qlpv_rec);
881 
882     OKC_QA_CHECK_LIST_PVT.update_qa_process(
883       p_api_version   => p_api_version,
884       p_init_msg_list => p_init_msg_list,
885       x_return_status => x_return_status,
886       x_msg_count     => x_msg_count,
887       x_msg_data      => x_msg_data,
888       p_qlpv_rec      => l_qlpv_rec,
889       x_qlpv_rec      => x_qlpv_rec);
890 
891      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
895      END IF;
892        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
893      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
894        raise OKC_API.G_EXCEPTION_ERROR;
896 
897      -- Call user hook for AFTER
898      g_qlpv_rec := x_qlpv_rec;
899      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
900      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
901        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
902      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
903        raise OKC_API.G_EXCEPTION_ERROR;
904      END IF;
905      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
906   EXCEPTION
907   WHEN OKC_API.G_EXCEPTION_ERROR THEN
908     x_return_status := OKC_API.HANDLE_EXCEPTIONS
909       (l_api_name
910       ,G_PKG_NAME
911       ,'OKC_API.G_RET_STS_ERROR'
912       ,x_msg_count
913       ,x_msg_data
914       ,'_PUB');
915   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
916     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
917       (l_api_name
918       ,G_PKG_NAME
919       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
920       ,x_msg_count
921       ,x_msg_data
922       ,'_PUB');
923   WHEN OTHERS THEN
924     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
925       (l_api_name
926       ,G_PKG_NAME
927       ,'OTHERS'
928       ,x_msg_count
929       ,x_msg_data
930       ,'_PUB');
931   END update_qa_process;
932 
933   --------------------------------------
934   -- PROCEDURE update_qa_process
935   --------------------------------------
936   PROCEDURE update_qa_process(
937     p_api_version                  IN  NUMBER,
938     p_init_msg_list                IN  VARCHAR2 ,
939     x_return_status                OUT NOCOPY VARCHAR2,
940     x_msg_count                    OUT NOCOPY NUMBER,
941     x_msg_data                     OUT NOCOPY VARCHAR2,
942     p_qlpv_tbl                     IN  qlpv_tbl_type,
943     x_qlpv_tbl                     OUT NOCOPY qlpv_tbl_type) IS
944     i                              NUMBER := 0;
945     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
946   BEGIN
947     x_return_status := OKC_API.G_RET_STS_SUCCESS;
948     IF p_qlpv_tbl.COUNT > 0 THEN
949       i := p_qlpv_tbl.FIRST;
950       LOOP
951         update_qa_process(
952           p_api_version   => p_api_version,
953           p_init_msg_list => p_init_msg_list,
954           x_return_status => l_return_status,
955           x_msg_count     => x_msg_count,
956           x_msg_data      => x_msg_data,
957           p_qlpv_rec      => p_qlpv_tbl(i),
958           x_qlpv_rec      => x_qlpv_tbl(i));
959         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
960           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
961             x_return_status := l_return_status;
962             raise G_EXCEPTION_HALT_VALIDATION;
963           ELSE
964             x_return_status := l_return_status;
965           END IF;
966         END IF;
967         EXIT WHEN (i = p_qlpv_tbl.LAST);
968         i := p_qlpv_tbl.NEXT(i);
969       END LOOP;
970     END IF;
971   EXCEPTION
972   WHEN G_EXCEPTION_HALT_VALIDATION THEN
973     NULL;
974   WHEN OTHERS THEN
975     -- store SQL error message on message stack
976     OKC_API.SET_MESSAGE(
977       p_app_name        => G_APP_NAME,
978       p_msg_name        => G_UNEXPECTED_ERROR,
979       p_token1	        => G_SQLCODE_TOKEN,
980       p_token1_value    => SQLCODE,
981       p_token2          => G_SQLERRM_TOKEN,
982       p_token2_value    => SQLERRM);
983     -- notify caller of an error as UNEXPETED error
984     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
985   END update_qa_process;
986 
987   --------------------------------------
988   -- PROCEDURE delete_qa_process
989   --------------------------------------
990   PROCEDURE delete_qa_process(
991     p_api_version                  IN  NUMBER,
992     p_init_msg_list                IN  VARCHAR2 ,
993     x_return_status                OUT NOCOPY VARCHAR2,
994     x_msg_count                    OUT NOCOPY NUMBER,
995     x_msg_data                     OUT NOCOPY VARCHAR2,
996     p_qlpv_rec                     IN  qlpv_rec_type) IS
997     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
998     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_qa_process';
999     l_qlpv_rec                     qlpv_rec_type := p_qlpv_rec;
1000   BEGIN
1001     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1002                                               p_init_msg_list,
1003                                               '_PUB',
1004                                               x_return_status);
1005     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1006       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1007     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1008       raise OKC_API.G_EXCEPTION_ERROR;
1009     END IF;
1010     -- Call user hook for BEFORE
1011     g_qlpv_rec := p_qlpv_rec;
1012     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1013     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1014       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1015     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1016       raise OKC_API.G_EXCEPTION_ERROR;
1017     END IF;
1018 
1019     OKC_QA_CHECK_LIST_PVT.delete_qa_process(
1020       p_api_version   => p_api_version,
1021       p_init_msg_list => p_init_msg_list,
1022       x_return_status => x_return_status,
1023       x_msg_count     => x_msg_count,
1024       x_msg_data      => x_msg_data,
1025       p_qlpv_rec      => p_qlpv_rec);
1026 
1027      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1031      END IF;
1028        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1029      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1030        raise OKC_API.G_EXCEPTION_ERROR;
1032 
1033      -- Call user hook for AFTER
1034      g_qlpv_rec := l_qlpv_rec;
1035      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1036      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1037        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1038      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1039        raise OKC_API.G_EXCEPTION_ERROR;
1040      END IF;
1041      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1042   EXCEPTION
1043   WHEN OKC_API.G_EXCEPTION_ERROR THEN
1044     x_return_status := OKC_API.HANDLE_EXCEPTIONS
1045       (l_api_name
1046       ,G_PKG_NAME
1047       ,'OKC_API.G_RET_STS_ERROR'
1048       ,x_msg_count
1049       ,x_msg_data
1050       ,'_PUB');
1051   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1052     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1053       (l_api_name
1054       ,G_PKG_NAME
1055       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1056       ,x_msg_count
1057       ,x_msg_data
1058       ,'_PUB');
1059   WHEN OTHERS THEN
1060     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1061       (l_api_name
1062       ,G_PKG_NAME
1063       ,'OTHERS'
1064       ,x_msg_count
1065       ,x_msg_data
1066       ,'_PUB');
1067   END delete_qa_process;
1068 
1069   --------------------------------------
1070   -- PROCEDURE delete_qa_process
1071   --------------------------------------
1072   PROCEDURE delete_qa_process(
1073     p_api_version                  IN  NUMBER,
1074     p_init_msg_list                IN  VARCHAR2 ,
1075     x_return_status                OUT NOCOPY VARCHAR2,
1076     x_msg_count                    OUT NOCOPY NUMBER,
1077     x_msg_data                     OUT NOCOPY VARCHAR2,
1078     p_qlpv_tbl                     IN  qlpv_tbl_type) IS
1079     i                              NUMBER := 0;
1080     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1081   BEGIN
1082     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1083     IF p_qlpv_tbl.COUNT > 0 THEN
1084       i := p_qlpv_tbl.FIRST;
1085       LOOP
1086         delete_qa_process(
1087           p_api_version   => p_api_version,
1088           p_init_msg_list => p_init_msg_list,
1089           x_return_status => l_return_status,
1090           x_msg_count     => x_msg_count,
1091           x_msg_data      => x_msg_data,
1092           p_qlpv_rec      => p_qlpv_tbl(i));
1093         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1094           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1095             x_return_status := l_return_status;
1096             raise G_EXCEPTION_HALT_VALIDATION;
1097           ELSE
1098             x_return_status := l_return_status;
1099           END IF;
1100         END IF;
1101         EXIT WHEN (i = p_qlpv_tbl.LAST);
1102         i := p_qlpv_tbl.NEXT(i);
1103       END LOOP;
1104     END IF;
1105   EXCEPTION
1106   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1107     NULL;
1108   WHEN OTHERS THEN
1109     -- store SQL error message on message stack
1110     OKC_API.SET_MESSAGE(
1111       p_app_name        => G_APP_NAME,
1112       p_msg_name        => G_UNEXPECTED_ERROR,
1113       p_token1	        => G_SQLCODE_TOKEN,
1114       p_token1_value    => SQLCODE,
1115       p_token2          => G_SQLERRM_TOKEN,
1116       p_token2_value    => SQLERRM);
1117     -- notify caller of an error as UNEXPETED error
1118     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1119   END delete_qa_process;
1120 
1121   --------------------------------------
1122   -- PROCEDURE lock_qa_process
1123   --------------------------------------
1124   PROCEDURE lock_qa_process(
1125     p_api_version                  IN  NUMBER,
1126     p_init_msg_list                IN  VARCHAR2 ,
1127     x_return_status                OUT NOCOPY VARCHAR2,
1128     x_msg_count                    OUT NOCOPY NUMBER,
1129     x_msg_data                     OUT NOCOPY VARCHAR2,
1130     p_qlpv_rec                     IN  qlpv_rec_type) IS
1131   BEGIN
1132     OKC_QA_CHECK_LIST_PVT.lock_qa_process(
1133       p_api_version   => p_api_version,
1134       p_init_msg_list => p_init_msg_list,
1135       x_return_status => x_return_status,
1136       x_msg_count     => x_msg_count,
1137       x_msg_data      => x_msg_data,
1138       p_qlpv_rec      => p_qlpv_rec);
1139   END lock_qa_process;
1140 
1141   --------------------------------------
1142   -- PROCEDURE lock_qa_process
1143   --------------------------------------
1144   PROCEDURE lock_qa_process(
1145     p_api_version                  IN  NUMBER,
1146     p_init_msg_list                IN  VARCHAR2 ,
1147     x_return_status                OUT NOCOPY VARCHAR2,
1148     x_msg_count                    OUT NOCOPY NUMBER,
1149     x_msg_data                     OUT NOCOPY VARCHAR2,
1150     p_qlpv_tbl                     IN  qlpv_tbl_type) IS
1151     i                              NUMBER := 0;
1152     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1153   BEGIN
1154     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1155     IF p_qlpv_tbl.COUNT > 0 THEN
1156       i := p_qlpv_tbl.FIRST;
1157       LOOP
1158         lock_qa_process(
1159           p_api_version   => p_api_version,
1160           p_init_msg_list => p_init_msg_list,
1161           x_return_status => l_return_status,
1162           x_msg_count     => x_msg_count,
1163           x_msg_data      => x_msg_data,
1164           p_qlpv_rec      => p_qlpv_tbl(i));
1165         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1166           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1170             x_return_status := l_return_status;
1167             x_return_status := l_return_status;
1168             raise G_EXCEPTION_HALT_VALIDATION;
1169           ELSE
1171           END IF;
1172         END IF;
1173         EXIT WHEN (i = p_qlpv_tbl.LAST);
1174         i := p_qlpv_tbl.NEXT(i);
1175       END LOOP;
1176     END IF;
1177   EXCEPTION
1178   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1179     NULL;
1180   WHEN OTHERS THEN
1181     -- store SQL error message on message stack
1182     OKC_API.SET_MESSAGE(
1183       p_app_name        => G_APP_NAME,
1184       p_msg_name        => G_UNEXPECTED_ERROR,
1185       p_token1	        => G_SQLCODE_TOKEN,
1186       p_token1_value    => SQLCODE,
1187       p_token2          => G_SQLERRM_TOKEN,
1188       p_token2_value    => SQLERRM);
1189     -- notify caller of an error as UNEXPETED error
1190     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1191   END lock_qa_process;
1192 
1193   --------------------------------------
1194   -- PROCEDURE validate_qa_process
1195   --------------------------------------
1196   PROCEDURE validate_qa_process(
1197     p_api_version                  IN  NUMBER,
1198     p_init_msg_list                IN  VARCHAR2 ,
1199     x_return_status                OUT NOCOPY VARCHAR2,
1200     x_msg_count                    OUT NOCOPY NUMBER,
1201     x_msg_data                     OUT NOCOPY VARCHAR2,
1202     p_qlpv_rec                     IN  qlpv_rec_type) IS
1203     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1204     l_api_name                     CONSTANT VARCHAR2(30) := 'validate_qa_process';
1205     l_qlpv_rec                     qlpv_rec_type := p_qlpv_rec;
1206   BEGIN
1207     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1208                                               p_init_msg_list,
1209                                               '_PUB',
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     -- Call user hook for BEFORE
1217     g_qlpv_rec := p_qlpv_rec;
1218     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1219     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1220       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1221     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1222       raise OKC_API.G_EXCEPTION_ERROR;
1223     END IF;
1224 
1225     OKC_QA_CHECK_LIST_PVT.validate_qa_process(
1226       p_api_version   => p_api_version,
1227       p_init_msg_list => p_init_msg_list,
1228       x_return_status => x_return_status,
1229       x_msg_count     => x_msg_count,
1230       x_msg_data      => x_msg_data,
1231       p_qlpv_rec      => p_qlpv_rec);
1232 
1233      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1234        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1235      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1236        raise OKC_API.G_EXCEPTION_ERROR;
1237      END IF;
1238 
1239      -- Call user hook for AFTER
1240      g_qlpv_rec := l_qlpv_rec;
1241      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1242      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1243        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1244      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1245        raise OKC_API.G_EXCEPTION_ERROR;
1246      END IF;
1247      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1248   EXCEPTION
1249   WHEN OKC_API.G_EXCEPTION_ERROR THEN
1250     x_return_status := OKC_API.HANDLE_EXCEPTIONS
1251       (l_api_name
1252       ,G_PKG_NAME
1253       ,'OKC_API.G_RET_STS_ERROR'
1254       ,x_msg_count
1255       ,x_msg_data
1256       ,'_PUB');
1257   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1258     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1259       (l_api_name
1260       ,G_PKG_NAME
1261       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1262       ,x_msg_count
1263       ,x_msg_data
1264       ,'_PUB');
1265   WHEN OTHERS THEN
1266     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1267       (l_api_name
1268       ,G_PKG_NAME
1269       ,'OTHERS'
1270       ,x_msg_count
1271       ,x_msg_data
1272       ,'_PUB');
1273   END validate_qa_process;
1274 
1275   --------------------------------------
1276   -- PROCEDURE validate_qa_process
1277   --------------------------------------
1278   PROCEDURE validate_qa_process(
1279     p_api_version                  IN  NUMBER,
1280     p_init_msg_list                IN  VARCHAR2 ,
1281     x_return_status                OUT NOCOPY VARCHAR2,
1282     x_msg_count                    OUT NOCOPY NUMBER,
1283     x_msg_data                     OUT NOCOPY VARCHAR2,
1284     p_qlpv_tbl                     IN  qlpv_tbl_type) IS
1285     i                              NUMBER := 0;
1286     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1287   BEGIN
1288     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1289     IF p_qlpv_tbl.COUNT > 0 THEN
1290       i := p_qlpv_tbl.FIRST;
1291       LOOP
1292         validate_qa_process(
1293           p_api_version   => p_api_version,
1294           p_init_msg_list => p_init_msg_list,
1295           x_return_status => l_return_status,
1296           x_msg_count     => x_msg_count,
1297           x_msg_data      => x_msg_data,
1298           p_qlpv_rec      => p_qlpv_tbl(i));
1299         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1300           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1301             x_return_status := l_return_status;
1305           END IF;
1302             raise G_EXCEPTION_HALT_VALIDATION;
1303           ELSE
1304             x_return_status := l_return_status;
1306         END IF;
1307         EXIT WHEN (i = p_qlpv_tbl.LAST);
1308         i := p_qlpv_tbl.NEXT(i);
1309       END LOOP;
1310     END IF;
1311   EXCEPTION
1312   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1313     NULL;
1314   WHEN OTHERS THEN
1315     -- store SQL error message on message stack
1316     OKC_API.SET_MESSAGE(
1317       p_app_name        => G_APP_NAME,
1318       p_msg_name        => G_UNEXPECTED_ERROR,
1319       p_token1	        => G_SQLCODE_TOKEN,
1320       p_token1_value    => SQLCODE,
1321       p_token2          => G_SQLERRM_TOKEN,
1322       p_token2_value    => SQLERRM);
1323     -- notify caller of an error as UNEXPETED error
1324     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1325   END validate_qa_process;
1326 
1327   ---------------------------------------------------------------------------
1328   -- FUNCTION migrate_qppv
1329   ---------------------------------------------------------------------------
1330   FUNCTION migrate_qppv (
1331     p_qppv_rec1 IN qppv_rec_type,
1332     p_qppv_rec2 IN qppv_rec_type
1333   ) RETURN qppv_rec_type IS
1334     l_qppv_rec qppv_rec_type;
1335   BEGIN
1336     l_qppv_rec.object_version_number := p_qppv_rec1.object_version_number;
1337     l_qppv_rec.created_by            := p_qppv_rec1.created_by;
1338     l_qppv_rec.creation_date         := p_qppv_rec1.creation_date;
1339     l_qppv_rec.last_updated_by       := p_qppv_rec1.last_updated_by;
1340     l_qppv_rec.last_update_date      := p_qppv_rec1.last_update_date;
1341     l_qppv_rec.last_update_login     := p_qppv_rec1.last_update_login;
1342     l_qppv_rec.qlp_qcl_id            := p_qppv_rec2.qlp_qcl_id;
1343     l_qppv_rec.qlp_pdf_id            := p_qppv_rec2.qlp_pdf_id;
1344     l_qppv_rec.qlp_run_sequence      := p_qppv_rec2.qlp_run_sequence;
1345     l_qppv_rec.pdp_id                := p_qppv_rec2.pdp_id;
1346     l_qppv_rec.parm_value            := p_qppv_rec2.parm_value;
1347     l_qppv_rec.attribute_category    := p_qppv_rec2.attribute_category;
1348     l_qppv_rec.attribute1            := p_qppv_rec2.attribute1;
1349     l_qppv_rec.attribute2            := p_qppv_rec2.attribute2;
1350     l_qppv_rec.attribute3            := p_qppv_rec2.attribute3;
1351     l_qppv_rec.attribute4            := p_qppv_rec2.attribute4;
1352     l_qppv_rec.attribute5            := p_qppv_rec2.attribute5;
1353     l_qppv_rec.attribute6            := p_qppv_rec2.attribute6;
1354     l_qppv_rec.attribute7            := p_qppv_rec2.attribute7;
1355     l_qppv_rec.attribute8            := p_qppv_rec2.attribute8;
1356     l_qppv_rec.attribute9            := p_qppv_rec2.attribute9;
1357     l_qppv_rec.attribute10           := p_qppv_rec2.attribute10;
1358     l_qppv_rec.attribute11           := p_qppv_rec2.attribute11;
1359     l_qppv_rec.attribute12           := p_qppv_rec2.attribute12;
1360     l_qppv_rec.attribute13           := p_qppv_rec2.attribute13;
1361     l_qppv_rec.attribute14           := p_qppv_rec2.attribute14;
1362     l_qppv_rec.attribute15           := p_qppv_rec2.attribute15;
1363 
1364     RETURN (l_qppv_rec);
1365   END migrate_qppv;
1366 
1367   --------------------------------------
1368   -- PROCEDURE create_qa_parm
1369   --------------------------------------
1370   PROCEDURE create_qa_parm(
1371     p_api_version                  IN  NUMBER,
1372     p_init_msg_list                IN  VARCHAR2 ,
1373     x_return_status                OUT NOCOPY VARCHAR2,
1374     x_msg_count                    OUT NOCOPY NUMBER,
1375     x_msg_data                     OUT NOCOPY VARCHAR2,
1376     p_qppv_rec                     IN  qppv_rec_type,
1377     x_qppv_rec                     OUT NOCOPY qppv_rec_type) IS
1378     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1379     l_api_name                     CONSTANT VARCHAR2(30) := 'create_qa_parm';
1380     l_qppv_rec                     qppv_rec_type := p_qppv_rec;
1381   BEGIN
1382     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1383                                               p_init_msg_list,
1384                                               '_PUB',
1385                                               x_return_status);
1386     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1387       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1388     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1389       raise OKC_API.G_EXCEPTION_ERROR;
1390     END IF;
1391     -- Call user hook for BEFORE
1392     g_qppv_rec := p_qppv_rec;
1393     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1394     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1395       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1396     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1397       raise OKC_API.G_EXCEPTION_ERROR;
1398     END IF;
1399     l_qppv_rec := migrate_qppv(l_qppv_rec, g_qppv_rec);
1400 
1401     OKC_QA_CHECK_LIST_PVT.create_qa_parm(
1402       p_api_version   => p_api_version,
1403       p_init_msg_list => p_init_msg_list,
1404       x_return_status => x_return_status,
1405       x_msg_count     => x_msg_count,
1406       x_msg_data      => x_msg_data,
1407       p_qppv_rec      => l_qppv_rec,
1408       x_qppv_rec      => x_qppv_rec);
1409 
1410      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1411        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1412      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1413        raise OKC_API.G_EXCEPTION_ERROR;
1414      END IF;
1415 
1416      -- Call user hook for AFTER
1417      g_qppv_rec := x_qppv_rec;
1418      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1419      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1423      END IF;
1420        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1421      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1422        raise OKC_API.G_EXCEPTION_ERROR;
1424      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1425   EXCEPTION
1426   WHEN OKC_API.G_EXCEPTION_ERROR THEN
1427     x_return_status := OKC_API.HANDLE_EXCEPTIONS
1428       (l_api_name
1429       ,G_PKG_NAME
1430       ,'OKC_API.G_RET_STS_ERROR'
1431       ,x_msg_count
1432       ,x_msg_data
1433       ,'_PUB');
1434   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1435     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1436       (l_api_name
1437       ,G_PKG_NAME
1438       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1439       ,x_msg_count
1440       ,x_msg_data
1441       ,'_PUB');
1442   WHEN OTHERS THEN
1443     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1444       (l_api_name
1445       ,G_PKG_NAME
1446       ,'OTHERS'
1447       ,x_msg_count
1448       ,x_msg_data
1449       ,'_PUB');
1450   END create_qa_parm;
1451 
1452   --------------------------------------
1453   -- PROCEDURE create_qa_parm
1454   --------------------------------------
1455   PROCEDURE create_qa_parm(
1456     p_api_version                  IN  NUMBER,
1457     p_init_msg_list                IN  VARCHAR2 ,
1458     x_return_status                OUT NOCOPY VARCHAR2,
1459     x_msg_count                    OUT NOCOPY NUMBER,
1460     x_msg_data                     OUT NOCOPY VARCHAR2,
1461     p_qppv_tbl                     IN  qppv_tbl_type,
1462     x_qppv_tbl                     OUT NOCOPY qppv_tbl_type) IS
1463     i                              NUMBER := 0;
1464     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1465   BEGIN
1466     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1467     IF p_qppv_tbl.COUNT > 0 THEN
1468       i := p_qppv_tbl.FIRST;
1469       LOOP
1470         create_qa_parm(
1471           p_api_version   => p_api_version,
1472           p_init_msg_list => p_init_msg_list,
1473           x_return_status => l_return_status,
1474           x_msg_count     => x_msg_count,
1475           x_msg_data      => x_msg_data,
1476           p_qppv_rec      => p_qppv_tbl(i),
1477           x_qppv_rec      => x_qppv_tbl(i));
1478         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1479           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1480             x_return_status := l_return_status;
1481             raise G_EXCEPTION_HALT_VALIDATION;
1482           ELSE
1483             x_return_status := l_return_status;
1484           END IF;
1485         END IF;
1486         EXIT WHEN (i = p_qppv_tbl.LAST);
1487         i := p_qppv_tbl.NEXT(i);
1488       END LOOP;
1489     END IF;
1490   EXCEPTION
1491   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1492     NULL;
1493   WHEN OTHERS THEN
1494     -- store SQL error message on message stack
1495     OKC_API.SET_MESSAGE(
1496       p_app_name        => G_APP_NAME,
1497       p_msg_name        => G_UNEXPECTED_ERROR,
1498       p_token1	        => G_SQLCODE_TOKEN,
1499       p_token1_value    => SQLCODE,
1500       p_token2          => G_SQLERRM_TOKEN,
1501       p_token2_value    => SQLERRM);
1502     -- notify caller of an error as UNEXPETED error
1503     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1504   END create_qa_parm;
1505 
1506   --------------------------------------
1507   -- PROCEDURE update_qa_parm
1508   --------------------------------------
1509   PROCEDURE update_qa_parm(
1510     p_api_version                  IN  NUMBER,
1511     p_init_msg_list                IN  VARCHAR2 ,
1512     x_return_status                OUT NOCOPY VARCHAR2,
1513     x_msg_count                    OUT NOCOPY NUMBER,
1514     x_msg_data                     OUT NOCOPY VARCHAR2,
1515     p_qppv_rec                     IN  qppv_rec_type,
1516     x_qppv_rec                     OUT NOCOPY qppv_rec_type) IS
1517     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1518     l_api_name                     CONSTANT VARCHAR2(30) := 'update_qa_parm';
1519     l_qppv_rec                     qppv_rec_type := p_qppv_rec;
1520   BEGIN
1521     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1522                                               p_init_msg_list,
1523                                               '_PUB',
1524                                               x_return_status);
1525     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1526       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1527     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1528       raise OKC_API.G_EXCEPTION_ERROR;
1529     END IF;
1530     -- Call user hook for BEFORE
1531     g_qppv_rec := p_qppv_rec;
1532     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1533     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1534       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1535     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1536       raise OKC_API.G_EXCEPTION_ERROR;
1537     END IF;
1538     l_qppv_rec := migrate_qppv(l_qppv_rec, g_qppv_rec);
1539 
1540     OKC_QA_CHECK_LIST_PVT.update_qa_parm(
1541       p_api_version   => p_api_version,
1542       p_init_msg_list => p_init_msg_list,
1543       x_return_status => x_return_status,
1544       x_msg_count     => x_msg_count,
1545       x_msg_data      => x_msg_data,
1546       p_qppv_rec      => l_qppv_rec,
1547       x_qppv_rec      => x_qppv_rec);
1548 
1549      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1550        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1551      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1555      -- Call user hook for AFTER
1552        raise OKC_API.G_EXCEPTION_ERROR;
1553      END IF;
1554 
1556      g_qppv_rec := x_qppv_rec;
1557      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1558      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1559        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1560      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1561        raise OKC_API.G_EXCEPTION_ERROR;
1562      END IF;
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       (l_api_name
1568       ,G_PKG_NAME
1569       ,'OKC_API.G_RET_STS_ERROR'
1570       ,x_msg_count
1571       ,x_msg_data
1572       ,'_PUB');
1573   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1574     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1575       (l_api_name
1576       ,G_PKG_NAME
1577       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1578       ,x_msg_count
1579       ,x_msg_data
1580       ,'_PUB');
1581   WHEN OTHERS THEN
1582     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1583       (l_api_name
1584       ,G_PKG_NAME
1585       ,'OTHERS'
1586       ,x_msg_count
1587       ,x_msg_data
1588       ,'_PUB');
1589   END update_qa_parm;
1590 
1591   --------------------------------------
1592   -- PROCEDURE update_qa_parm
1593   --------------------------------------
1594   PROCEDURE update_qa_parm(
1595     p_api_version                  IN  NUMBER,
1596     p_init_msg_list                IN  VARCHAR2 ,
1597     x_return_status                OUT NOCOPY VARCHAR2,
1598     x_msg_count                    OUT NOCOPY NUMBER,
1599     x_msg_data                     OUT NOCOPY VARCHAR2,
1600     p_qppv_tbl                     IN  qppv_tbl_type,
1601     x_qppv_tbl                     OUT NOCOPY qppv_tbl_type) IS
1602     i                              NUMBER := 0;
1603     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1604   BEGIN
1605     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1606     IF p_qppv_tbl.COUNT > 0 THEN
1607       i := p_qppv_tbl.FIRST;
1608       LOOP
1609         update_qa_parm(
1610           p_api_version   => p_api_version,
1611           p_init_msg_list => p_init_msg_list,
1612           x_return_status => l_return_status,
1613           x_msg_count     => x_msg_count,
1614           x_msg_data      => x_msg_data,
1615           p_qppv_rec      => p_qppv_tbl(i),
1616           x_qppv_rec      => x_qppv_tbl(i));
1617         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1618           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1619             x_return_status := l_return_status;
1620             raise G_EXCEPTION_HALT_VALIDATION;
1621           ELSE
1622             x_return_status := l_return_status;
1623           END IF;
1624         END IF;
1625         EXIT WHEN (i = p_qppv_tbl.LAST);
1626         i := p_qppv_tbl.NEXT(i);
1627       END LOOP;
1628     END IF;
1629   EXCEPTION
1630   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1631     NULL;
1632   WHEN OTHERS THEN
1633     -- store SQL error message on message stack
1634     OKC_API.SET_MESSAGE(
1635       p_app_name        => G_APP_NAME,
1636       p_msg_name        => G_UNEXPECTED_ERROR,
1637       p_token1	        => G_SQLCODE_TOKEN,
1638       p_token1_value    => SQLCODE,
1639       p_token2          => G_SQLERRM_TOKEN,
1640       p_token2_value    => SQLERRM);
1641     -- notify caller of an error as UNEXPETED error
1642     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1643   END update_qa_parm;
1644 
1645   --------------------------------------
1646   -- PROCEDURE delete_qa_parm
1647   --------------------------------------
1648   PROCEDURE delete_qa_parm(
1649     p_api_version                  IN  NUMBER,
1650     p_init_msg_list                IN  VARCHAR2 ,
1651     x_return_status                OUT NOCOPY VARCHAR2,
1652     x_msg_count                    OUT NOCOPY NUMBER,
1653     x_msg_data                     OUT NOCOPY VARCHAR2,
1654     p_qppv_rec                     IN  qppv_rec_type) IS
1655     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1656     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_qa_parm';
1657     l_qppv_rec                     qppv_rec_type := p_qppv_rec;
1658   BEGIN
1659     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1660                                               p_init_msg_list,
1661                                               '_PUB',
1662                                               x_return_status);
1663     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1664       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1665     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1666       raise OKC_API.G_EXCEPTION_ERROR;
1667     END IF;
1668     -- Call user hook for BEFORE
1669     g_qppv_rec := p_qppv_rec;
1670     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1671     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1672       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1673     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1674       raise OKC_API.G_EXCEPTION_ERROR;
1675     END IF;
1676 
1677     OKC_QA_CHECK_LIST_PVT.delete_qa_parm(
1678       p_api_version   => p_api_version,
1679       p_init_msg_list => p_init_msg_list,
1680       x_return_status => x_return_status,
1681       x_msg_count     => x_msg_count,
1682       x_msg_data      => x_msg_data,
1683       p_qppv_rec      => p_qppv_rec);
1684 
1685      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1686        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1687      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1688        raise OKC_API.G_EXCEPTION_ERROR;
1689      END IF;
1690 
1691      -- Call user hook for AFTER
1692      g_qppv_rec := l_qppv_rec;
1693      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1694      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1695        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1696      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1697        raise OKC_API.G_EXCEPTION_ERROR;
1698      END IF;
1699      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1700   EXCEPTION
1701   WHEN OKC_API.G_EXCEPTION_ERROR THEN
1702     x_return_status := OKC_API.HANDLE_EXCEPTIONS
1703       (l_api_name
1704       ,G_PKG_NAME
1705       ,'OKC_API.G_RET_STS_ERROR'
1706       ,x_msg_count
1707       ,x_msg_data
1708       ,'_PUB');
1709   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1710     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1711       (l_api_name
1712       ,G_PKG_NAME
1713       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1714       ,x_msg_count
1715       ,x_msg_data
1716       ,'_PUB');
1717   WHEN OTHERS THEN
1718     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1719       (l_api_name
1720       ,G_PKG_NAME
1721       ,'OTHERS'
1722       ,x_msg_count
1723       ,x_msg_data
1724       ,'_PUB');
1725   END delete_qa_parm;
1726 
1727   --------------------------------------
1728   -- PROCEDURE delete_qa_parm
1729   --------------------------------------
1730   PROCEDURE delete_qa_parm(
1731     p_api_version                  IN  NUMBER,
1732     p_init_msg_list                IN  VARCHAR2 ,
1733     x_return_status                OUT NOCOPY VARCHAR2,
1734     x_msg_count                    OUT NOCOPY NUMBER,
1735     x_msg_data                     OUT NOCOPY VARCHAR2,
1736     p_qppv_tbl                     IN  qppv_tbl_type) IS
1737     i                              NUMBER := 0;
1738     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1739   BEGIN
1740     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1741     IF p_qppv_tbl.COUNT > 0 THEN
1742       i := p_qppv_tbl.FIRST;
1743       LOOP
1744         delete_qa_parm(
1745           p_api_version   => p_api_version,
1746           p_init_msg_list => p_init_msg_list,
1747           x_return_status => l_return_status,
1748           x_msg_count     => x_msg_count,
1749           x_msg_data      => x_msg_data,
1750           p_qppv_rec      => p_qppv_tbl(i));
1751         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1752           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1753             x_return_status := l_return_status;
1754             raise G_EXCEPTION_HALT_VALIDATION;
1755           ELSE
1756             x_return_status := l_return_status;
1757           END IF;
1758         END IF;
1759         EXIT WHEN (i = p_qppv_tbl.LAST);
1760         i := p_qppv_tbl.NEXT(i);
1761       END LOOP;
1762     END IF;
1763   EXCEPTION
1764   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1765     NULL;
1766   WHEN OTHERS THEN
1767     -- store SQL error message on message stack
1768     OKC_API.SET_MESSAGE(
1769       p_app_name        => G_APP_NAME,
1770       p_msg_name        => G_UNEXPECTED_ERROR,
1771       p_token1	        => G_SQLCODE_TOKEN,
1772       p_token1_value    => SQLCODE,
1773       p_token2          => G_SQLERRM_TOKEN,
1774       p_token2_value    => SQLERRM);
1775     -- notify caller of an error as UNEXPETED error
1776     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1777   END delete_qa_parm;
1778 
1779   --------------------------------------
1780   -- PROCEDURE lock_qa_parm
1781   --------------------------------------
1782   PROCEDURE lock_qa_parm(
1783     p_api_version                  IN  NUMBER,
1784     p_init_msg_list                IN  VARCHAR2 ,
1785     x_return_status                OUT NOCOPY VARCHAR2,
1786     x_msg_count                    OUT NOCOPY NUMBER,
1787     x_msg_data                     OUT NOCOPY VARCHAR2,
1788     p_qppv_rec                     IN  qppv_rec_type) IS
1789   BEGIN
1790     OKC_QA_CHECK_LIST_PVT.lock_qa_parm(
1791       p_api_version   => p_api_version,
1792       p_init_msg_list => p_init_msg_list,
1793       x_return_status => x_return_status,
1794       x_msg_count     => x_msg_count,
1795       x_msg_data      => x_msg_data,
1796       p_qppv_rec      => p_qppv_rec);
1797   END lock_qa_parm;
1798 
1799   --------------------------------------
1800   -- PROCEDURE lock_qa_parm
1801   --------------------------------------
1802   PROCEDURE lock_qa_parm(
1803     p_api_version                  IN  NUMBER,
1804     p_init_msg_list                IN  VARCHAR2 ,
1805     x_return_status                OUT NOCOPY VARCHAR2,
1806     x_msg_count                    OUT NOCOPY NUMBER,
1807     x_msg_data                     OUT NOCOPY VARCHAR2,
1808     p_qppv_tbl                     IN  qppv_tbl_type) IS
1809     i                              NUMBER := 0;
1810     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1811   BEGIN
1812     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1813     IF p_qppv_tbl.COUNT > 0 THEN
1814       i := p_qppv_tbl.FIRST;
1815       LOOP
1816         lock_qa_parm(
1817           p_api_version   => p_api_version,
1818           p_init_msg_list => p_init_msg_list,
1819           x_return_status => l_return_status,
1820           x_msg_count     => x_msg_count,
1821           x_msg_data      => x_msg_data,
1822           p_qppv_rec      => p_qppv_tbl(i));
1823         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1824           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1825             x_return_status := l_return_status;
1826             raise G_EXCEPTION_HALT_VALIDATION;
1827           ELSE
1828             x_return_status := l_return_status;
1829           END IF;
1830         END IF;
1831         EXIT WHEN (i = p_qppv_tbl.LAST);
1832         i := p_qppv_tbl.NEXT(i);
1833       END LOOP;
1834     END IF;
1835   EXCEPTION
1836   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1837     NULL;
1838   WHEN OTHERS THEN
1839     -- store SQL error message on message stack
1840     OKC_API.SET_MESSAGE(
1841       p_app_name        => G_APP_NAME,
1842       p_msg_name        => G_UNEXPECTED_ERROR,
1843       p_token1	        => G_SQLCODE_TOKEN,
1844       p_token1_value    => SQLCODE,
1845       p_token2          => G_SQLERRM_TOKEN,
1846       p_token2_value    => SQLERRM);
1847     -- notify caller of an error as UNEXPETED error
1848     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1849   END lock_qa_parm;
1850 
1851   --------------------------------------
1852   -- PROCEDURE validate_qa_parm
1853   --------------------------------------
1854   PROCEDURE validate_qa_parm(
1855     p_api_version                  IN  NUMBER,
1856     p_init_msg_list                IN  VARCHAR2 ,
1857     x_return_status                OUT NOCOPY VARCHAR2,
1858     x_msg_count                    OUT NOCOPY NUMBER,
1859     x_msg_data                     OUT NOCOPY VARCHAR2,
1860     p_qppv_rec                     IN  qppv_rec_type) IS
1861     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1862     l_api_name                     CONSTANT VARCHAR2(30) := 'validate_qa_parm';
1863     l_qppv_rec                     qppv_rec_type := p_qppv_rec;
1864   BEGIN
1865     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1866                                               p_init_msg_list,
1867                                               '_PUB',
1868                                               x_return_status);
1869     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1870       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1871     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1872       raise OKC_API.G_EXCEPTION_ERROR;
1873     END IF;
1874     -- Call user hook for BEFORE
1875     g_qppv_rec := p_qppv_rec;
1876     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1877     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1878       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1879     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1880       raise OKC_API.G_EXCEPTION_ERROR;
1881     END IF;
1882 
1883     OKC_QA_CHECK_LIST_PVT.validate_qa_parm(
1884       p_api_version   => p_api_version,
1885       p_init_msg_list => p_init_msg_list,
1886       x_return_status => x_return_status,
1887       x_msg_count     => x_msg_count,
1888       x_msg_data      => x_msg_data,
1889       p_qppv_rec      => p_qppv_rec);
1890 
1891      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1892        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1893      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1894        raise OKC_API.G_EXCEPTION_ERROR;
1895      END IF;
1896 
1897      -- Call user hook for AFTER
1898      g_qppv_rec := l_qppv_rec;
1899      okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1900      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1901        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1902      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1903        raise OKC_API.G_EXCEPTION_ERROR;
1904      END IF;
1905      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1906   EXCEPTION
1907   WHEN OKC_API.G_EXCEPTION_ERROR THEN
1908     x_return_status := OKC_API.HANDLE_EXCEPTIONS
1909       (l_api_name
1910       ,G_PKG_NAME
1911       ,'OKC_API.G_RET_STS_ERROR'
1912       ,x_msg_count
1913       ,x_msg_data
1914       ,'_PUB');
1915   WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1916     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1917       (l_api_name
1918       ,G_PKG_NAME
1919       ,'OKC_API.G_RET_STS_UNEXP_ERROR'
1920       ,x_msg_count
1921       ,x_msg_data
1922       ,'_PUB');
1923   WHEN OTHERS THEN
1924     x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1925       (l_api_name
1926       ,G_PKG_NAME
1927       ,'OTHERS'
1928       ,x_msg_count
1929       ,x_msg_data
1930       ,'_PUB');
1931   END validate_qa_parm;
1932 
1933   --------------------------------------
1934   -- PROCEDURE validate_qa_parm
1935   --------------------------------------
1936   PROCEDURE validate_qa_parm(
1937     p_api_version                  IN  NUMBER,
1938     p_init_msg_list                IN  VARCHAR2 ,
1939     x_return_status                OUT NOCOPY VARCHAR2,
1940     x_msg_count                    OUT NOCOPY NUMBER,
1941     x_msg_data                     OUT NOCOPY VARCHAR2,
1942     p_qppv_tbl                     IN  qppv_tbl_type) IS
1943     i                              NUMBER := 0;
1944     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1945   BEGIN
1946     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1947     IF p_qppv_tbl.COUNT > 0 THEN
1948       i := p_qppv_tbl.FIRST;
1949       LOOP
1950         validate_qa_parm(
1951           p_api_version   => p_api_version,
1952           p_init_msg_list => p_init_msg_list,
1953           x_return_status => l_return_status,
1954           x_msg_count     => x_msg_count,
1955           x_msg_data      => x_msg_data,
1956           p_qppv_rec      => p_qppv_tbl(i));
1957         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1958           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1959             x_return_status := l_return_status;
1960             raise G_EXCEPTION_HALT_VALIDATION;
1961           ELSE
1962             x_return_status := l_return_status;
1963           END IF;
1964         END IF;
1965         EXIT WHEN (i = p_qppv_tbl.LAST);
1966         i := p_qppv_tbl.NEXT(i);
1967       END LOOP;
1968     END IF;
1969   EXCEPTION
1970   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1971     NULL;
1972   WHEN OTHERS THEN
1973     -- store SQL error message on message stack
1974     OKC_API.SET_MESSAGE(
1975       p_app_name        => G_APP_NAME,
1976       p_msg_name        => G_UNEXPECTED_ERROR,
1977       p_token1	        => G_SQLCODE_TOKEN,
1978       p_token1_value    => SQLCODE,
1979       p_token2          => G_SQLERRM_TOKEN,
1980       p_token2_value    => SQLERRM);
1981     -- notify caller of an error as UNEXPETED error
1982     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1983   END validate_qa_parm;
1984 
1985   --------------------------------------
1986   -- PROCEDURE add_language
1987   --------------------------------------
1988   PROCEDURE add_language IS
1989   BEGIN
1990     OKC_QA_CHECK_LIST_PVT.ADD_LANGUAGE;
1991   END add_language;
1992 
1993 END OKC_QA_CHECK_LIST_PUB;