DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_OUTCOME_PUB

Source


1 package body okc_outcome_pub as
2 /* $Header: OKCPOCEB.pls 120.0 2005/05/25 23:11:11 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 --
5 
6 
7 
8   FUNCTION migrate_ocev(p_ocev_rec1 IN ocev_rec_type,
9                         p_ocev_rec2 IN ocev_rec_type)
10     RETURN ocev_rec_type IS
11     l_ocev_rec ocev_rec_type;
12    --
13    l_proc varchar2(72) := '  okc_outcome_pub.'||'migrate_ocev';
14    --
15 
16   BEGIN
17 
18   IF (l_debug = 'Y') THEN
19      okc_debug.Set_Indentation(l_proc);
20      okc_debug.Log('10: Entering ',2);
21   END IF;
22 
23     l_ocev_rec.id                    := p_ocev_rec1.id;
24     l_ocev_rec.object_version_number := p_ocev_rec1.object_version_number;
25     l_ocev_rec.pdf_id                := p_ocev_rec1.pdf_id;
26     l_ocev_rec.cnh_id                := p_ocev_rec1.cnh_id;
27     l_ocev_rec.dnz_chr_id            := p_ocev_rec1.dnz_chr_id;
28     l_ocev_rec.success_resource_id       := p_ocev_rec1.success_resource_id;
29     l_ocev_rec.failure_resource_id       := p_ocev_rec1.failure_resource_id;
30     l_ocev_rec.created_by            := p_ocev_rec1.created_by;
31     l_ocev_rec.creation_date         := p_ocev_rec1.creation_date;
32     l_ocev_rec.last_updated_by       := p_ocev_rec1.last_updated_by;
33     l_ocev_rec.last_update_date      := p_ocev_rec1.last_update_date;
34     l_ocev_rec.last_update_login     := p_ocev_rec1.last_update_login;
35     l_ocev_rec.sfwt_flag             := p_ocev_rec2.sfwt_flag;
36     l_ocev_rec.seeded_flag           := p_ocev_rec2.seeded_flag;
37     l_ocev_rec.application_id        := p_ocev_rec2.application_id;
38     l_ocev_rec.comments              := p_ocev_rec2.comments;
39     l_ocev_rec.enabled_yn            := p_ocev_rec2.enabled_yn;
40     l_ocev_rec.attribute_category    := p_ocev_rec2.attribute_category;
41     l_ocev_rec.attribute1            := p_ocev_rec2.attribute1;
42     l_ocev_rec.attribute2            := p_ocev_rec2.attribute2;
43     l_ocev_rec.attribute3            := p_ocev_rec2.attribute3;
44     l_ocev_rec.attribute4            := p_ocev_rec2.attribute4;
45     l_ocev_rec.attribute5            := p_ocev_rec2.attribute5;
46     l_ocev_rec.attribute6            := p_ocev_rec2.attribute6;
47     l_ocev_rec.attribute7            := p_ocev_rec2.attribute7;
48     l_ocev_rec.attribute8            := p_ocev_rec2.attribute8;
49     l_ocev_rec.attribute9            := p_ocev_rec2.attribute9;
50     l_ocev_rec.attribute10           := p_ocev_rec2.attribute10;
51     l_ocev_rec.attribute11           := p_ocev_rec2.attribute11;
52     l_ocev_rec.attribute12           := p_ocev_rec2.attribute12;
53     l_ocev_rec.attribute13           := p_ocev_rec2.attribute13;
54     l_ocev_rec.attribute14           := p_ocev_rec2.attribute14;
55     l_ocev_rec.attribute15           := p_ocev_rec2.attribute15;
56 
57  IF (l_debug = 'Y') THEN
58     okc_debug.Log('1000: Leaving ',2);
59     okc_debug.Reset_Indentation;
60  END IF;
61 
62     RETURN (l_ocev_rec);
63   END migrate_ocev;
64 
65   FUNCTION migrate_oatv(p_oatv_rec1 IN oatv_rec_type,
66                         p_oatv_rec2 IN oatv_rec_type)
67     RETURN oatv_rec_type IS
68     l_oatv_rec oatv_rec_type;
69    --
70    l_proc varchar2(72) := '  okc_outcome_pub.'||'migrate_oatv';
71    --
72 
73   BEGIN
74 
75   IF (l_debug = 'Y') THEN
76      okc_debug.Set_Indentation(l_proc);
77      okc_debug.Log('10: Entering ',2);
78   END IF;
79 
80 
81     l_oatv_rec.id                    := p_oatv_rec1.id;
82     l_oatv_rec.pdp_id                := p_oatv_rec1.pdp_id;
83     l_oatv_rec.oce_id                := p_oatv_rec1.oce_id;
84     l_oatv_rec.aae_id                := p_oatv_rec1.aae_id;
85     l_oatv_rec.dnz_chr_id            := p_oatv_rec1.dnz_chr_id;
86     l_oatv_rec.object_version_number := p_oatv_rec1.object_version_number;
87     l_oatv_rec.seeded_flag           := p_oatv_rec1.seeded_flag;
88     l_oatv_rec.application_id        := p_oatv_rec1.application_id;
89     l_oatv_rec.created_by            := p_oatv_rec1.created_by;
90     l_oatv_rec.creation_date         := p_oatv_rec1.creation_date;
91     l_oatv_rec.last_updated_by       := p_oatv_rec1.last_updated_by;
92     l_oatv_rec.last_update_date      := p_oatv_rec1.last_update_date;
93     l_oatv_rec.last_update_login     := p_oatv_rec1.last_update_login;
94     l_oatv_rec.value                 := p_oatv_rec2.value;
95 
96  IF (l_debug = 'Y') THEN
97     okc_debug.Log('1000: Leaving ',2);
98     okc_debug.Reset_Indentation;
99  END IF;
100 
101     RETURN (l_oatv_rec);
102   END migrate_oatv;
103 
104   PROCEDURE add_language IS
105    --
106    l_proc varchar2(72) := '  okc_outcome_pub.'||'add_language';
107    --
108 
109   BEGIN
110 
111   IF (l_debug = 'Y') THEN
112      okc_debug.Set_Indentation(l_proc);
113      okc_debug.Log('10: Entering ',2);
114   END IF;
115 
116     okc_outcome_pvt.add_language;
117 
118  IF (l_debug = 'Y') THEN
119     okc_debug.Log('1000: Leaving ',2);
120     okc_debug.Reset_Indentation;
121  END IF;
122 
123   END;
124 
125   --Object type procedure for insert
126   PROCEDURE create_outcomes_args(
127     p_api_version	    IN NUMBER,
128     p_init_msg_list         IN VARCHAR2 ,
129     x_return_status         OUT NOCOPY VARCHAR2,
130     x_msg_count             OUT NOCOPY NUMBER,
131     x_msg_data              OUT NOCOPY VARCHAR2,
132     p_ocev_rec		    IN ocev_rec_type,
133     p_oatv_tbl              IN oatv_tbl_type,
134     x_ocev_rec              OUT NOCOPY ocev_rec_type,
135     x_oatv_tbl              OUT NOCOPY oatv_tbl_type) IS
136 
137     l_api_name              CONSTANT VARCHAR2(30) := 'create_outcomes_args';
138     l_return_status	    VARCHAR2(1);
139    --
140    l_proc varchar2(72) := '  okc_outcome_pub.'||'create_outcomes_args';
141    --
142 
143   BEGIN
144 
145   IF (l_debug = 'Y') THEN
146      okc_debug.Set_Indentation(l_proc);
147      okc_debug.Log('10: Entering ',2);
148   END IF;
149 
150     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
151 					      p_init_msg_list,
152 					      '_PUB',
153                                               x_return_status);
154     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
155       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
156     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
157       raise OKC_API.G_EXCEPTION_ERROR;
158     END IF;
159 
160     -- Call to Complex API procedure
161     okc_outcome_pvt.create_outcomes_args(
162 	    p_api_version,
163 	    p_init_msg_list,
164 	    x_return_status,
165 	    x_msg_count,
166 	    x_msg_data,
167 	    p_ocev_rec,
168 	    p_oatv_tbl,
169 	    x_ocev_rec,
170 	    x_oatv_tbl);
171     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
172        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
173      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
174        raise OKC_API.G_EXCEPTION_ERROR;
175      END IF;
176 
177     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
178 
179  IF (l_debug = 'Y') THEN
180     okc_debug.Log('1000: Leaving ',2);
181     okc_debug.Reset_Indentation;
182  END IF;
183 
184   EXCEPTION
185     WHEN OKC_API.G_EXCEPTION_ERROR THEN
186       x_return_status := OKC_API.HANDLE_EXCEPTIONS
187       (l_api_name,
188        G_PKG_NAME,
189        'OKC_API.G_RET_STS_ERROR',
190        x_msg_count,
191        x_msg_data,
192        '_PUB');
193        IF (l_debug = 'Y') THEN
194           okc_debug.Log('2000: Leaving ',2);
195           okc_debug.Reset_Indentation;
196        END IF;
197     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
198       x_return_status := OKC_API.HANDLE_EXCEPTIONS
199       (l_api_name,
200        G_PKG_NAME,
201        'OKC_API.G_RET_STS_UNEXP_ERROR',
202        x_msg_count,
203        x_msg_data,
204        '_PUB');
205        IF (l_debug = 'Y') THEN
206           okc_debug.Log('3000: Leaving ',2);
207           okc_debug.Reset_Indentation;
208        END IF;
209     WHEN OTHERS THEN
210       x_return_status := OKC_API.HANDLE_EXCEPTIONS
211       (l_api_name,
212        G_PKG_NAME,
213        'OTHERS',
214        x_msg_count,
215        x_msg_data,
216        '_PUB');
217        IF (l_debug = 'Y') THEN
218           okc_debug.Log('4000: Leaving ',2);
219           okc_debug.Reset_Indentation;
220        END IF;
221   END create_outcomes_args;
222 
223   --Object type procedure for update
224   PROCEDURE update_outcomes_args(
225     p_api_version	    IN NUMBER,
226     p_init_msg_list         IN VARCHAR2 ,
227     x_return_status         OUT NOCOPY VARCHAR2,
228     x_msg_count             OUT NOCOPY NUMBER,
229     x_msg_data              OUT NOCOPY VARCHAR2,
230     p_ocev_rec		    IN ocev_rec_type,
231     p_oatv_tbl              IN oatv_tbl_type,
232     x_ocev_rec              OUT NOCOPY ocev_rec_type,
233     x_oatv_tbl              OUT NOCOPY oatv_tbl_type) IS
234 
235     l_api_version           CONSTANT NUMBER := 1;
236     l_api_name              CONSTANT VARCHAR2(30) := 'update_outcomes_args';
237     l_return_status         VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
238 
239    --
240    l_proc varchar2(72) := '  okc_outcome_pub.'||'update_outcomes_args';
241    --
242 
243   BEGIN
244 
245   IF (l_debug = 'Y') THEN
246      okc_debug.Set_Indentation(l_proc);
247      okc_debug.Log('10: Entering ',2);
248   END IF;
249 
250     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
251 					      p_init_msg_list,
252 					      '_PUB',
253                                               x_return_status);
254     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
255       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
256     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
257       raise OKC_API.G_EXCEPTION_ERROR;
258     END IF;
259 
260    --Call to Complex API procedure
261     okc_outcome_pvt.update_outcomes_args(
262 	    p_api_version,
263 	    p_init_msg_list,
264 	    x_return_status,
265 	    x_msg_count,
266 	    x_msg_data,
267 	    p_ocev_rec,
268 	    p_oatv_tbl,
269 	    x_ocev_rec,
270 	    x_oatv_tbl);
271      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
272        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
273      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
274        raise OKC_API.G_EXCEPTION_ERROR;
275      END IF;
276 
277     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
278 
279  IF (l_debug = 'Y') THEN
280     okc_debug.Log('1000: Leaving ',2);
281     okc_debug.Reset_Indentation;
282  END IF;
283 
284   EXCEPTION
285     WHEN OKC_API.G_EXCEPTION_ERROR THEN
286       x_return_status := OKC_API.HANDLE_EXCEPTIONS
287       (l_api_name,
288        G_PKG_NAME,
289        'OKC_API.G_RET_STS_ERROR',
290        x_msg_count,
291        x_msg_data,
292        '_PUB');
293        IF (l_debug = 'Y') THEN
294           okc_debug.Log('2000: Leaving ',2);
295           okc_debug.Reset_Indentation;
296        END IF;
297     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
298       x_return_status := OKC_API.HANDLE_EXCEPTIONS
299       (l_api_name,
300        G_PKG_NAME,
301        'OKC_API.G_RET_STS_UNEXP_ERROR',
302        x_msg_count,
303        x_msg_data,
304        '_PUB');
305        IF (l_debug = 'Y') THEN
306           okc_debug.Log('3000: Leaving ',2);
307           okc_debug.Reset_Indentation;
308        END IF;
309     WHEN OTHERS THEN
310       x_return_status := OKC_API.HANDLE_EXCEPTIONS
311       (l_api_name,
312        G_PKG_NAME,
313        'OTHERS',
314        x_msg_count,
315        x_msg_data,
316        '_PUB');
317        IF (l_debug = 'Y') THEN
318           okc_debug.Log('4000: Leaving ',2);
319           okc_debug.Reset_Indentation;
320        END IF;
321   END update_outcomes_args;
322 
323   --Object type procedure for validate
324   PROCEDURE validate_outcomes_args(
325     p_api_version	    IN NUMBER,
326     p_init_msg_list         IN VARCHAR2 ,
327     x_return_status         OUT NOCOPY VARCHAR2,
328     x_msg_count             OUT NOCOPY NUMBER,
329     x_msg_data              OUT NOCOPY VARCHAR2,
330     p_ocev_rec		    IN ocev_rec_type,
331     p_oatv_tbl              IN oatv_tbl_type) IS
332 
333     l_api_version           CONSTANT NUMBER := 1;
334     l_api_name              CONSTANT VARCHAR2(30) := 'V_validate_process_def';
335     l_return_status         VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
336 
337    --
338    l_proc varchar2(72) := '  okc_outcome_pub.'||'validate_outcomes_args';
339    --
340 
341   BEGIN
342 
343   IF (l_debug = 'Y') THEN
344      okc_debug.Set_Indentation(l_proc);
345      okc_debug.Log('10: Entering ',2);
346   END IF;
347 
348     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
349 					      p_init_msg_list,
350 					      '_PUB',
351                                               x_return_status);
352     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
353       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
354     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
355       raise OKC_API.G_EXCEPTION_ERROR;
356     END IF;
357 
358     okc_outcome_pvt.validate_outcomes_args(
359 	    p_api_version,
360 	    p_init_msg_list,
361 	    x_return_status,
362 	    x_msg_count,
363 	    x_msg_data,
364 	    p_ocev_rec,
365 	    p_oatv_tbl);
366      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
367        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
368      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
369        raise OKC_API.G_EXCEPTION_ERROR;
370      END IF;
371 
372     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
373 
374  IF (l_debug = 'Y') THEN
375     okc_debug.Log('1000: Leaving ',2);
376     okc_debug.Reset_Indentation;
377  END IF;
378 
379   EXCEPTION
380     WHEN OKC_API.G_EXCEPTION_ERROR THEN
381       x_return_status := OKC_API.HANDLE_EXCEPTIONS
382       (l_api_name,
383        G_PKG_NAME,
384        'OKC_API.G_RET_STS_ERROR',
385        x_msg_count,
386        x_msg_data,
387        '_PUB');
388        IF (l_debug = 'Y') THEN
389           okc_debug.Log('2000: Leaving ',2);
390           okc_debug.Reset_Indentation;
391        END IF;
392     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
393       x_return_status := OKC_API.HANDLE_EXCEPTIONS
394       (l_api_name,
395        G_PKG_NAME,
396        'OKC_API.G_RET_STS_UNEXP_ERROR',
397        x_msg_count,
398        x_msg_data,
399        '_PUB');
400        IF (l_debug = 'Y') THEN
401           okc_debug.Log('3000: Leaving ',2);
402           okc_debug.Reset_Indentation;
403        END IF;
404     WHEN OTHERS THEN
405       x_return_status := OKC_API.HANDLE_EXCEPTIONS
406       (l_api_name,
407        G_PKG_NAME,
408        'OTHERS',
409        x_msg_count,
410        x_msg_data,
411        '_PUB');
412        IF (l_debug = 'Y') THEN
413           okc_debug.Log('4000: Leaving ',2);
414           okc_debug.Reset_Indentation;
415        END IF;
416   END validate_outcomes_args;
417 
418   --Procedures for Outcomes
419 
420   PROCEDURE create_outcome(p_api_version	    IN NUMBER,
421     			    p_init_msg_list         IN VARCHAR2 ,
422     			    x_return_status         OUT NOCOPY VARCHAR2,
423     			    x_msg_count             OUT NOCOPY NUMBER,
424     			    x_msg_data              OUT NOCOPY VARCHAR2,
425     			    p_ocev_rec		    IN ocev_rec_type,
426     			    x_ocev_rec              OUT NOCOPY ocev_rec_type) IS
427 
428  	 l_api_name	 CONSTANT VARCHAR2(30) := 'create_outcome';
429 	 l_api_version   CONSTANT NUMBER := 1.0;
430     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
431 	 l_ocev_rec      ocev_rec_type := p_ocev_rec;
432    --
433    l_proc varchar2(72) := '  okc_outcome_pub.'||'create_outcome';
434    --
435 
436   BEGIN
437 
438   IF (l_debug = 'Y') THEN
439      okc_debug.Set_Indentation(l_proc);
440      okc_debug.Log('10: Entering ',2);
441   END IF;
442 
443 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
444 						   g_pkg_name,
445 						   p_init_msg_list,
446 					           l_api_version,
447 						   p_api_version,
448 						   '_PUB',
449                                                    x_return_status);
450 
451     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
452       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
453     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
454       		RAISE OKC_API.G_EXCEPTION_ERROR;
455     	END IF;
456 
457 	-- USER HOOK CALL FOR BEFORE, STARTS
458     	g_ocev_rec := l_ocev_rec;
459 
460     	okc_util.call_user_hook(x_return_status  => x_return_status,
461      				p_package_name   => g_pkg_name,
462      				p_procedure_name => l_api_name,
463      				p_before_after   => 'B');
464     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
465       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
466     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
467       		RAISE OKC_API.G_EXCEPTION_ERROR;
468     	END IF;
469 
470 	--get values back from hook call
471 	 l_ocev_rec := migrate_ocev(l_ocev_rec, g_ocev_rec);
472 
473         -- Call to procedure of complex API
474 	okc_outcome_pvt.create_outcome(p_api_version   => p_api_version,
475     				        p_init_msg_list => p_init_msg_list,
476     				        x_return_status => x_return_status,
477     				        x_msg_count     => x_msg_count,
478     				   	x_msg_data      => x_msg_data,
479     				   	p_ocev_rec      => l_ocev_rec,
480     				   	x_ocev_rec      => x_ocev_rec);
481 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
482        		raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
483      	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
484        		raise OKC_API.G_EXCEPTION_ERROR;
485      	END IF;
486 
487 	--USER HOOK CALL FOR AFTER, STARTS
488 	g_ocev_rec := x_ocev_rec;
489 
490     	okc_util.call_user_hook(x_return_status  => x_return_status,
491      				p_package_name   => g_pkg_name,
492      				p_procedure_name => l_api_name,
493      				p_before_after   => 'A');
494 
495     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
496       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
497     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
498       		RAISE OKC_API.G_EXCEPTION_ERROR;
499     	END IF;
500 	--USER HOOK CALL FOR AFTER, ENDS
501 
502     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
503 
504 
505  IF (l_debug = 'Y') THEN
506     okc_debug.Log('1000: Leaving ',2);
507     okc_debug.Reset_Indentation;
508  END IF;
509 
510   EXCEPTION
511     WHEN OKC_API.G_EXCEPTION_ERROR THEN
512       x_return_status := OKC_API.HANDLE_EXCEPTIONS
513       (
514         l_api_name,
515         G_PKG_NAME,
516         'OKC_API.G_RET_STS_ERROR',
517         x_msg_count,
518         x_msg_data,
519         '_PUB'
520       );
521        IF (l_debug = 'Y') THEN
522           okc_debug.Log('2000: Leaving ',2);
523           okc_debug.Reset_Indentation;
524        END IF;
525 
526     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
527       x_return_status := OKC_API.HANDLE_EXCEPTIONS
528       (
529         l_api_name,
530         G_PKG_NAME,
531         'OKC_API.G_RET_STS_UNEXP_ERROR',
532         x_msg_count,
533         x_msg_data,
534         '_PUB'
535       );
536        IF (l_debug = 'Y') THEN
537           okc_debug.Log('3000: Leaving ',2);
538           okc_debug.Reset_Indentation;
539        END IF;
540 
541     WHEN OTHERS THEN
542       x_return_status := OKC_API.HANDLE_EXCEPTIONS
543       (
544         l_api_name,
545         G_PKG_NAME,
546         'OTHERS',
547         x_msg_count,
548         x_msg_data,
549         '_PUB'
550       );
551        IF (l_debug = 'Y') THEN
552           okc_debug.Log('4000: Leaving ',2);
553           okc_debug.Reset_Indentation;
554        END IF;
555   END create_outcome;
556 
557   PROCEDURE create_outcome(p_api_version	    IN NUMBER,
558     			    p_init_msg_list         IN VARCHAR2 ,
559     			    x_return_status         OUT NOCOPY VARCHAR2,
560     			    x_msg_count             OUT NOCOPY NUMBER,
561     			    x_msg_data              OUT NOCOPY VARCHAR2,
562     			    p_ocev_tbl		    IN ocev_tbl_type,
563     			    x_ocev_tbl              OUT NOCOPY ocev_tbl_type) IS
564 
565     	l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
566 	i		 NUMBER := 0;
567    --
568    l_proc varchar2(72) := '  okc_outcome_pub.'||'create_outcome';
569    --
570 
571   BEGIN
572 
573   IF (l_debug = 'Y') THEN
574      okc_debug.Set_Indentation(l_proc);
575      okc_debug.Log('10: Entering ',2);
576   END IF;
577 
578     --Initialize the return status
579 	x_return_status := OKC_API.G_RET_STS_SUCCESS;
580 
581     IF p_ocev_tbl.COUNT > 0 THEN
582       i := p_ocev_tbl.FIRST;
583       LOOP
584         create_outcome(
585 	    p_api_version,
586 	    p_init_msg_list,
587 	    l_return_status,
588 	    x_msg_count,
589 	    x_msg_data,
590 	    p_ocev_tbl(i),
591 	    x_ocev_tbl(i));
592         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
593           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
594             x_return_status := l_return_status;
595             raise G_EXCEPTION_HALT_VALIDATION;
596           ELSE
597             x_return_status := l_return_status;
598           END IF;
599         END IF;
600         EXIT WHEN (i = p_ocev_tbl.LAST);
601         i := p_ocev_tbl.NEXT(i);
602       END LOOP;
603     END IF;
604 
605  IF (l_debug = 'Y') THEN
606     okc_debug.Log('1000: Leaving ',2);
607     okc_debug.Reset_Indentation;
608  END IF;
609 
610   EXCEPTION
611     WHEN G_EXCEPTION_HALT_VALIDATION THEN
612       NULL;
613        IF (l_debug = 'Y') THEN
614           okc_debug.Log('2000: Leaving ',2);
615           okc_debug.Reset_Indentation;
616        END IF;
617 
618     WHEN OTHERS THEN
619       OKC_API.set_message(p_app_name      => g_app_name,
620                           p_msg_name      => g_unexpected_error,
621                           p_token1        => g_sqlcode_token,
622                           p_token1_value  => sqlcode,
623                           p_token2        => g_sqlerrm_token,
624                           p_token2_value  => sqlerrm);
625       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
626        IF (l_debug = 'Y') THEN
627           okc_debug.Log('3000: Leaving ',2);
628           okc_debug.Reset_Indentation;
629        END IF;
630   END create_outcome;
631 
632  PROCEDURE lock_outcome(p_api_version	    	    IN NUMBER,
633     			    p_init_msg_list         IN VARCHAR2 ,
634     			    x_return_status         OUT NOCOPY VARCHAR2,
635     			    x_msg_count             OUT NOCOPY NUMBER,
636     			    x_msg_data              OUT NOCOPY VARCHAR2,
637     			    p_ocev_rec		    IN ocev_rec_type) IS
638 
639     	 l_api_name	 CONSTANT VARCHAR2(30) := 'lock_outcome';
640 	 l_api_version   CONSTANT NUMBER := 1.0;
641     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
642    --
643    l_proc varchar2(72) := '  okc_outcome_pub.'||'lock_outcome';
644    --
645 
646   BEGIN
647 
648   IF (l_debug = 'Y') THEN
649      okc_debug.Set_Indentation(l_proc);
650      okc_debug.Log('10: Entering ',2);
651   END IF;
652 
653 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
654 						   g_pkg_name,
655 						   p_init_msg_list,
656 					           l_api_version,
657 						   p_api_version,
658 						   '_PUB',
659                                                    x_return_status);
660 
661     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
662       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
663     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
664       		RAISE OKC_API.G_EXCEPTION_ERROR;
665     	END IF;
666 
667     	-- Call to procedure of complex API
668 	okc_outcome_pvt.lock_outcome(p_api_version   => p_api_version,
669     				    p_init_msg_list => p_init_msg_list,
670     				    x_return_status => x_return_status,
671     				    x_msg_count     => x_msg_count,
672     				    x_msg_data      => x_msg_data,
673 				    p_ocev_rec      => p_ocev_rec);
674 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
675       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
676     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
677       		RAISE OKC_API.G_EXCEPTION_ERROR;
678     	END IF;
679 
680       	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
681 
682 
683  IF (l_debug = 'Y') THEN
684     okc_debug.Log('1000: Leaving ',2);
685     okc_debug.Reset_Indentation;
686  END IF;
687 
688   EXCEPTION
689     WHEN OKC_API.G_EXCEPTION_ERROR THEN
690       x_return_status := OKC_API.HANDLE_EXCEPTIONS
691       (
692         l_api_name,
693         G_PKG_NAME,
694         'OKC_API.G_RET_STS_ERROR',
695         x_msg_count,
696         x_msg_data,
697         '_PUB'
698       );
699        IF (l_debug = 'Y') THEN
700           okc_debug.Log('2000: Leaving ',2);
701           okc_debug.Reset_Indentation;
702        END IF;
703 
704     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
705       x_return_status := OKC_API.HANDLE_EXCEPTIONS
706       (
707         l_api_name,
708         G_PKG_NAME,
709         'OKC_API.G_RET_STS_UNEXP_ERROR',
710         x_msg_count,
711         x_msg_data,
712         '_PUB'
713       );
714        IF (l_debug = 'Y') THEN
715           okc_debug.Log('3000: Leaving ',2);
716           okc_debug.Reset_Indentation;
717        END IF;
718 
719     WHEN OTHERS THEN
720       x_return_status := OKC_API.HANDLE_EXCEPTIONS
721       (
722         l_api_name,
723         G_PKG_NAME,
724         'OTHERS',
725         x_msg_count,
726         x_msg_data,
727         '_PUB'
728       );
729        IF (l_debug = 'Y') THEN
730           okc_debug.Log('4000: Leaving ',2);
731           okc_debug.Reset_Indentation;
732        END IF;
733   end lock_outcome;
734 
735   PROCEDURE lock_outcome(p_api_version	   IN NUMBER,
736     			  p_init_msg_list  IN VARCHAR2 ,
737     			  x_return_status  OUT NOCOPY VARCHAR2,
738     			  x_msg_count      OUT NOCOPY NUMBER,
739     			  x_msg_data       OUT NOCOPY VARCHAR2,
740     			  p_ocev_tbl       IN ocev_tbl_type) IS
741 
742     	    l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
743 	    i				   NUMBER := 0;
744    --
745    l_proc varchar2(72) := '  okc_outcome_pub.'||'lock_outcome';
746    --
747 
748   BEGIN
749 
750   IF (l_debug = 'Y') THEN
751      okc_debug.Set_Indentation(l_proc);
752      okc_debug.Log('10: Entering ',2);
753   END IF;
754 
755     x_return_status := OKC_API.G_RET_STS_SUCCESS;
756     IF p_ocev_tbl.COUNT > 0 THEN
757       i := p_ocev_tbl.FIRST;
758       LOOP
759         lock_outcome(
760 	    p_api_version,
761 	    p_init_msg_list,
762 	    l_return_status,
763 	    x_msg_count,
764 	    x_msg_data,
765 	    p_ocev_tbl(i));
766         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
767           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
768             x_return_status := l_return_status;
769             raise G_EXCEPTION_HALT_VALIDATION;
770           ELSE
771             x_return_status := l_return_status;
772           END IF;
773         END IF;
774         EXIT WHEN (i = p_ocev_tbl.LAST);
775         i := p_ocev_tbl.NEXT(i);
776       END LOOP;
777     END IF;
778 
779  IF (l_debug = 'Y') THEN
780     okc_debug.Log('1000: Leaving ',2);
781     okc_debug.Reset_Indentation;
782  END IF;
783 
784   EXCEPTION
785     WHEN G_EXCEPTION_HALT_VALIDATION THEN
786       NULL;
787        IF (l_debug = 'Y') THEN
788           okc_debug.Log('2000: Leaving ',2);
789           okc_debug.Reset_Indentation;
790        END IF;
791 
792     WHEN OTHERS THEN
793       OKC_API.set_message(p_app_name      => g_app_name,
794                           p_msg_name      => g_unexpected_error,
795                           p_token1        => g_sqlcode_token,
796                           p_token1_value  => sqlcode,
797                           p_token2        => g_sqlerrm_token,
798                           p_token2_value  => sqlerrm);
799       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
800        IF (l_debug = 'Y') THEN
801           okc_debug.Log('3000: Leaving ',2);
802           okc_debug.Reset_Indentation;
803        END IF;
804   END lock_outcome;
805 
806   PROCEDURE update_outcome(p_api_version	    IN NUMBER,
807     			    p_init_msg_list         IN VARCHAR2 ,
808     			    x_return_status         OUT NOCOPY VARCHAR2,
809     			    x_msg_count             OUT NOCOPY NUMBER,
810     			    x_msg_data              OUT NOCOPY VARCHAR2,
811     			    p_ocev_rec		    IN ocev_rec_type,
812     			    x_ocev_rec              OUT NOCOPY ocev_rec_type) IS
813 
814 	 l_api_name	 CONSTANT VARCHAR2(30) := 'update_outcome';
815 	 l_api_version   CONSTANT NUMBER := 1.0;
816     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
817 	 l_ocev_rec      ocev_rec_type := p_ocev_rec;
818    --
819    l_proc varchar2(72) := '  okc_outcome_pub.'||'update_outcome';
820    --
821 
822   BEGIN
823 
824   IF (l_debug = 'Y') THEN
825      okc_debug.Set_Indentation(l_proc);
826      okc_debug.Log('10: Entering ',2);
827   END IF;
828 
829 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
830 						   g_pkg_name,
831 						   p_init_msg_list,
832 					           l_api_version,
833 						   p_api_version,
834 						   '_PUB',
835                                                    x_return_status);
836 
837     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
838       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
839     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
840       		RAISE OKC_API.G_EXCEPTION_ERROR;
841     	END IF;
842 
843 	-- USER HOOK CALL FOR BEFORE, STARTS
844 	g_ocev_rec := l_ocev_rec;
845 
846     	okc_util.call_user_hook(x_return_status  => x_return_status,
847      				p_package_name   => g_pkg_name,
848      				p_procedure_name => l_api_name,
849      				p_before_after   => 'B');
850 
851     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
852       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
853     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
854       		RAISE OKC_API.G_EXCEPTION_ERROR;
855     	END IF;
856 
857 	--get values back from hook call
858 	l_ocev_rec := migrate_ocev(l_ocev_rec, g_ocev_rec);
859 
860     	-- Call to procedure of complex API
861 	okc_outcome_pvt.update_outcome(p_api_version   => p_api_version,
862     				    p_init_msg_list => p_init_msg_list,
863     				    x_return_status => x_return_status,
864     				    x_msg_count     => x_msg_count,
865     				    x_msg_data      => x_msg_data,
866     				    p_ocev_rec      => l_ocev_rec,
867     				    x_ocev_rec      => x_ocev_rec);
868 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
869       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
870     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
871       		RAISE OKC_API.G_EXCEPTION_ERROR;
872     	END IF;
873 
874   	--USER HOOK CALL FOR AFTER, STARTS
875 	g_ocev_rec := x_ocev_rec;
876 
877     	okc_util.call_user_hook(x_return_status  => x_return_status,
878      				p_package_name   => g_pkg_name,
879      				p_procedure_name => l_api_name,
880      				p_before_after   => 'A');
881 
882     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
883       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
884     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
885       		RAISE OKC_API.G_EXCEPTION_ERROR;
886     	END IF;
887 	--USER HOOK CALL FOR AFTER, ENDS
888 
889     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
890 
891 
892  IF (l_debug = 'Y') THEN
893     okc_debug.Log('1000: Leaving ',2);
894     okc_debug.Reset_Indentation;
895  END IF;
896 
897   EXCEPTION
898     WHEN OKC_API.G_EXCEPTION_ERROR THEN
899       x_return_status := OKC_API.HANDLE_EXCEPTIONS
900       (
901         l_api_name,
902         G_PKG_NAME,
903         'OKC_API.G_RET_STS_ERROR',
904         x_msg_count,
905         x_msg_data,
906         '_PUB'
907       );
908        IF (l_debug = 'Y') THEN
909           okc_debug.Log('2000: Leaving ',2);
910           okc_debug.Reset_Indentation;
911        END IF;
912 
913     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
914       x_return_status := OKC_API.HANDLE_EXCEPTIONS
915       (
916         l_api_name,
917         G_PKG_NAME,
918         'OKC_API.G_RET_STS_UNEXP_ERROR',
919         x_msg_count,
920         x_msg_data,
921         '_PUB'
922       );
923        IF (l_debug = 'Y') THEN
924           okc_debug.Log('3000: Leaving ',2);
925           okc_debug.Reset_Indentation;
926        END IF;
927 
928     WHEN OTHERS THEN
929       x_return_status := OKC_API.HANDLE_EXCEPTIONS
930       (
931         l_api_name,
932         G_PKG_NAME,
933         'OTHERS',
934         x_msg_count,
935         x_msg_data,
936         '_PUB'
937       );
938        IF (l_debug = 'Y') THEN
939           okc_debug.Log('4000: Leaving ',2);
940           okc_debug.Reset_Indentation;
941        END IF;
942   end update_outcome;
943 
944   PROCEDURE update_outcome(p_api_version	    IN NUMBER,
945     			    p_init_msg_list         IN VARCHAR2 ,
946      			    x_return_status         OUT NOCOPY VARCHAR2,
947     			    x_msg_count             OUT NOCOPY NUMBER,
948     			    x_msg_data              OUT NOCOPY VARCHAR2,
949     			    p_ocev_tbl		    IN ocev_tbl_type,
950     			    x_ocev_tbl              OUT NOCOPY ocev_tbl_type) IS
951 
952         l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
953 	i			       NUMBER := 0;
954    --
955    l_proc varchar2(72) := '  okc_outcome_pub.'||'update_outcome';
956    --
957 
958   BEGIN
959 
960   IF (l_debug = 'Y') THEN
961      okc_debug.Set_Indentation(l_proc);
962      okc_debug.Log('10: Entering ',2);
963   END IF;
964 
965     x_return_status := OKC_API.G_RET_STS_SUCCESS;
966     IF p_ocev_tbl.COUNT > 0 THEN
967       i := p_ocev_tbl.FIRST;
968       LOOP
969         update_outcome(
970 	    p_api_version,
971 	    p_init_msg_list,
972 	    l_return_status,
973 	    x_msg_count,
974 	    x_msg_data,
975 	    p_ocev_tbl(i),
976 	    x_ocev_tbl(i));
977         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
978           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
979             x_return_status := l_return_status;
980             raise G_EXCEPTION_HALT_VALIDATION;
981           ELSE
982             x_return_status := l_return_status;
983           END IF;
984         END IF;
985         EXIT WHEN (i = p_ocev_tbl.LAST);
986         i := p_ocev_tbl.NEXT(i);
987       END LOOP;
988     END IF;
989 
990  IF (l_debug = 'Y') THEN
991     okc_debug.Log('1000: Leaving ',2);
992     okc_debug.Reset_Indentation;
993  END IF;
994 
995   EXCEPTION
996     WHEN G_EXCEPTION_HALT_VALIDATION THEN
997       NULL;
998        IF (l_debug = 'Y') THEN
999           okc_debug.Log('2000: Leaving ',2);
1000           okc_debug.Reset_Indentation;
1001        END IF;
1002 
1003     WHEN OTHERS THEN
1004       OKC_API.set_message(p_app_name      => g_app_name,
1005                           p_msg_name      => g_unexpected_error,
1006                           p_token1        => g_sqlcode_token,
1007                           p_token1_value  => sqlcode,
1008                           p_token2        => g_sqlerrm_token,
1009                           p_token2_value  => sqlerrm);
1010       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1011        IF (l_debug = 'Y') THEN
1012           okc_debug.Log('3000: Leaving ',2);
1013           okc_debug.Reset_Indentation;
1014        END IF;
1015   END update_outcome;
1016 
1017   PROCEDURE delete_outcome(p_api_version	    IN NUMBER,
1018     			    p_init_msg_list         IN VARCHAR2 ,
1019     			    x_return_status         OUT NOCOPY VARCHAR2,
1020     			    x_msg_count             OUT NOCOPY NUMBER,
1021     			    x_msg_data              OUT NOCOPY VARCHAR2,
1022     			    p_ocev_rec		    IN ocev_rec_type) IS
1023 
1024 	 l_api_name	 CONSTANT VARCHAR2(30) := 'delete_outcome';
1025 	 l_api_version   CONSTANT NUMBER := 1.0;
1026     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1027 	 l_ocev_rec      ocev_rec_type := p_ocev_rec;
1028    --
1029    l_proc varchar2(72) := '  okc_outcome_pub.'||'delete_outcome';
1030    --
1031 
1032   BEGIN
1033 
1034   IF (l_debug = 'Y') THEN
1035      okc_debug.Set_Indentation(l_proc);
1036      okc_debug.Log('10: Entering ',2);
1037   END IF;
1038 
1039 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1040 						   g_pkg_name,
1041 						   p_init_msg_list,
1042 					           l_api_version,
1043 						   p_api_version,
1044 						   '_PUB',
1045                                                    x_return_status);
1046 
1047     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1048       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1049     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1050       		RAISE OKC_API.G_EXCEPTION_ERROR;
1051     	END IF;
1052 
1053 	-- USER HOOK CALL FOR BEFORE, STARTS
1054     	g_ocev_rec := l_ocev_rec;
1055 
1056     	okc_util.call_user_hook(x_return_status  => x_return_status,
1057      				p_package_name   => g_pkg_name,
1058      				p_procedure_name => l_api_name,
1059      				p_before_after   => 'B');
1060     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1061       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1062     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1063       		RAISE OKC_API.G_EXCEPTION_ERROR;
1064     	END IF;
1065 
1066 	--get values back from hook call
1067 	l_ocev_rec := migrate_ocev(l_ocev_rec, g_ocev_rec);
1068 
1069     	-- Call to procedure of complex API
1070 	okc_outcome_pvt.delete_outcome(p_api_version   => p_api_version,
1071     				    p_init_msg_list => p_init_msg_list,
1072     				    x_return_status => x_return_status,
1073     				    x_msg_count     => x_msg_count,
1074     				    x_msg_data      => x_msg_data,
1075     				    p_ocev_rec      => l_ocev_rec);
1076       	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1077       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1078     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1079       		RAISE OKC_API.G_EXCEPTION_ERROR;
1080     	END IF;
1081 
1082       	--USER HOOK CALL FOR AFTER, STARTS
1083     	okc_util.call_user_hook(x_return_status  => x_return_status,
1084      				p_package_name   => g_pkg_name,
1085      				p_procedure_name => l_api_name,
1086      				p_before_after   => 'A');
1087 
1088     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1089       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1090     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1091       		RAISE OKC_API.G_EXCEPTION_ERROR;
1092     	END IF;
1093 	--USER HOOK CALL FOR AFTER, ENDS
1094 
1095     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1096 
1097 
1098  IF (l_debug = 'Y') THEN
1099     okc_debug.Log('1000: Leaving ',2);
1100     okc_debug.Reset_Indentation;
1101  END IF;
1102 
1103   EXCEPTION
1104     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1105       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1106       (
1107         l_api_name,
1108         G_PKG_NAME,
1109         'OKC_API.G_RET_STS_ERROR',
1110         x_msg_count,
1111         x_msg_data,
1112         '_PUB'
1113       );
1114        IF (l_debug = 'Y') THEN
1115           okc_debug.Log('2000: Leaving ',2);
1116           okc_debug.Reset_Indentation;
1117        END IF;
1118 
1119     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1120       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1121       (
1122         l_api_name,
1123         G_PKG_NAME,
1124         'OKC_API.G_RET_STS_UNEXP_ERROR',
1125         x_msg_count,
1126         x_msg_data,
1127         '_PUB'
1128       );
1129        IF (l_debug = 'Y') THEN
1130           okc_debug.Log('3000: Leaving ',2);
1131           okc_debug.Reset_Indentation;
1132        END IF;
1133 
1134     WHEN OTHERS THEN
1135       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1136       (
1137         l_api_name,
1138         G_PKG_NAME,
1139         'OTHERS',
1140         x_msg_count,
1141         x_msg_data,
1142         '_PUB'
1143       );
1144        IF (l_debug = 'Y') THEN
1145           okc_debug.Log('4000: Leaving ',2);
1146           okc_debug.Reset_Indentation;
1147        END IF;
1148   end delete_outcome;
1149 
1150   PROCEDURE delete_outcome(p_api_version	    IN NUMBER,
1151     			    p_init_msg_list         IN VARCHAR2 ,
1152     			    x_return_status         OUT NOCOPY VARCHAR2,
1153     			    x_msg_count             OUT NOCOPY NUMBER,
1154     			    x_msg_data              OUT NOCOPY VARCHAR2,
1155     			    p_ocev_tbl		    IN ocev_tbl_type) IS
1156 
1157         l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1158 	i			       NUMBER := 0;
1159    --
1160    l_proc varchar2(72) := '  okc_outcome_pub.'||'delete_outcome';
1161    --
1162 
1163   BEGIN
1164 
1165   IF (l_debug = 'Y') THEN
1166      okc_debug.Set_Indentation(l_proc);
1167      okc_debug.Log('10: Entering ',2);
1168   END IF;
1169 
1170     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1171     IF p_ocev_tbl.COUNT > 0 THEN
1172       i := p_ocev_tbl.FIRST;
1173       LOOP
1174         delete_outcome(
1175 	    p_api_version,
1176 	    p_init_msg_list,
1177 	    l_return_status,
1178 	    x_msg_count,
1179 	    x_msg_data,
1180 	    p_ocev_tbl(i));
1181         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1182           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1183             x_return_status := l_return_status;
1184             raise G_EXCEPTION_HALT_VALIDATION;
1185           ELSE
1186             x_return_status := l_return_status;
1187           END IF;
1188         END IF;
1189         EXIT WHEN (i = p_ocev_tbl.LAST);
1190         i := p_ocev_tbl.NEXT(i);
1191       END LOOP;
1192     END IF;
1193 
1194  IF (l_debug = 'Y') THEN
1195     okc_debug.Log('1000: Leaving ',2);
1196     okc_debug.Reset_Indentation;
1197  END IF;
1198 
1199   EXCEPTION
1200     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1201       NULL;
1202        IF (l_debug = 'Y') THEN
1203           okc_debug.Log('2000: Leaving ',2);
1204           okc_debug.Reset_Indentation;
1205        END IF;
1206 
1207     WHEN OTHERS THEN
1208       OKC_API.set_message(p_app_name      => g_app_name,
1209                           p_msg_name      => g_unexpected_error,
1210                           p_token1        => g_sqlcode_token,
1211                           p_token1_value  => sqlcode,
1212                           p_token2        => g_sqlerrm_token,
1213                           p_token2_value  => sqlerrm);
1214       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1215        IF (l_debug = 'Y') THEN
1216           okc_debug.Log('3000: Leaving ',2);
1217           okc_debug.Reset_Indentation;
1218        END IF;
1219   END delete_outcome;
1220 
1221   PROCEDURE validate_outcome(p_api_version	      IN NUMBER,
1222     			      p_init_msg_list         IN VARCHAR2 ,
1223     			      x_return_status         OUT NOCOPY VARCHAR2,
1224     			      x_msg_count             OUT NOCOPY NUMBER,
1225     			      x_msg_data              OUT NOCOPY VARCHAR2,
1226     			      p_ocev_rec	      IN ocev_rec_type) IS
1227 
1228 	 l_api_name	 CONSTANT VARCHAR2(30) := 'validate_outcome';
1229 	 l_api_version   CONSTANT NUMBER := 1.0;
1230     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1231 	 l_ocev_rec      ocev_rec_type := p_ocev_rec;
1232    --
1233    l_proc varchar2(72) := '  okc_outcome_pub.'||'validate_outcome';
1234    --
1235 
1236   BEGIN
1237 
1238   IF (l_debug = 'Y') THEN
1239      okc_debug.Set_Indentation(l_proc);
1240      okc_debug.Log('10: Entering ',2);
1241   END IF;
1242 
1243 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1244 						   g_pkg_name,
1245 						   p_init_msg_list,
1246 					           l_api_version,
1247 						   p_api_version,
1248 						   '_PUB',
1249                                                    x_return_status);
1250 
1251     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1252       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1253     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1254       		RAISE OKC_API.G_EXCEPTION_ERROR;
1255     	END IF;
1256 
1257 	-- USER HOOK CALL FOR BEFORE, STARTS
1258     	g_ocev_rec := l_ocev_rec;
1259 
1260     	okc_util.call_user_hook(x_return_status  => x_return_status,
1261      				p_package_name   => g_pkg_name,
1262      				p_procedure_name => l_api_name,
1263      				p_before_after   => 'B');
1264 
1265     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1266       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1267     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1268       		RAISE OKC_API.G_EXCEPTION_ERROR;
1269     	END IF;
1270 
1271 	--get values back from hook call
1272 	l_ocev_rec := migrate_ocev(l_ocev_rec, g_ocev_rec);
1273 
1274     	-- Call to procedure of complex API
1275 	okc_outcome_pvt.validate_outcome(p_api_version   => p_api_version,
1276     				      p_init_msg_list => p_init_msg_list,
1277     				      x_return_status => x_return_status,
1278     				      x_msg_count     => x_msg_count,
1279     				      x_msg_data      => x_msg_data,
1280     				      p_ocev_rec      => l_ocev_rec);
1281 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1282       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1283     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1284       		RAISE OKC_API.G_EXCEPTION_ERROR;
1285     	END IF;
1286 
1287 	--USER HOOK CALL FOR AFTER, STARTS
1288 
1289     	okc_util.call_user_hook(x_return_status  => x_return_status,
1290      				p_package_name   => g_pkg_name,
1291      				p_procedure_name => l_api_name,
1292      				p_before_after   => 'A');
1293 
1294     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1295       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1296     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1297       		RAISE OKC_API.G_EXCEPTION_ERROR;
1298     	END IF;
1299 	--USER HOOK CALL FOR AFTER, ENDS
1300 
1301     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1302 
1303  IF (l_debug = 'Y') THEN
1304     okc_debug.Log('1000: Leaving ',2);
1305     okc_debug.Reset_Indentation;
1306  END IF;
1307 
1308   EXCEPTION
1309     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1310       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1311       (
1312         l_api_name,
1313         G_PKG_NAME,
1314         'OKC_API.G_RET_STS_ERROR',
1315         x_msg_count,
1316         x_msg_data,
1317         '_PUB'
1318       );
1319        IF (l_debug = 'Y') THEN
1320           okc_debug.Log('2000: Leaving ',2);
1321           okc_debug.Reset_Indentation;
1322        END IF;
1323 
1324     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1325       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1326       (
1327         l_api_name,
1328         G_PKG_NAME,
1329         'OKC_API.G_RET_STS_UNEXP_ERROR',
1330         x_msg_count,
1331         x_msg_data,
1332         '_PUB'
1333       );
1334        IF (l_debug = 'Y') THEN
1335           okc_debug.Log('3000: Leaving ',2);
1336           okc_debug.Reset_Indentation;
1337        END IF;
1338 
1339     WHEN OTHERS THEN
1340       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1341       (
1342         l_api_name,
1343         G_PKG_NAME,
1344         'OTHERS',
1345         x_msg_count,
1346         x_msg_data,
1347         '_PUB'
1348       );
1349        IF (l_debug = 'Y') THEN
1350           okc_debug.Log('4000: Leaving ',2);
1351           okc_debug.Reset_Indentation;
1352        END IF;
1353   END validate_outcome;
1354 
1355   PROCEDURE validate_outcome(p_api_version	      IN NUMBER,
1356     			      p_init_msg_list         IN VARCHAR2 ,
1357     			      x_return_status         OUT NOCOPY VARCHAR2,
1358     			      x_msg_count             OUT NOCOPY NUMBER,
1359     			      x_msg_data              OUT NOCOPY VARCHAR2,
1360     			      p_ocev_tbl	      IN ocev_tbl_type) IS
1361     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1362     i				   NUMBER := 0;
1363    --
1364    l_proc varchar2(72) := '  okc_outcome_pub.'||'validate_outcome';
1365    --
1366 
1367   BEGIN
1368 
1369   IF (l_debug = 'Y') THEN
1370      okc_debug.Set_Indentation(l_proc);
1371      okc_debug.Log('10: Entering ',2);
1372   END IF;
1373 
1374     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1375     IF p_ocev_tbl.COUNT > 0 THEN
1376       i := p_ocev_tbl.FIRST;
1377       LOOP
1378         validate_outcome(
1379 	    p_api_version,
1380 	    p_init_msg_list,
1381 	    l_return_status,
1382 	    x_msg_count,
1383 	    x_msg_data,
1384 	    p_ocev_tbl(i));
1385         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1386           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1387             x_return_status := l_return_status;
1388             raise G_EXCEPTION_HALT_VALIDATION;
1389           ELSE
1390             x_return_status := l_return_status;
1391           END IF;
1392         END IF;
1393         EXIT WHEN (i = p_ocev_tbl.LAST);
1394         i := p_ocev_tbl.NEXT(i);
1395       END LOOP;
1396     END IF;
1397 
1398  IF (l_debug = 'Y') THEN
1399     okc_debug.Log('1000: Leaving ',2);
1400     okc_debug.Reset_Indentation;
1401  END IF;
1402 
1403   EXCEPTION
1404     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1405       NULL;
1406        IF (l_debug = 'Y') THEN
1407           okc_debug.Log('2000: Leaving ',2);
1408           okc_debug.Reset_Indentation;
1409        END IF;
1410 
1411     WHEN OTHERS THEN
1412       OKC_API.set_message(p_app_name      => g_app_name,
1413                           p_msg_name      => g_unexpected_error,
1414                           p_token1        => g_sqlcode_token,
1415                           p_token1_value  => sqlcode,
1416                           p_token2        => g_sqlerrm_token,
1417                           p_token2_value  => sqlerrm);
1418       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1419        IF (l_debug = 'Y') THEN
1420           okc_debug.Log('3000: Leaving ',2);
1421           okc_debug.Reset_Indentation;
1422        END IF;
1423   END validate_outcome;
1424 
1425   --Procedures for Outcome Arguments
1426 
1427   PROCEDURE create_out_arg(p_api_version	    IN  NUMBER,
1428     				  p_init_msg_list   IN  VARCHAR2 ,
1429     				  x_return_status   OUT NOCOPY VARCHAR2,
1430     				  x_msg_count       OUT NOCOPY NUMBER,
1431     				  x_msg_data        OUT NOCOPY VARCHAR2,
1432     				  p_oatv_rec        IN  oatv_rec_type,
1433     				  x_oatv_rec        OUT NOCOPY oatv_rec_type) IS
1434 
1435 	 l_api_name	 CONSTANT VARCHAR2(30) := 'create_out_arg';
1436 	 l_api_version   CONSTANT NUMBER := 1.0;
1437     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1438 	 l_oatv_rec      oatv_rec_type := p_oatv_rec;
1439    --
1440    l_proc varchar2(72) := '  okc_outcome_pub.'||'create_out_arg';
1441    --
1442 
1443   BEGIN
1444 
1445   IF (l_debug = 'Y') THEN
1446      okc_debug.Set_Indentation(l_proc);
1447      okc_debug.Log('10: Entering ',2);
1448   END IF;
1449 
1450 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1451 						   g_pkg_name,
1452 						   p_init_msg_list,
1453 					           l_api_version,
1454 						   p_api_version,
1455 						   '_PUB',
1456                                                    x_return_status);
1457 
1458     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1459       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1460     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1461       		RAISE OKC_API.G_EXCEPTION_ERROR;
1462     	END IF;
1463 
1464 	-- USER HOOK CALL FOR BEFORE, STARTS
1465     	g_oatv_rec := l_oatv_rec;
1466 
1467     	okc_util.call_user_hook(x_return_status  => x_return_status,
1468      				p_package_name   => g_pkg_name,
1469      				p_procedure_name => l_api_name,
1470      				p_before_after   => 'B');
1471 
1472     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1473       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1474     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1475       		RAISE OKC_API.G_EXCEPTION_ERROR;
1476     	END IF;
1477 
1478 	--get values back from hook call
1479 	l_oatv_rec := migrate_oatv(l_oatv_rec, g_oatv_rec);
1480 
1481     	-- Call to procedure of complex API
1482 	okc_outcome_pvt.create_out_arg(p_api_version   => p_api_version,
1483     			   		  p_init_msg_list => p_init_msg_list,
1484     				    	  x_return_status => x_return_status,
1485     				    	  x_msg_count     => x_msg_count,
1486     				    	  x_msg_data      => x_msg_data,
1487     				    	  p_oatv_rec      => l_oatv_rec,
1488     				    	  x_oatv_rec      => x_oatv_rec);
1489 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1490       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1491     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1492       		RAISE OKC_API.G_EXCEPTION_ERROR;
1493     	END IF;
1494 
1495 	--USER HOOK CALL FOR AFTER, STARTS
1496 	g_oatv_rec := x_oatv_rec;
1497 
1498     	okc_util.call_user_hook(x_return_status  => x_return_status,
1499      				p_package_name   => g_pkg_name,
1500      				p_procedure_name => l_api_name,
1501      				p_before_after   => 'A');
1502 
1503     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1504       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1505     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1506       		RAISE OKC_API.G_EXCEPTION_ERROR;
1507     	END IF;
1508 	--USER HOOK CALL FOR AFTER, ENDS
1509 
1510     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1511 
1512 
1513  IF (l_debug = 'Y') THEN
1514     okc_debug.Log('1000: Leaving ',2);
1515     okc_debug.Reset_Indentation;
1516  END IF;
1517 
1518   EXCEPTION
1519     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1520       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1521       (
1522         l_api_name,
1523         G_PKG_NAME,
1524         'OKC_API.G_RET_STS_ERROR',
1525         x_msg_count,
1526         x_msg_data,
1527         '_PUB'
1528       );
1529        IF (l_debug = 'Y') THEN
1530           okc_debug.Log('2000: Leaving ',2);
1531           okc_debug.Reset_Indentation;
1532        END IF;
1533 
1534     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1535       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1536       (
1537         l_api_name,
1538         G_PKG_NAME,
1539         'OKC_API.G_RET_STS_UNEXP_ERROR',
1540         x_msg_count,
1541         x_msg_data,
1542         '_PUB'
1543       );
1544        IF (l_debug = 'Y') THEN
1545           okc_debug.Log('3000: Leaving ',2);
1546           okc_debug.Reset_Indentation;
1547        END IF;
1548 
1549     WHEN OTHERS THEN
1550       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1551       (
1552         l_api_name,
1553         G_PKG_NAME,
1554         'OTHERS',
1555         x_msg_count,
1556         x_msg_data,
1557         '_PUB'
1558       );
1559        IF (l_debug = 'Y') THEN
1560           okc_debug.Log('4000: Leaving ',2);
1561           okc_debug.Reset_Indentation;
1562        END IF;
1563   end create_out_arg;
1564 
1565   PROCEDURE create_out_arg(p_api_version	    IN  NUMBER,
1566     				  p_init_msg_list   IN  VARCHAR2 ,
1567     				  x_return_status   OUT NOCOPY VARCHAR2,
1568     				  x_msg_count       OUT NOCOPY NUMBER,
1569     				  x_msg_data        OUT NOCOPY VARCHAR2,
1570     				  p_oatv_tbl	    IN  oatv_tbl_type,
1571     				  x_oatv_tbl        OUT NOCOPY oatv_tbl_type) IS
1572 
1573 	l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1574 	i		 NUMBER := 0;
1575    --
1576    l_proc varchar2(72) := '  okc_outcome_pub.'||'create_out_arg';
1577    --
1578 
1579   BEGIN
1580 
1581   IF (l_debug = 'Y') THEN
1582      okc_debug.Set_Indentation(l_proc);
1583      okc_debug.Log('10: Entering ',2);
1584   END IF;
1585 
1586     --Initialize the return status
1587 	x_return_status := OKC_API.G_RET_STS_SUCCESS;
1588 
1589     IF p_oatv_tbl.COUNT > 0 THEN
1590       i := p_oatv_tbl.FIRST;
1591       LOOP
1592         create_out_arg(
1593 	    p_api_version,
1594 	    p_init_msg_list,
1595 	    l_return_status,
1596 	    x_msg_count,
1597 	    x_msg_data,
1598 	    p_oatv_tbl(i),
1599 	    x_oatv_tbl(i));
1600         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1601           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1602             x_return_status := l_return_status;
1603             raise G_EXCEPTION_HALT_VALIDATION;
1604           ELSE
1605             x_return_status := l_return_status;
1606           END IF;
1607         END IF;
1608         EXIT WHEN (i = p_oatv_tbl.LAST);
1609         i := p_oatv_tbl.NEXT(i);
1610       END LOOP;
1611     END IF;
1612 
1613  IF (l_debug = 'Y') THEN
1614     okc_debug.Log('1000: Leaving ',2);
1615     okc_debug.Reset_Indentation;
1616  END IF;
1617 
1618   EXCEPTION
1619     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1620       NULL;
1621        IF (l_debug = 'Y') THEN
1622           okc_debug.Log('2000: Leaving ',2);
1623           okc_debug.Reset_Indentation;
1624        END IF;
1625 
1626     WHEN OTHERS THEN
1627       OKC_API.set_message(p_app_name      => g_app_name,
1628                           p_msg_name      => g_unexpected_error,
1629                           p_token1        => g_sqlcode_token,
1630                           p_token1_value  => sqlcode,
1631                           p_token2        => g_sqlerrm_token,
1632                           p_token2_value  => sqlerrm);
1633       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1634        IF (l_debug = 'Y') THEN
1635           okc_debug.Log('3000: Leaving ',2);
1636           okc_debug.Reset_Indentation;
1637        END IF;
1638   END create_out_arg;
1639 
1640   PROCEDURE lock_out_arg(p_api_version	    IN  NUMBER,
1641     				p_init_msg_list     IN  VARCHAR2 ,
1642     				x_return_status     OUT NOCOPY VARCHAR2,
1643     				x_msg_count         OUT NOCOPY NUMBER,
1644     				x_msg_data          OUT NOCOPY VARCHAR2,
1645     				p_oatv_rec	    IN  oatv_rec_type) IS
1646   	 l_api_name	 CONSTANT VARCHAR2(30) := 'lock_out_arg';
1647 	 l_api_version   CONSTANT NUMBER := 1.0;
1648     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1649 	 l_oatv_rec      oatv_rec_type := p_oatv_rec;
1650    --
1651    l_proc varchar2(72) := '  okc_outcome_pub.'||'lock_out_arg';
1652    --
1653 
1654   BEGIN
1655 
1656   IF (l_debug = 'Y') THEN
1657      okc_debug.Set_Indentation(l_proc);
1658      okc_debug.Log('10: Entering ',2);
1659   END IF;
1660 
1661 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1662 						   g_pkg_name,
1663 						   p_init_msg_list,
1664 					           l_api_version,
1665 						   p_api_version,
1666 						   '_PUB',
1667                                                    x_return_status);
1668 
1669     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1670       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1671     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1672       		RAISE OKC_API.G_EXCEPTION_ERROR;
1673     	END IF;
1674 
1675     	-- Call to procedure of complex API
1676 	okc_outcome_pvt.lock_out_arg(p_api_version   => p_api_version,
1677     			   		  p_init_msg_list => p_init_msg_list,
1678     				    	  x_return_status => x_return_status,
1679     				    	  x_msg_count     => x_msg_count,
1680     				    	  x_msg_data      => x_msg_data,
1681     				    	  p_oatv_rec      => l_oatv_rec);
1682 
1683 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1684       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1685     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1686       		RAISE OKC_API.G_EXCEPTION_ERROR;
1687     	END IF;
1688 
1689     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1690 
1691 
1692  IF (l_debug = 'Y') THEN
1693     okc_debug.Log('1000: Leaving ',2);
1694     okc_debug.Reset_Indentation;
1695  END IF;
1696 
1697   EXCEPTION
1698     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1699       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1700       (
1701         l_api_name,
1702         G_PKG_NAME,
1703         'OKC_API.G_RET_STS_ERROR',
1704         x_msg_count,
1705         x_msg_data,
1706         '_PUB'
1707       );
1708        IF (l_debug = 'Y') THEN
1709           okc_debug.Log('2000: Leaving ',2);
1710           okc_debug.Reset_Indentation;
1711        END IF;
1712 
1713     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1714       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1715       (
1716         l_api_name,
1717         G_PKG_NAME,
1718         'OKC_API.G_RET_STS_UNEXP_ERROR',
1719         x_msg_count,
1720         x_msg_data,
1721         '_PUB'
1722       );
1723        IF (l_debug = 'Y') THEN
1724           okc_debug.Log('3000: Leaving ',2);
1725           okc_debug.Reset_Indentation;
1726        END IF;
1727 
1728     WHEN OTHERS THEN
1729       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1730       (
1731         l_api_name,
1732         G_PKG_NAME,
1733         'OTHERS',
1734         x_msg_count,
1735         x_msg_data,
1736         '_PUB'
1737       );
1738        IF (l_debug = 'Y') THEN
1739           okc_debug.Log('4000: Leaving ',2);
1740           okc_debug.Reset_Indentation;
1741        END IF;
1742   end lock_out_arg;
1743 
1744   PROCEDURE lock_out_arg(p_api_version	    IN  NUMBER,
1745     				p_init_msg_list     IN  VARCHAR2 ,
1746     				x_return_status     OUT NOCOPY VARCHAR2,
1747     				x_msg_count         OUT NOCOPY NUMBER,
1748     				x_msg_data          OUT NOCOPY VARCHAR2,
1749     				p_oatv_tbl	    IN  oatv_tbl_type) IS
1750         l_return_status         VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1751 	i			NUMBER := 0;
1752    --
1753    l_proc varchar2(72) := '  okc_outcome_pub.'||'lock_out_arg';
1754    --
1755 
1756   BEGIN
1757 
1758   IF (l_debug = 'Y') THEN
1759      okc_debug.Set_Indentation(l_proc);
1760      okc_debug.Log('10: Entering ',2);
1761   END IF;
1762 
1763     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1764     IF p_oatv_tbl.COUNT > 0 THEN
1765       i := p_oatv_tbl.FIRST;
1766       LOOP
1767         lock_out_arg(
1768 	    p_api_version,
1769 	    p_init_msg_list,
1770 	    l_return_status,
1771 	    x_msg_count,
1772 	    x_msg_data,
1773 	    p_oatv_tbl(i));
1774         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1775           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1776             x_return_status := l_return_status;
1777             raise G_EXCEPTION_HALT_VALIDATION;
1778           ELSE
1779             x_return_status := l_return_status;
1780           END IF;
1781         END IF;
1782         EXIT WHEN (i = p_oatv_tbl.LAST);
1783         i := p_oatv_tbl.NEXT(i);
1784       END LOOP;
1785     END IF;
1786 
1787  IF (l_debug = 'Y') THEN
1788     okc_debug.Log('1000: Leaving ',2);
1789     okc_debug.Reset_Indentation;
1790  END IF;
1791 
1792   EXCEPTION
1793     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1794       NULL;
1795        IF (l_debug = 'Y') THEN
1796           okc_debug.Log('2000: Leaving ',2);
1797           okc_debug.Reset_Indentation;
1798        END IF;
1799 
1800     WHEN OTHERS THEN
1801       OKC_API.set_message(p_app_name      => g_app_name,
1802                           p_msg_name      => g_unexpected_error,
1803                           p_token1        => g_sqlcode_token,
1804                           p_token1_value  => sqlcode,
1805                           p_token2        => g_sqlerrm_token,
1806                           p_token2_value  => sqlerrm);
1807       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1808        IF (l_debug = 'Y') THEN
1809           okc_debug.Log('3000: Leaving ',2);
1810           okc_debug.Reset_Indentation;
1811        END IF;
1812   End lock_out_arg;
1813 
1814   PROCEDURE update_out_arg(p_api_version	    IN NUMBER,
1815     				  p_init_msg_list   IN VARCHAR2 ,
1816     				  x_return_status   OUT NOCOPY VARCHAR2,
1817     				  x_msg_count       OUT NOCOPY NUMBER,
1818     				  x_msg_data        OUT NOCOPY VARCHAR2,
1819     				  p_oatv_rec        IN oatv_rec_type,
1820     				  x_oatv_rec        OUT NOCOPY oatv_rec_type) IS
1821 
1822 	 l_api_name	 CONSTANT VARCHAR2(30) := 'update_out_arg';
1823 	 l_api_version   CONSTANT NUMBER := 1.0;
1824     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1825 	 l_oatv_rec      oatv_rec_type := p_oatv_rec;
1826    --
1827    l_proc varchar2(72) := '  okc_outcome_pub.'||'update_out_arg';
1828    --
1829 
1830   BEGIN
1831 
1832   IF (l_debug = 'Y') THEN
1833      okc_debug.Set_Indentation(l_proc);
1834      okc_debug.Log('10: Entering ',2);
1835   END IF;
1836 
1837 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1838 						   g_pkg_name,
1839 						   p_init_msg_list,
1840 					           l_api_version,
1841 						   p_api_version,
1842 						   '_PUB',
1843                                                    x_return_status);
1844     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1845       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1846     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1847       		RAISE OKC_API.G_EXCEPTION_ERROR;
1848     	END IF;
1849 
1850 	-- USER HOOK CALL FOR BEFORE, STARTS
1851     	g_oatv_rec := l_oatv_rec;
1852 
1853     	okc_util.call_user_hook(x_return_status  => x_return_status,
1854      				p_package_name   => g_pkg_name,
1855      				p_procedure_name => l_api_name,
1856 				p_before_after   => 'B');
1857     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1858       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1859     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1860       		RAISE OKC_API.G_EXCEPTION_ERROR;
1861     	END IF;
1862 
1863 	--get values back from hook call
1864 	l_oatv_rec := migrate_oatv(l_oatv_rec, g_oatv_rec);
1865 
1866     	-- Call to procedure of complex API
1867 	okc_outcome_pvt.update_out_arg(p_api_version   => p_api_version,
1868     			   		  p_init_msg_list => p_init_msg_list,
1869     				    	  x_return_status => x_return_status,
1870     				    	  x_msg_count     => x_msg_count,
1871     				    	  x_msg_data      => x_msg_data,
1872     				    	  p_oatv_rec      => l_oatv_rec,
1873     				    	  x_oatv_rec      => x_oatv_rec);
1874 
1875 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1876       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1877     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1878       		RAISE OKC_API.G_EXCEPTION_ERROR;
1879     	END IF;
1880 
1881 	--USER HOOK CALL FOR AFTER, STARTS
1882 	g_oatv_rec := x_oatv_rec;
1883 
1884     	okc_util.call_user_hook(x_return_status  => x_return_status,
1885      				p_package_name   => g_pkg_name,
1886      				p_procedure_name => l_api_name,
1887      				p_before_after   => 'A');
1888     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1889       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1890     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1891       		RAISE OKC_API.G_EXCEPTION_ERROR;
1892     	END IF;
1893 	--USER HOOK CALL FOR AFTER, ENDS
1894 
1895     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1896 
1897 
1898  IF (l_debug = 'Y') THEN
1899     okc_debug.Log('1000: Leaving ',2);
1900     okc_debug.Reset_Indentation;
1901  END IF;
1902 
1903   EXCEPTION
1904     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1905       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1906       (
1907         l_api_name,
1908         G_PKG_NAME,
1909         'OKC_API.G_RET_STS_ERROR',
1910         x_msg_count,
1911         x_msg_data,
1912         '_PUB'
1913       );
1914        IF (l_debug = 'Y') THEN
1915           okc_debug.Log('2000: Leaving ',2);
1916           okc_debug.Reset_Indentation;
1917        END IF;
1918 
1919     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1920       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1921       (
1922         l_api_name,
1923         G_PKG_NAME,
1924         'OKC_API.G_RET_STS_UNEXP_ERROR',
1925         x_msg_count,
1926         x_msg_data,
1927         '_PUB'
1928       );
1929        IF (l_debug = 'Y') THEN
1930           okc_debug.Log('3000: Leaving ',2);
1931           okc_debug.Reset_Indentation;
1932        END IF;
1933 
1934     WHEN OTHERS THEN
1935       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1936       (
1937         l_api_name,
1938         G_PKG_NAME,
1939         'OTHERS',
1940         x_msg_count,
1941         x_msg_data,
1942         '_PUB'
1943       );
1944        IF (l_debug = 'Y') THEN
1945           okc_debug.Log('4000: Leaving ',2);
1946           okc_debug.Reset_Indentation;
1947        END IF;
1948   END update_out_arg;
1949 
1950   PROCEDURE update_out_arg(p_api_version	    IN  NUMBER,
1951     				  p_init_msg_list   IN  VARCHAR2 ,
1952     				  x_return_status   OUT NOCOPY VARCHAR2,
1953     				  x_msg_count       OUT NOCOPY NUMBER,
1954     				  x_msg_data        OUT NOCOPY VARCHAR2,
1955     				  p_oatv_tbl	    IN  oatv_tbl_type,
1956     				  x_oatv_tbl        OUT NOCOPY oatv_tbl_type) IS
1957 
1958 	l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1959 	i		 NUMBER := 0;
1960    --
1961    l_proc varchar2(72) := '  okc_outcome_pub.'||'update_out_arg';
1962    --
1963 
1964   BEGIN
1965 
1966   IF (l_debug = 'Y') THEN
1967      okc_debug.Set_Indentation(l_proc);
1968      okc_debug.Log('10: Entering ',2);
1969   END IF;
1970 
1971     --Initialize the return status
1972 	x_return_status := OKC_API.G_RET_STS_SUCCESS;
1973 
1974     IF p_oatv_tbl.COUNT > 0 THEN
1975       i := p_oatv_tbl.FIRST;
1976       LOOP
1977         update_out_arg(
1978 	    p_api_version,
1979 	    p_init_msg_list,
1980 	    l_return_status,
1981 	    x_msg_count,
1982 	    x_msg_data,
1983 	    p_oatv_tbl(i),
1984 	    x_oatv_tbl(i));
1985         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1986           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1987             x_return_status := l_return_status;
1988             raise G_EXCEPTION_HALT_VALIDATION;
1989           ELSE
1990             x_return_status := l_return_status;
1991           END IF;
1992         END IF;
1993         EXIT WHEN (i = p_oatv_tbl.LAST);
1994         i := p_oatv_tbl.NEXT(i);
1995       END LOOP;
1996     END IF;
1997 
1998  IF (l_debug = 'Y') THEN
1999     okc_debug.Log('1000: Leaving ',2);
2000     okc_debug.Reset_Indentation;
2001  END IF;
2002 
2003   EXCEPTION
2004     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2005       NULL;
2006        IF (l_debug = 'Y') THEN
2007           okc_debug.Log('2000: Leaving ',2);
2008           okc_debug.Reset_Indentation;
2009        END IF;
2010 
2011     WHEN OTHERS THEN
2012       OKC_API.set_message(p_app_name      => g_app_name,
2013                           p_msg_name      => g_unexpected_error,
2014                           p_token1        => g_sqlcode_token,
2015                           p_token1_value  => sqlcode,
2016                           p_token2        => g_sqlerrm_token,
2017                           p_token2_value  => sqlerrm);
2018       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2019        IF (l_debug = 'Y') THEN
2020           okc_debug.Log('3000: Leaving ',2);
2021           okc_debug.Reset_Indentation;
2022        END IF;
2023   END update_out_arg;
2024 
2025   PROCEDURE delete_out_arg(p_api_version	    IN  NUMBER,
2026     				  p_init_msg_list   IN  VARCHAR2 ,
2027     				  x_return_status   OUT NOCOPY VARCHAR2,
2028     				  x_msg_count       OUT NOCOPY NUMBER,
2029     				  x_msg_data        OUT NOCOPY VARCHAR2,
2030     				  p_oatv_rec	    IN  oatv_rec_type) IS
2031 
2032 	 l_api_name	 CONSTANT VARCHAR2(30) := 'delete_out_arg';
2033 	 l_api_version   CONSTANT NUMBER := 1.0;
2034     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2035 	 l_oatv_rec      oatv_rec_type := p_oatv_rec;
2036    --
2037    l_proc varchar2(72) := '  okc_outcome_pub.'||'delete_out_arg';
2038    --
2039 
2040   BEGIN
2041 
2042   IF (l_debug = 'Y') THEN
2043      okc_debug.Set_Indentation(l_proc);
2044      okc_debug.Log('10: Entering ',2);
2045   END IF;
2046 
2047 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2048 						   g_pkg_name,
2049 						   p_init_msg_list,
2050 					           l_api_version,
2051 						   p_api_version,
2052 						   '_PUB',
2053                                                    x_return_status);
2054 
2055     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2056       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2057     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2058       		RAISE OKC_API.G_EXCEPTION_ERROR;
2059     	END IF;
2060 
2061 	-- USER HOOK CALL FOR BEFORE, STARTS
2062     	g_oatv_rec := l_oatv_rec;
2063 
2064     	okc_util.call_user_hook(x_return_status  => x_return_status,
2065      				p_package_name   => g_pkg_name,
2066      				p_procedure_name => l_api_name,
2067      				p_before_after   => 'B');
2068     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2069       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2070     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2071       		RAISE OKC_API.G_EXCEPTION_ERROR;
2072     	END IF;
2073 
2074 	--get values back from hook call
2075 	l_oatv_rec := migrate_oatv(l_oatv_rec, g_oatv_rec);
2076 
2077     	-- Call to procedure of complex API
2078 	okc_outcome_pvt.delete_out_arg(p_api_version   => p_api_version,
2079     			   		  p_init_msg_list => p_init_msg_list,
2080     				    	  x_return_status => x_return_status,
2081     				    	  x_msg_count     => x_msg_count,
2082     				    	  x_msg_data      => x_msg_data,
2083     				    	  p_oatv_rec      => l_oatv_rec);
2084 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2085       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2086     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2087       		RAISE OKC_API.G_EXCEPTION_ERROR;
2088     	END IF;
2089 
2090         --USER HOOK CALL FOR AFTER, STARTS
2091     	okc_util.call_user_hook(x_return_status  => x_return_status,
2092      				p_package_name   => g_pkg_name,
2093      				p_procedure_name => l_api_name,
2094      				p_before_after   => 'A');
2095 
2096     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2097       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2098     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2099       		RAISE OKC_API.G_EXCEPTION_ERROR;
2100     	END IF;
2101 	--USER HOOK CALL FOR AFTER, ENDS
2102 
2103     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2104 
2105  IF (l_debug = 'Y') THEN
2106     okc_debug.Log('1000: Leaving ',2);
2107     okc_debug.Reset_Indentation;
2108  END IF;
2109 
2110   EXCEPTION
2111     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2112       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2113       (
2114         l_api_name,
2115         G_PKG_NAME,
2116         'OKC_API.G_RET_STS_ERROR',
2117         x_msg_count,
2118         x_msg_data,
2119         '_PUB'
2120       );
2121        IF (l_debug = 'Y') THEN
2122           okc_debug.Log('2000: Leaving ',2);
2123           okc_debug.Reset_Indentation;
2124        END IF;
2125 
2126     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2127       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2128       (
2129         l_api_name,
2130         G_PKG_NAME,
2131         'OKC_API.G_RET_STS_UNEXP_ERROR',
2132         x_msg_count,
2133         x_msg_data,
2134         '_PUB'
2135       );
2136        IF (l_debug = 'Y') THEN
2137           okc_debug.Log('3000: Leaving ',2);
2138           okc_debug.Reset_Indentation;
2139        END IF;
2140 
2141     WHEN OTHERS THEN
2142       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2143       (
2144         l_api_name,
2145         G_PKG_NAME,
2146         'OTHERS',
2147         x_msg_count,
2148         x_msg_data,
2149         '_PUB'
2150       );
2151        IF (l_debug = 'Y') THEN
2152           okc_debug.Log('4000: Leaving ',2);
2153           okc_debug.Reset_Indentation;
2154        END IF;
2155   END delete_out_arg;
2156 
2157   PROCEDURE delete_out_arg(p_api_version	    IN  NUMBER,
2158     				  p_init_msg_list   IN  VARCHAR2 ,
2159     				  x_return_status   OUT NOCOPY VARCHAR2,
2160     				  x_msg_count       OUT NOCOPY NUMBER,
2161      				  x_msg_data        OUT NOCOPY VARCHAR2,
2162     				  p_oatv_tbl	    IN  oatv_tbl_type) IS
2163 
2164 	l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2165 	i		 NUMBER := 0;
2166    --
2167    l_proc varchar2(72) := '  okc_outcome_pub.'||'delete_out_arg';
2168    --
2169 
2170   BEGIN
2171 
2172   IF (l_debug = 'Y') THEN
2173      okc_debug.Set_Indentation(l_proc);
2174      okc_debug.Log('10: Entering ',2);
2175   END IF;
2176 
2177     --Initialize the return status
2178 	x_return_status := OKC_API.G_RET_STS_SUCCESS;
2179 
2180     IF p_oatv_tbl.COUNT > 0 THEN
2181        i := p_oatv_tbl.FIRST;
2182       LOOP
2183         delete_out_arg(
2184 	    p_api_version,
2185 	    p_init_msg_list,
2186 	    x_return_status,
2187 	    x_msg_count,
2188 	    x_msg_data,
2189 	    p_oatv_tbl(i));
2190         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2191       		IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN  -- need to leave
2192         		l_return_status := x_return_status;
2193         		RAISE G_EXCEPTION_HALT_VALIDATION;
2194 	      	ELSE
2195         		l_return_status := x_return_status;   -- record that there was an error
2196       		END IF;
2197 	END IF;
2198         EXIT WHEN (i = p_oatv_tbl.LAST);
2199         i := p_oatv_tbl.NEXT(i);
2200       END LOOP;
2201     END IF;
2202 
2203  IF (l_debug = 'Y') THEN
2204     okc_debug.Log('1000: Leaving ',2);
2205     okc_debug.Reset_Indentation;
2206  END IF;
2207 
2208   EXCEPTION
2209     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2210       NULL;
2211        IF (l_debug = 'Y') THEN
2212           okc_debug.Log('2000: Leaving ',2);
2213           okc_debug.Reset_Indentation;
2214        END IF;
2215 
2216     WHEN OTHERS THEN
2217       OKC_API.set_message(p_app_name      => g_app_name,
2218                           p_msg_name      => g_unexpected_error,
2219                           p_token1        => g_sqlcode_token,
2220                           p_token1_value  => sqlcode,
2221                           p_token2        => g_sqlerrm_token,
2222                           p_token2_value  => sqlerrm);
2223       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2224        IF (l_debug = 'Y') THEN
2225           okc_debug.Log('3000: Leaving ',2);
2226           okc_debug.Reset_Indentation;
2227        END IF;
2228   END delete_out_arg;
2229 
2230   PROCEDURE validate_out_arg(p_api_version	IN  NUMBER,
2231     				    p_init_msg_list     IN  VARCHAR2 ,
2232     				    x_return_status     OUT NOCOPY VARCHAR2,
2233     				    x_msg_count         OUT NOCOPY NUMBER,
2234     				    x_msg_data          OUT NOCOPY VARCHAR2,
2235    				    p_oatv_rec		IN  oatv_rec_type) IS
2236 
2237 	 l_api_name	 CONSTANT VARCHAR2(30) := 'validate_out_arg';
2238 	 l_api_version   CONSTANT NUMBER := 1.0;
2239     	 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2240 	 l_oatv_rec      oatv_rec_type := p_oatv_rec;
2241    --
2242    l_proc varchar2(72) := '  okc_outcome_pub.'||'validate_out_arg';
2243    --
2244 
2245   BEGIN
2246 
2247   IF (l_debug = 'Y') THEN
2248      okc_debug.Set_Indentation(l_proc);
2249      okc_debug.Log('10: Entering ',2);
2250   END IF;
2251 
2252 	 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2253 						   g_pkg_name,
2254 						   p_init_msg_list,
2255 					           l_api_version,
2256 						   p_api_version,
2257 						   '_PUB',
2258                                                    x_return_status);
2259 
2260     	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2261       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2262     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2263       		RAISE OKC_API.G_EXCEPTION_ERROR;
2264     	END IF;
2265 
2266 	-- USER HOOK CALL FOR BEFORE, STARTS
2267     	g_oatv_rec := l_oatv_rec;
2268 
2269     	okc_util.call_user_hook(x_return_status  => x_return_status,
2270      				p_package_name   => g_pkg_name,
2271      				p_procedure_name => l_api_name,
2272      				p_before_after   => 'B');
2273     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2274       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2275     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2276       		RAISE OKC_API.G_EXCEPTION_ERROR;
2277     	END IF;
2278 
2279 	--get values back from hook call
2280 	l_oatv_rec := migrate_oatv(l_oatv_rec, g_oatv_rec);
2281 
2282     	-- Call to procedure of complex API
2283 	okc_outcome_pvt.validate_out_arg(p_api_version   => p_api_version,
2284     			   		    p_init_msg_list => p_init_msg_list,
2285     				    	    x_return_status => x_return_status,
2286     				    	    x_msg_count     => x_msg_count,
2287     				    	    x_msg_data      => x_msg_data,
2288     				    	    p_oatv_rec      => l_oatv_rec);
2289 
2290 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2291       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2292     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2293       		RAISE OKC_API.G_EXCEPTION_ERROR;
2294     	END IF;
2295 
2296 	--USER HOOK CALL FOR AFTER, STARTS
2297     	okc_util.call_user_hook(x_return_status  => x_return_status,
2298      				p_package_name   => g_pkg_name,
2299      				p_procedure_name => l_api_name,
2300      				p_before_after   => 'A');
2301     	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2302       		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2303     	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2304       		RAISE OKC_API.G_EXCEPTION_ERROR;
2305     	END IF;
2306 	--USER HOOK CALL FOR AFTER, ENDS
2307 
2308     	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2309 
2310 
2311  IF (l_debug = 'Y') THEN
2312     okc_debug.Log('1000: Leaving ',2);
2313     okc_debug.Reset_Indentation;
2314  END IF;
2315 
2316   EXCEPTION
2317     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2318       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2319       (
2320         l_api_name,
2321         G_PKG_NAME,
2322         'OKC_API.G_RET_STS_ERROR',
2323         x_msg_count,
2324         x_msg_data,
2325         '_PUB'
2326       );
2327        IF (l_debug = 'Y') THEN
2328           okc_debug.Log('2000: Leaving ',2);
2329           okc_debug.Reset_Indentation;
2330        END IF;
2331 
2332     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2333       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2334       (
2335         l_api_name,
2336         G_PKG_NAME,
2337         'OKC_API.G_RET_STS_UNEXP_ERROR',
2338         x_msg_count,
2339         x_msg_data,
2340         '_PUB'
2341       );
2342        IF (l_debug = 'Y') THEN
2343           okc_debug.Log('3000: Leaving ',2);
2344           okc_debug.Reset_Indentation;
2345        END IF;
2346 
2347     WHEN OTHERS THEN
2348       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2349       (
2350         l_api_name,
2351         G_PKG_NAME,
2352         'OTHERS',
2353         x_msg_count,
2354         x_msg_data,
2355         '_PUB'
2356       );
2357        IF (l_debug = 'Y') THEN
2358           okc_debug.Log('4000: Leaving ',2);
2359           okc_debug.Reset_Indentation;
2360        END IF;
2361   END validate_out_arg;
2362 
2363   PROCEDURE validate_out_arg(p_api_version	IN NUMBER,
2364     				    p_init_msg_list     IN VARCHAR2 ,
2365     				    x_return_status     OUT NOCOPY VARCHAR2,
2366     				    x_msg_count         OUT NOCOPY NUMBER,
2367     				    x_msg_data          OUT NOCOPY VARCHAR2,
2368     				    p_oatv_tbl		IN oatv_tbl_type) IS
2369 
2370 	l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2371 	i		 NUMBER := 0;
2372    --
2373    l_proc varchar2(72) := '  okc_outcome_pub.'||'validate_out_arg';
2374    --
2375 
2376   BEGIN
2377 
2378   IF (l_debug = 'Y') THEN
2379      okc_debug.Set_Indentation(l_proc);
2380      okc_debug.Log('10: Entering ',2);
2381   END IF;
2382 
2383     --Initialize the return status
2384 	x_return_status := OKC_API.G_RET_STS_SUCCESS;
2385 
2386     IF p_oatv_tbl.COUNT > 0 THEN
2387       i := p_oatv_tbl.FIRST;
2388       LOOP
2389         validate_out_arg(
2390 	    p_api_version,
2391 	    p_init_msg_list,
2392 	    l_return_status,
2393 	    x_msg_count,
2394 	    x_msg_data,
2395 	    p_oatv_tbl(i));
2396         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2397           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2398             x_return_status := l_return_status;
2399             raise G_EXCEPTION_HALT_VALIDATION;
2400           ELSE
2401             x_return_status := l_return_status;
2402           END IF;
2403         END IF;
2404         EXIT WHEN (i = p_oatv_tbl.LAST);
2405         i := p_oatv_tbl.NEXT(i);
2406       END LOOP;
2407     END IF;
2408 
2409  IF (l_debug = 'Y') THEN
2410     okc_debug.Log('1000: Leaving ',2);
2411     okc_debug.Reset_Indentation;
2412  END IF;
2413 
2414   EXCEPTION
2415     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2416       NULL;
2417        IF (l_debug = 'Y') THEN
2418           okc_debug.Log('2000: Leaving ',2);
2419           okc_debug.Reset_Indentation;
2420        END IF;
2421 
2422     WHEN OTHERS THEN
2423       OKC_API.set_message(p_app_name      => g_app_name,
2424                           p_msg_name      => g_unexpected_error,
2425                           p_token1        => g_sqlcode_token,
2426                           p_token1_value  => sqlcode,
2427                           p_token2        => g_sqlerrm_token,
2428                           p_token2_value  => sqlerrm);
2429       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2430        IF (l_debug = 'Y') THEN
2431           okc_debug.Log('3000: Leaving ',2);
2432           okc_debug.Reset_Indentation;
2433        END IF;
2434   END validate_out_arg;
2435 
2436 END okc_outcome_pub;