DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_TIME_PUB

Source


1 PACKAGE BODY OKC_TIME_PUB AS
2 /* $Header: OKCPTVEB.pls 120.0 2005/05/25 18:46:39 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5  --------------------------------------------------------------------------
6 ---The following procedures cater to handling of OKC_TIME_TPA_RELTV
7  --------------------------------------------------------------------------
8 
9   PROCEDURE ADD_LANGUAGE IS
10   BEGIN
11     OKC_TIME_PVT.ADD_LANGUAGE;
12   END ADD_LANGUAGE;
13 
14   PROCEDURE DELETE_TIMEVALUES_N_TASKS(
15     p_api_version	    IN NUMBER,
16     p_init_msg_list         IN VARCHAR2 ,
17     x_return_status         OUT NOCOPY VARCHAR2,
18     x_msg_count             OUT NOCOPY NUMBER,
19     x_msg_data              OUT NOCOPY VARCHAR2,
20     p_chr_id            IN NUMBER  ,
21     p_tve_id                IN NUMBER) IS
22    BEGIN
23      OKC_TIME_PVT.DELETE_TIMEVALUES_N_TASKS(
24        p_api_version,
25        p_init_msg_list,
26        x_return_status,
27        x_msg_count,
28        x_msg_data,
29        p_chr_id,
30        p_tve_id);
31   END DELETE_TIMEVALUES_N_TASKS;
32 
33   FUNCTION migrate_talv(p_talv_rec1 IN talv_rec_type,
34                         p_talv_rec2 IN talv_rec_type)
35     RETURN talv_rec_type IS
36     l_talv_rec talv_rec_type;
37   BEGIN
38     l_talv_rec.id                    := p_talv_rec1.id;
39     l_talv_rec.object_version_number := p_talv_rec1.object_version_number;
40     l_talv_rec.created_by            := p_talv_rec1.created_by;
41     l_talv_rec.creation_date         := p_talv_rec1.creation_date;
42     l_talv_rec.last_updated_by       := p_talv_rec1.last_updated_by;
43     l_talv_rec.last_update_date      := p_talv_rec1.last_update_date;
44     l_talv_rec.last_update_login     := p_talv_rec1.last_update_login;
45     l_talv_rec.sfwt_flag             := p_talv_rec2.sfwt_flag;
46     l_talv_rec.tve_id_limited         := p_talv_rec2.tve_id_limited;
47     l_talv_rec.dnz_chr_id         := p_talv_rec2.dnz_chr_id;
48     l_talv_rec.tve_id_offset         := p_talv_rec2.tve_id_offset;
49     l_talv_rec.operator              := p_talv_rec2.operator;
50     l_talv_rec.before_after          := p_talv_rec2.before_after;
51     l_talv_rec.duration              := p_talv_rec2.duration;
52     l_talv_rec.uom_code   := p_talv_rec2.uom_code;
53     l_talv_rec.tze_id   := p_talv_rec2.tze_id;
54     l_talv_rec.spn_id                := p_talv_rec2.spn_id;
55     l_talv_rec.short_description     := p_talv_rec2.short_description;
56     l_talv_rec.description           := p_talv_rec2.description;
57     l_talv_rec.comments              := p_talv_rec2.comments;
58     l_talv_rec.attribute_category    := p_talv_rec2.attribute_category;
59     l_talv_rec.attribute1            := p_talv_rec2.attribute1;
60     l_talv_rec.attribute2            := p_talv_rec2.attribute2;
61     l_talv_rec.attribute3            := p_talv_rec2.attribute3;
62     l_talv_rec.attribute4            := p_talv_rec2.attribute4;
63     l_talv_rec.attribute5            := p_talv_rec2.attribute5;
64     l_talv_rec.attribute6            := p_talv_rec2.attribute6;
65     l_talv_rec.attribute7            := p_talv_rec2.attribute7;
66     l_talv_rec.attribute8            := p_talv_rec2.attribute8;
67     l_talv_rec.attribute9            := p_talv_rec2.attribute9;
68     l_talv_rec.attribute10           := p_talv_rec2.attribute10;
69     l_talv_rec.attribute11           := p_talv_rec2.attribute11;
70     l_talv_rec.attribute12           := p_talv_rec2.attribute12;
71     l_talv_rec.attribute13           := p_talv_rec2.attribute13;
72     l_talv_rec.attribute14           := p_talv_rec2.attribute14;
73     l_talv_rec.attribute15           := p_talv_rec2.attribute15;
74     RETURN (l_talv_rec);
75   END migrate_talv;
76 
77   FUNCTION migrate_talv(p_talv_tbl1 IN talv_tbl_type,
78     p_talv_tbl2 IN talv_tbl_type)
79     RETURN talv_tbl_type IS
80     l_talv_tbl talv_tbl_type;
81     i NUMBER := 0;
82     j NUMBER := 0;
83   BEGIN
84     -- If the user hook deleted some records or added some new records in the table,
85     -- discard the change and simply copy the original table.
86     IF p_talv_tbl1.COUNT <> p_talv_tbl2.COUNT THEN
87       l_talv_tbl := p_talv_tbl1;
88     ELSE
89       IF (p_talv_tbl1.COUNT > 0) THEN
90         i := p_talv_tbl1.FIRST;
91         j := p_talv_tbl2.FIRST;
92         LOOP
93           l_talv_tbl(i) := migrate_talv(p_talv_tbl1(i), p_talv_tbl2(j));
94           EXIT WHEN (i = p_talv_tbl1.LAST);
95           i := p_talv_tbl1.NEXT(i);
96           j := p_talv_tbl2.NEXT(j);
97         END LOOP;
98       END IF;
99     END IF;
100     RETURN (l_talv_tbl);
101   END migrate_talv;
102 
103   PROCEDURE CREATE_TPA_RELTV(
104     p_api_version	    IN NUMBER,
105     p_init_msg_list         IN VARCHAR2 ,
106     x_return_status         OUT NOCOPY VARCHAR2,
107     x_msg_count             OUT NOCOPY NUMBER,
108     x_msg_data              OUT NOCOPY VARCHAR2,
109     p_talv_rec	            IN talv_rec_type,
110     x_talv_rec              OUT NOCOPY talv_rec_type) IS
111     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TPA_RELTV';
112     l_return_status	  VARCHAR2(1);
113     l_talv_rec     talv_rec_type := p_talv_rec;
114   BEGIN
115     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
116 					      p_init_msg_list,
117 					      '_PUB',
118                                         x_return_status);
119     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
120       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
121     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
122       raise OKC_API.G_EXCEPTION_ERROR;
123     END IF;
124     -- Call user hook for BEFORE
125     g_talv_rec := l_talv_rec;
126     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
127     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
128       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
129     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
130       raise OKC_API.G_EXCEPTION_ERROR;
131     END IF;
132     l_talv_rec := migrate_talv(l_talv_rec, g_talv_rec);
133     OKC_TIME_PVT.CREATE_TPA_RELTV(
134        p_api_version,
135        p_init_msg_list,
136        x_return_status,
137        x_msg_count,
138        x_msg_data,
139        p_talv_rec,
140        x_talv_rec);
141     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
142       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
143     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
144       raise OKC_API.G_EXCEPTION_ERROR;
145     END IF;
146 
147     -- Call user hook for AFTER
148     g_talv_rec := x_talv_rec;
149     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
150     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
151       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
152     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
153       raise OKC_API.G_EXCEPTION_ERROR;
154     END IF;
155     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
156   EXCEPTION
157     WHEN OKC_API.G_EXCEPTION_ERROR THEN
158       x_return_status := OKC_API.HANDLE_EXCEPTIONS
159       (l_api_name,
160        G_PKG_NAME,
161        'OKC_API.G_RET_STS_ERROR',
162        x_msg_count,
163        x_msg_data,
164        '_PUB');
165     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
166       x_return_status := OKC_API.HANDLE_EXCEPTIONS
167       (l_api_name,
168        G_PKG_NAME,
169        'OKC_API.G_RET_STS_UNEXP_ERROR',
170        x_msg_count,
171        x_msg_data,
172        '_PUB');
173     WHEN OTHERS THEN
174       x_return_status := OKC_API.HANDLE_EXCEPTIONS
175       (l_api_name,
176        G_PKG_NAME,
177        'OTHERS',
178        x_msg_count,
179        x_msg_data,
180        '_PUB');
181   END CREATE_TPA_RELTV;
182 
183   PROCEDURE CREATE_TPA_RELTV(
184     p_api_version                  IN NUMBER,
185     p_init_msg_list                IN VARCHAR2 ,
186     x_return_status                OUT NOCOPY VARCHAR2,
187     x_msg_count                    OUT NOCOPY NUMBER,
188     x_msg_data                     OUT NOCOPY VARCHAR2,
189     p_talv_tbl                     IN talv_tbl_type,
190     x_talv_tbl                     OUT NOCOPY talv_tbl_type) IS
191     i			         NUMBER := 0;
192     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
193   BEGIN
194     x_return_status := OKC_API.G_RET_STS_SUCCESS;
195     IF p_talv_tbl.COUNT > 0 THEN
196       i := p_talv_tbl.FIRST;
197       LOOP
198         CREATE_TPA_RELTV(
199 	    p_api_version,
200 	    p_init_msg_list,
201 	    l_return_status,
202 	    x_msg_count,
203 	    x_msg_data,
204 	    p_talv_tbl(i),
205 	    x_talv_tbl(i));
206         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
207           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
208             x_return_status := l_return_status;
209             raise G_EXCEPTION_HALT_VALIDATION;
210           ELSE
211             x_return_status := l_return_status;
212           END IF;
213         END IF;
214         EXIT WHEN (i = p_talv_tbl.LAST);
215         i := p_talv_tbl.NEXT(i);
216       END LOOP;
217     END IF;
218   EXCEPTION
219     WHEN G_EXCEPTION_HALT_VALIDATION THEN
220       NULL;
221     WHEN OTHERS THEN
222       OKC_API.set_message(p_app_name      => g_app_name,
223                           p_msg_name      => g_unexpected_error,
224                           p_token1        => g_sqlcode_token,
225                           p_token1_value  => sqlcode,
226                           p_token2        => g_sqlerrm_token,
227                           p_token2_value  => sqlerrm);
228       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
229   END CREATE_TPA_RELTV;
230 
231   PROCEDURE UPDATE_TPA_RELTV(
232     p_api_version	    IN NUMBER,
233     p_init_msg_list         IN VARCHAR2 ,
234     x_return_status         OUT NOCOPY VARCHAR2,
235     x_msg_count             OUT NOCOPY NUMBER,
236     x_msg_data              OUT NOCOPY VARCHAR2,
237     p_talv_rec	            IN talv_rec_type,
238     x_talv_rec              OUT NOCOPY talv_rec_type) IS
239     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TPA_RELTV';
240     l_return_status	  VARCHAR2(1);
241     l_talv_rec     talv_rec_type := p_talv_rec;
242   BEGIN
243     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
244 					      p_init_msg_list,
245 					      '_PUB',
246                                         x_return_status);
247     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
248       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
249     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
250       raise OKC_API.G_EXCEPTION_ERROR;
251     END IF;
252     -- Call user hook for BEFORE
253     g_talv_rec := l_talv_rec;
254     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
255     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
256       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
257     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
258       raise OKC_API.G_EXCEPTION_ERROR;
259     END IF;
260     l_talv_rec := migrate_talv(l_talv_rec, g_talv_rec);
261     OKC_TIME_PVT.UPDATE_TPA_RELTV(
262        p_api_version,
263        p_init_msg_list,
264        x_return_status,
265        x_msg_count,
266        x_msg_data,
267        p_talv_rec,
268        x_talv_rec);
269     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
270       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
271     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
272       raise OKC_API.G_EXCEPTION_ERROR;
273     END IF;
274 
275     -- Call user hook for AFTER
276     g_talv_rec := x_talv_rec;
277     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
278     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
279       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
280     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
281       raise OKC_API.G_EXCEPTION_ERROR;
282     END IF;
283     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
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     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
294       x_return_status := OKC_API.HANDLE_EXCEPTIONS
295       (l_api_name,
296        G_PKG_NAME,
297        'OKC_API.G_RET_STS_UNEXP_ERROR',
298        x_msg_count,
299        x_msg_data,
300        '_PUB');
301     WHEN OTHERS THEN
302       x_return_status := OKC_API.HANDLE_EXCEPTIONS
303       (l_api_name,
304        G_PKG_NAME,
305        'OTHERS',
306        x_msg_count,
307        x_msg_data,
308        '_PUB');
309   END UPDATE_TPA_RELTV;
310 
311   PROCEDURE UPDATE_TPA_RELTV(
312     p_api_version                  IN NUMBER,
313     p_init_msg_list                IN VARCHAR2 ,
314     x_return_status                OUT NOCOPY VARCHAR2,
315     x_msg_count                    OUT NOCOPY NUMBER,
316     x_msg_data                     OUT NOCOPY VARCHAR2,
317     p_talv_tbl                     IN talv_tbl_type,
318     x_talv_tbl                     OUT NOCOPY talv_tbl_type) IS
319     i			         NUMBER := 0;
320     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
321   BEGIN
322     x_return_status := OKC_API.G_RET_STS_SUCCESS;
323     IF p_talv_tbl.COUNT > 0 THEN
324       i := p_talv_tbl.FIRST;
325       LOOP
326         UPDATE_TPA_RELTV(
327 	    p_api_version,
328 	    p_init_msg_list,
329 	    l_return_status,
330 	    x_msg_count,
331 	    x_msg_data,
332 	    p_talv_tbl(i),
333 	    x_talv_tbl(i));
334         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
335           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
336             x_return_status := l_return_status;
337             raise G_EXCEPTION_HALT_VALIDATION;
338           ELSE
339             x_return_status := l_return_status;
340           END IF;
341         END IF;
342         EXIT WHEN (i = p_talv_tbl.LAST);
343         i := p_talv_tbl.NEXT(i);
344       END LOOP;
345     END IF;
346   EXCEPTION
347     WHEN G_EXCEPTION_HALT_VALIDATION THEN
348       NULL;
349     WHEN OTHERS THEN
350       OKC_API.set_message(p_app_name      => g_app_name,
351                           p_msg_name      => g_unexpected_error,
352                           p_token1        => g_sqlcode_token,
353                           p_token1_value  => sqlcode,
354                           p_token2        => g_sqlerrm_token,
355                           p_token2_value  => sqlerrm);
356       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
357   END UPDATE_TPA_RELTV;
358 
359   PROCEDURE DELETE_TPA_RELTV(
360     p_api_version	    IN NUMBER,
361     p_init_msg_list         IN VARCHAR2 ,
362     x_return_status         OUT NOCOPY VARCHAR2,
363     x_msg_count             OUT NOCOPY NUMBER,
364     x_msg_data              OUT NOCOPY VARCHAR2,
365     p_talv_rec              IN talv_rec_type) IS
366     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TPA_RELTV';
367     l_return_status	  VARCHAR2(1);
368     l_talv_rec     talv_rec_type := p_talv_rec;
369   BEGIN
370     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
371 					      p_init_msg_list,
372 					      '_PUB',
373                                         x_return_status);
374     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
375       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
376     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
377       raise OKC_API.G_EXCEPTION_ERROR;
378     END IF;
379     -- Call user hook for BEFORE
380     g_talv_rec := l_talv_rec;
381     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
382     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
383       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
384     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
385       raise OKC_API.G_EXCEPTION_ERROR;
386     END IF;
387     OKC_TIME_PVT.DELETE_TPA_RELTV(
388        p_api_version,
389        p_init_msg_list,
390        x_return_status,
391        x_msg_count,
392        x_msg_data,
393        p_talv_rec);
394     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
395       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
396     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
397       raise OKC_API.G_EXCEPTION_ERROR;
398     END IF;
399 
400     -- Call user hook for AFTER
401     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
402     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
403       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
404     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
405       raise OKC_API.G_EXCEPTION_ERROR;
406     END IF;
407     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
408   EXCEPTION
409     WHEN OKC_API.G_EXCEPTION_ERROR THEN
410       x_return_status := OKC_API.HANDLE_EXCEPTIONS
411       (l_api_name,
412        G_PKG_NAME,
413        'OKC_API.G_RET_STS_ERROR',
414        x_msg_count,
415        x_msg_data,
416        '_PUB');
417     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
418       x_return_status := OKC_API.HANDLE_EXCEPTIONS
419       (l_api_name,
420        G_PKG_NAME,
421        'OKC_API.G_RET_STS_UNEXP_ERROR',
422        x_msg_count,
423        x_msg_data,
424        '_PUB');
425     WHEN OTHERS THEN
426       x_return_status := OKC_API.HANDLE_EXCEPTIONS
427       (l_api_name,
428        G_PKG_NAME,
429        'OTHERS',
430        x_msg_count,
431        x_msg_data,
432        '_PUB');
433   END DELETE_TPA_RELTV;
434 
435   PROCEDURE DELETE_TPA_RELTV(
436     p_api_version                  IN NUMBER,
437     p_init_msg_list                IN VARCHAR2 ,
438     x_return_status                OUT NOCOPY VARCHAR2,
439     x_msg_count                    OUT NOCOPY NUMBER,
440     x_msg_data                     OUT NOCOPY VARCHAR2,
441     p_talv_tbl                     IN talv_tbl_type) IS
442     i			         NUMBER := 0;
443     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
444   BEGIN
445     x_return_status := OKC_API.G_RET_STS_SUCCESS;
446     IF p_talv_tbl.COUNT > 0 THEN
447       i := p_talv_tbl.FIRST;
448       LOOP
449         DELETE_TPA_RELTV(
450 	    p_api_version,
451 	    p_init_msg_list,
452 	    l_return_status,
453 	    x_msg_count,
454 	    x_msg_data,
455 	    p_talv_tbl(i));
456         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
457           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
458             x_return_status := l_return_status;
459             raise G_EXCEPTION_HALT_VALIDATION;
460           ELSE
461             x_return_status := l_return_status;
462           END IF;
463         END IF;
464         EXIT WHEN (i = p_talv_tbl.LAST);
465         i := p_talv_tbl.NEXT(i);
466       END LOOP;
467     END IF;
468   EXCEPTION
469     WHEN G_EXCEPTION_HALT_VALIDATION THEN
470       NULL;
471     WHEN OTHERS THEN
472       OKC_API.set_message(p_app_name      => g_app_name,
473                           p_msg_name      => g_unexpected_error,
474                           p_token1        => g_sqlcode_token,
475                           p_token1_value  => sqlcode,
476                           p_token2        => g_sqlerrm_token,
477                           p_token2_value  => sqlerrm);
478       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
479   END DELETE_TPA_RELTV;
480 
481   PROCEDURE LOCK_TPA_RELTV(
482     p_api_version	    IN NUMBER,
483     p_init_msg_list         IN VARCHAR2 ,
484     x_return_status         OUT NOCOPY VARCHAR2,
485     x_msg_count             OUT NOCOPY NUMBER,
486     x_msg_data              OUT NOCOPY VARCHAR2,
487     p_talv_rec		    IN talv_rec_type) IS
488   BEGIN
489     OKC_TIME_PVT.LOCK_TPA_RELTV(
490     p_api_version,
491     p_init_msg_list,
492     x_return_status,
493     x_msg_count,
494     x_msg_data,
495     p_talv_rec);
496   END LOCK_TPA_RELTV;
497 
498   PROCEDURE LOCK_TPA_RELTV(
499     p_api_version                  IN NUMBER,
500     p_init_msg_list                IN VARCHAR2 ,
501     x_return_status                OUT NOCOPY VARCHAR2,
502     x_msg_count                    OUT NOCOPY NUMBER,
503     x_msg_data                     OUT NOCOPY VARCHAR2,
504     p_talv_tbl                     IN talv_tbl_type) IS
505     i			         NUMBER := 0;
506     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
507   BEGIN
508     x_return_status := OKC_API.G_RET_STS_SUCCESS;
509     IF p_talv_tbl.COUNT > 0 THEN
510       i := p_talv_tbl.FIRST;
511       LOOP
512         LOCK_TPA_RELTV(
513 	    p_api_version,
514 	    p_init_msg_list,
515 	    l_return_status,
516 	    x_msg_count,
517 	    x_msg_data,
518 	    p_talv_tbl(i));
519         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
520           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
521             x_return_status := l_return_status;
522             raise G_EXCEPTION_HALT_VALIDATION;
523           ELSE
524             x_return_status := l_return_status;
525           END IF;
526         END IF;
527         EXIT WHEN (i = p_talv_tbl.LAST);
528         i := p_talv_tbl.NEXT(i);
529       END LOOP;
530     END IF;
531   EXCEPTION
532     WHEN G_EXCEPTION_HALT_VALIDATION THEN
533       NULL;
534     WHEN OTHERS THEN
535       OKC_API.set_message(p_app_name      => g_app_name,
536                           p_msg_name      => g_unexpected_error,
537                           p_token1        => g_sqlcode_token,
538                           p_token1_value  => sqlcode,
539                           p_token2        => g_sqlerrm_token,
540                           p_token2_value  => sqlerrm);
541       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
542   END LOCK_TPA_RELTV;
543 
544   PROCEDURE VALID_TPA_RELTV(
545     p_api_version	    IN NUMBER,
546     p_init_msg_list         IN VARCHAR2 ,
547     x_return_status         OUT NOCOPY VARCHAR2,
548     x_msg_count             OUT NOCOPY NUMBER,
549     x_msg_data              OUT NOCOPY VARCHAR2,
550     p_talv_rec		    IN talv_rec_type) IS
551   BEGIN
552     OKC_TIME_PVT.VALID_TPA_RELTV(
553     p_api_version,
554     p_init_msg_list,
555     x_return_status,
556     x_msg_count,
557     x_msg_data,
558     p_talv_rec);
559   END VALID_TPA_RELTV;
560 
561   PROCEDURE VALID_TPA_RELTV(
562     p_api_version                  IN NUMBER,
563     p_init_msg_list                IN VARCHAR2 ,
564     x_return_status                OUT NOCOPY VARCHAR2,
565     x_msg_count                    OUT NOCOPY NUMBER,
566     x_msg_data                     OUT NOCOPY VARCHAR2,
567     p_talv_tbl                     IN talv_tbl_type) IS
568     i			         NUMBER := 0;
569     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
570   BEGIN
571     x_return_status := OKC_API.G_RET_STS_SUCCESS;
572     IF p_talv_tbl.COUNT > 0 THEN
573       i := p_talv_tbl.FIRST;
574       LOOP
575         VALID_TPA_RELTV(
576 	    p_api_version,
577 	    p_init_msg_list,
578 	    l_return_status,
579 	    x_msg_count,
580 	    x_msg_data,
581 	    p_talv_tbl(i));
582         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
583           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
584             x_return_status := l_return_status;
585             raise G_EXCEPTION_HALT_VALIDATION;
586           ELSE
587             x_return_status := l_return_status;
588           END IF;
589         END IF;
590         EXIT WHEN (i = p_talv_tbl.LAST);
591         i := p_talv_tbl.NEXT(i);
592       END LOOP;
593     END IF;
594   EXCEPTION
595     WHEN G_EXCEPTION_HALT_VALIDATION THEN
596       NULL;
597     WHEN OTHERS THEN
598       OKC_API.set_message(p_app_name      => g_app_name,
599                           p_msg_name      => g_unexpected_error,
600                           p_token1        => g_sqlcode_token,
601                           p_token1_value  => sqlcode,
602                           p_token2        => g_sqlerrm_token,
603                           p_token2_value  => sqlerrm);
604       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
605   END VALID_TPA_RELTV;
606 
607   FUNCTION migrate_talv(p_talv_evt_rec1 IN talv_evt_rec_type,
608                         p_talv_evt_rec2 IN talv_evt_rec_type)
609     RETURN talv_evt_rec_type IS
610     l_talv_evt_rec talv_evt_rec_type;
611   BEGIN
612     l_talv_evt_rec.id                    := p_talv_evt_rec1.id;
613     l_talv_evt_rec.object_version_number := p_talv_evt_rec1.object_version_number;
614     l_talv_evt_rec.created_by            := p_talv_evt_rec1.created_by;
615     l_talv_evt_rec.creation_date         := p_talv_evt_rec1.creation_date;
616     l_talv_evt_rec.last_updated_by       := p_talv_evt_rec1.last_updated_by;
617     l_talv_evt_rec.last_update_date      := p_talv_evt_rec1.last_update_date;
618     l_talv_evt_rec.last_update_login     := p_talv_evt_rec1.last_update_login;
619     l_talv_evt_rec.sfwt_flag             := p_talv_evt_rec2.sfwt_flag;
620     l_talv_evt_rec.tve_id_limited         := p_talv_evt_rec2.tve_id_limited;
621     l_talv_evt_rec.dnz_chr_id         := p_talv_evt_rec2.dnz_chr_id;
622     l_talv_evt_rec.tve_id_offset         := p_talv_evt_rec2.tve_id_offset;
623     l_talv_evt_rec.operator              := p_talv_evt_rec2.operator;
624     l_talv_evt_rec.before_after          := p_talv_evt_rec2.before_after;
625     l_talv_evt_rec.duration              := p_talv_evt_rec2.duration;
626     l_talv_evt_rec.uom_code   := p_talv_evt_rec2.uom_code;
627     l_talv_evt_rec.tze_id   := p_talv_evt_rec2.tze_id;
628     l_talv_evt_rec.cnh_id                := p_talv_evt_rec2.cnh_id;
629     l_talv_evt_rec.spn_id                := p_talv_evt_rec2.spn_id;
630     l_talv_evt_rec.short_description     := p_talv_evt_rec2.short_description;
631     l_talv_evt_rec.description           := p_talv_evt_rec2.description;
632     l_talv_evt_rec.comments              := p_talv_evt_rec2.comments;
633     l_talv_evt_rec.attribute_category    := p_talv_evt_rec2.attribute_category;
634     l_talv_evt_rec.attribute1            := p_talv_evt_rec2.attribute1;
635     l_talv_evt_rec.attribute2            := p_talv_evt_rec2.attribute2;
636     l_talv_evt_rec.attribute3            := p_talv_evt_rec2.attribute3;
637     l_talv_evt_rec.attribute4            := p_talv_evt_rec2.attribute4;
638     l_talv_evt_rec.attribute5            := p_talv_evt_rec2.attribute5;
639     l_talv_evt_rec.attribute6            := p_talv_evt_rec2.attribute6;
640     l_talv_evt_rec.attribute7            := p_talv_evt_rec2.attribute7;
641     l_talv_evt_rec.attribute8            := p_talv_evt_rec2.attribute8;
642     l_talv_evt_rec.attribute9            := p_talv_evt_rec2.attribute9;
643     l_talv_evt_rec.attribute10           := p_talv_evt_rec2.attribute10;
644     l_talv_evt_rec.attribute11           := p_talv_evt_rec2.attribute11;
645     l_talv_evt_rec.attribute12           := p_talv_evt_rec2.attribute12;
646     l_talv_evt_rec.attribute13           := p_talv_evt_rec2.attribute13;
647     l_talv_evt_rec.attribute14           := p_talv_evt_rec2.attribute14;
648     l_talv_evt_rec.attribute15           := p_talv_evt_rec2.attribute15;
649     RETURN (l_talv_evt_rec);
650   END migrate_talv;
651 
652   FUNCTION migrate_talv(p_talv_evt_tbl1 IN talv_evt_tbl_type,
653     p_talv_evt_tbl2 IN talv_evt_tbl_type)
654     RETURN talv_evt_tbl_type IS
655     l_talv_evt_tbl talv_evt_tbl_type;
656     i NUMBER := 0;
657     j NUMBER := 0;
658   BEGIN
659     -- If the user hook deleted some records or added some new records in the table,
660     -- discard the change and simply copy the original table.
661     IF p_talv_evt_tbl1.COUNT <> p_talv_evt_tbl2.COUNT THEN
662       l_talv_evt_tbl := p_talv_evt_tbl1;
663     ELSE
664       IF (p_talv_evt_tbl1.COUNT > 0) THEN
665         i := p_talv_evt_tbl1.FIRST;
666         j := p_talv_evt_tbl2.FIRST;
667         LOOP
668           l_talv_evt_tbl(i) := migrate_talv(p_talv_evt_tbl1(i), p_talv_evt_tbl2(j));
669           EXIT WHEN (i = p_talv_evt_tbl1.LAST);
670           i := p_talv_evt_tbl1.NEXT(i);
671           j := p_talv_evt_tbl2.NEXT(j);
672         END LOOP;
673       END IF;
674     END IF;
675     RETURN (l_talv_evt_tbl);
676   END migrate_talv;
677 
678   PROCEDURE CREATE_TPA_RELTV(
679     p_api_version	    IN NUMBER,
680     p_init_msg_list         IN VARCHAR2 ,
681     x_return_status         OUT NOCOPY VARCHAR2,
682     x_msg_count             OUT NOCOPY NUMBER,
683     x_msg_data              OUT NOCOPY VARCHAR2,
684     p_talv_evt_rec	            IN talv_evt_rec_type,
685     x_talv_evt_rec              OUT NOCOPY talv_evt_rec_type) IS
686     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TPA_RELTV';
687     l_return_status	  VARCHAR2(1);
688     l_talv_evt_rec     talv_evt_rec_type := p_talv_evt_rec;
689   BEGIN
690     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
691 					      p_init_msg_list,
692 					      '_PUB',
693                                         x_return_status);
694     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
695       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
696     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
697       raise OKC_API.G_EXCEPTION_ERROR;
698     END IF;
699     -- Call user hook for BEFORE
700     g_talv_evt_rec := l_talv_evt_rec;
701     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
702     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
703       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
704     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
705       raise OKC_API.G_EXCEPTION_ERROR;
706     END IF;
707     l_talv_evt_rec := migrate_talv(l_talv_evt_rec, g_talv_evt_rec);
708     OKC_TIME_PVT.CREATE_TPA_RELTV(
709        p_api_version,
710        p_init_msg_list,
711        x_return_status,
712        x_msg_count,
713        x_msg_data,
714        p_talv_evt_rec,
715        x_talv_evt_rec);
716     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
717       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
718     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
719       raise OKC_API.G_EXCEPTION_ERROR;
720     END IF;
721 
722     -- Call user hook for AFTER
723     g_talv_evt_rec := x_talv_evt_rec;
724     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
725     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
726       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
727     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
728       raise OKC_API.G_EXCEPTION_ERROR;
729     END IF;
730     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
731   EXCEPTION
732     WHEN OKC_API.G_EXCEPTION_ERROR THEN
733       x_return_status := OKC_API.HANDLE_EXCEPTIONS
734       (l_api_name,
735        G_PKG_NAME,
736        'OKC_API.G_RET_STS_ERROR',
737        x_msg_count,
738        x_msg_data,
739        '_PUB');
740     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
741       x_return_status := OKC_API.HANDLE_EXCEPTIONS
742       (l_api_name,
743        G_PKG_NAME,
744        'OKC_API.G_RET_STS_UNEXP_ERROR',
745        x_msg_count,
746        x_msg_data,
747        '_PUB');
748     WHEN OTHERS THEN
749       x_return_status := OKC_API.HANDLE_EXCEPTIONS
750       (l_api_name,
751        G_PKG_NAME,
752        'OTHERS',
753        x_msg_count,
754        x_msg_data,
755        '_PUB');
756   END CREATE_TPA_RELTV;
757 
758   PROCEDURE CREATE_TPA_RELTV(
759     p_api_version                  IN NUMBER,
760     p_init_msg_list                IN VARCHAR2 ,
761     x_return_status                OUT NOCOPY VARCHAR2,
762     x_msg_count                    OUT NOCOPY NUMBER,
763     x_msg_data                     OUT NOCOPY VARCHAR2,
764     p_talv_evt_tbl                     IN talv_evt_tbl_type,
765     x_talv_evt_tbl                     OUT NOCOPY talv_evt_tbl_type) IS
766     i			         NUMBER := 0;
767     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
768   BEGIN
769     x_return_status := OKC_API.G_RET_STS_SUCCESS;
770     IF p_talv_evt_tbl.COUNT > 0 THEN
771       i := p_talv_evt_tbl.FIRST;
772       LOOP
773         CREATE_TPA_RELTV(
774 	    p_api_version,
775 	    p_init_msg_list,
776 	    l_return_status,
777 	    x_msg_count,
778 	    x_msg_data,
779 	    p_talv_evt_tbl(i),
780 	    x_talv_evt_tbl(i));
781         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
782           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
783             x_return_status := l_return_status;
784             raise G_EXCEPTION_HALT_VALIDATION;
785           ELSE
786             x_return_status := l_return_status;
787           END IF;
788         END IF;
789         EXIT WHEN (i = p_talv_evt_tbl.LAST);
790         i := p_talv_evt_tbl.NEXT(i);
791       END LOOP;
792     END IF;
793   EXCEPTION
794     WHEN G_EXCEPTION_HALT_VALIDATION THEN
795       NULL;
796     WHEN OTHERS THEN
797       OKC_API.set_message(p_app_name      => g_app_name,
798                           p_msg_name      => g_unexpected_error,
799                           p_token1        => g_sqlcode_token,
800                           p_token1_value  => sqlcode,
801                           p_token2        => g_sqlerrm_token,
802                           p_token2_value  => sqlerrm);
803       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
804   END CREATE_TPA_RELTV;
805 
806   PROCEDURE UPDATE_TPA_RELTV(
807     p_api_version	    IN NUMBER,
808     p_init_msg_list         IN VARCHAR2 ,
809     x_return_status         OUT NOCOPY VARCHAR2,
810     x_msg_count             OUT NOCOPY NUMBER,
811     x_msg_data              OUT NOCOPY VARCHAR2,
812     p_talv_evt_rec	            IN talv_evt_rec_type,
813     x_talv_evt_rec              OUT NOCOPY talv_evt_rec_type) IS
814     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TPA_RELTV';
815     l_return_status	  VARCHAR2(1);
816     l_talv_evt_rec     talv_evt_rec_type := p_talv_evt_rec;
817   BEGIN
818     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
819 					      p_init_msg_list,
820 					      '_PUB',
821                                         x_return_status);
822     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
823       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
824     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
825       raise OKC_API.G_EXCEPTION_ERROR;
826     END IF;
827     -- Call user hook for BEFORE
828     g_talv_evt_rec := l_talv_evt_rec;
829     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
830     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
831       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
832     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
833       raise OKC_API.G_EXCEPTION_ERROR;
834     END IF;
835     l_talv_evt_rec := migrate_talv(l_talv_evt_rec, g_talv_evt_rec);
836     OKC_TIME_PVT.UPDATE_TPA_RELTV(
837        p_api_version,
838        p_init_msg_list,
839        x_return_status,
840        x_msg_count,
841        x_msg_data,
842        p_talv_evt_rec,
843        x_talv_evt_rec);
844     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
845       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
846     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
847       raise OKC_API.G_EXCEPTION_ERROR;
848     END IF;
849 
850     -- Call user hook for AFTER
851     g_talv_evt_rec := x_talv_evt_rec;
852     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
853     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
854       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
855     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
856       raise OKC_API.G_EXCEPTION_ERROR;
857     END IF;
858     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
859   EXCEPTION
860     WHEN OKC_API.G_EXCEPTION_ERROR THEN
861       x_return_status := OKC_API.HANDLE_EXCEPTIONS
862       (l_api_name,
863        G_PKG_NAME,
864        'OKC_API.G_RET_STS_ERROR',
865        x_msg_count,
866        x_msg_data,
867        '_PUB');
868     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
869       x_return_status := OKC_API.HANDLE_EXCEPTIONS
870       (l_api_name,
871        G_PKG_NAME,
872        'OKC_API.G_RET_STS_UNEXP_ERROR',
873        x_msg_count,
874        x_msg_data,
875        '_PUB');
876     WHEN OTHERS THEN
877       x_return_status := OKC_API.HANDLE_EXCEPTIONS
878       (l_api_name,
879        G_PKG_NAME,
880        'OTHERS',
881        x_msg_count,
882        x_msg_data,
883        '_PUB');
884   END UPDATE_TPA_RELTV;
885 
886   PROCEDURE UPDATE_TPA_RELTV(
887     p_api_version                  IN NUMBER,
888     p_init_msg_list                IN VARCHAR2 ,
889     x_return_status                OUT NOCOPY VARCHAR2,
890     x_msg_count                    OUT NOCOPY NUMBER,
891     x_msg_data                     OUT NOCOPY VARCHAR2,
892     p_talv_evt_tbl                     IN talv_evt_tbl_type,
893     x_talv_evt_tbl                     OUT NOCOPY talv_evt_tbl_type) IS
894     i			         NUMBER := 0;
895     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
896   BEGIN
897     x_return_status := OKC_API.G_RET_STS_SUCCESS;
898     IF p_talv_evt_tbl.COUNT > 0 THEN
899       i := p_talv_evt_tbl.FIRST;
900       LOOP
901         UPDATE_TPA_RELTV(
902 	    p_api_version,
903 	    p_init_msg_list,
904 	    l_return_status,
905 	    x_msg_count,
906 	    x_msg_data,
907 	    p_talv_evt_tbl(i),
908 	    x_talv_evt_tbl(i));
909         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
910           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
911             x_return_status := l_return_status;
912             raise G_EXCEPTION_HALT_VALIDATION;
913           ELSE
914             x_return_status := l_return_status;
915           END IF;
916         END IF;
917         EXIT WHEN (i = p_talv_evt_tbl.LAST);
918         i := p_talv_evt_tbl.NEXT(i);
919       END LOOP;
920     END IF;
921   EXCEPTION
922     WHEN G_EXCEPTION_HALT_VALIDATION THEN
923       NULL;
924     WHEN OTHERS THEN
925       OKC_API.set_message(p_app_name      => g_app_name,
926                           p_msg_name      => g_unexpected_error,
927                           p_token1        => g_sqlcode_token,
928                           p_token1_value  => sqlcode,
929                           p_token2        => g_sqlerrm_token,
930                           p_token2_value  => sqlerrm);
931       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
932   END UPDATE_TPA_RELTV;
933 
934   PROCEDURE DELETE_TPA_RELTV(
935     p_api_version	    IN NUMBER,
936     p_init_msg_list         IN VARCHAR2 ,
937     x_return_status         OUT NOCOPY VARCHAR2,
938     x_msg_count             OUT NOCOPY NUMBER,
939     x_msg_data              OUT NOCOPY VARCHAR2,
940     p_talv_evt_rec              IN talv_evt_rec_type) IS
941     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TPA_RELTV';
942     l_return_status	  VARCHAR2(1);
943     l_talv_evt_rec     talv_evt_rec_type := p_talv_evt_rec;
944   BEGIN
945     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
946 					      p_init_msg_list,
947 					      '_PUB',
948                                         x_return_status);
949     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
950       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
951     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
952       raise OKC_API.G_EXCEPTION_ERROR;
953     END IF;
954     -- Call user hook for BEFORE
955     g_talv_evt_rec := l_talv_evt_rec;
956     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
957     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
958       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
959     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
960       raise OKC_API.G_EXCEPTION_ERROR;
961     END IF;
962     OKC_TIME_PVT.DELETE_TPA_RELTV(
963        p_api_version,
964        p_init_msg_list,
965        x_return_status,
966        x_msg_count,
967        x_msg_data,
968        p_talv_evt_rec);
969     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
970       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
971     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
972       raise OKC_API.G_EXCEPTION_ERROR;
973     END IF;
974 
975     -- Call user hook for AFTER
976     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
977     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
978       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
979     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
980       raise OKC_API.G_EXCEPTION_ERROR;
981     END IF;
982     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
983   EXCEPTION
984     WHEN OKC_API.G_EXCEPTION_ERROR THEN
985       x_return_status := OKC_API.HANDLE_EXCEPTIONS
986       (l_api_name,
987        G_PKG_NAME,
988        'OKC_API.G_RET_STS_ERROR',
989        x_msg_count,
990        x_msg_data,
991        '_PUB');
992     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
993       x_return_status := OKC_API.HANDLE_EXCEPTIONS
994       (l_api_name,
995        G_PKG_NAME,
996        'OKC_API.G_RET_STS_UNEXP_ERROR',
997        x_msg_count,
998        x_msg_data,
999        '_PUB');
1000     WHEN OTHERS THEN
1001       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1002       (l_api_name,
1003        G_PKG_NAME,
1004        'OTHERS',
1005        x_msg_count,
1006        x_msg_data,
1007        '_PUB');
1008   END DELETE_TPA_RELTV;
1009 
1010   PROCEDURE DELETE_TPA_RELTV(
1011     p_api_version                  IN NUMBER,
1012     p_init_msg_list                IN VARCHAR2 ,
1013     x_return_status                OUT NOCOPY VARCHAR2,
1014     x_msg_count                    OUT NOCOPY NUMBER,
1015     x_msg_data                     OUT NOCOPY VARCHAR2,
1016     p_talv_evt_tbl                     IN talv_evt_tbl_type) IS
1017     i			         NUMBER := 0;
1018     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1019   BEGIN
1020     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1021     IF p_talv_evt_tbl.COUNT > 0 THEN
1022       i := p_talv_evt_tbl.FIRST;
1023       LOOP
1024         DELETE_TPA_RELTV(
1025 	    p_api_version,
1026 	    p_init_msg_list,
1027 	    l_return_status,
1028 	    x_msg_count,
1029 	    x_msg_data,
1030 	    p_talv_evt_tbl(i));
1031         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1032           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1033             x_return_status := l_return_status;
1034             raise G_EXCEPTION_HALT_VALIDATION;
1035           ELSE
1036             x_return_status := l_return_status;
1037           END IF;
1038         END IF;
1039         EXIT WHEN (i = p_talv_evt_tbl.LAST);
1040         i := p_talv_evt_tbl.NEXT(i);
1041       END LOOP;
1042     END IF;
1043   EXCEPTION
1044     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1045       NULL;
1046     WHEN OTHERS THEN
1047       OKC_API.set_message(p_app_name      => g_app_name,
1048                           p_msg_name      => g_unexpected_error,
1049                           p_token1        => g_sqlcode_token,
1050                           p_token1_value  => sqlcode,
1051                           p_token2        => g_sqlerrm_token,
1052                           p_token2_value  => sqlerrm);
1053       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1054   END DELETE_TPA_RELTV;
1055 
1056   PROCEDURE LOCK_TPA_RELTV(
1057     p_api_version	    IN NUMBER,
1058     p_init_msg_list         IN VARCHAR2 ,
1059     x_return_status         OUT NOCOPY VARCHAR2,
1060     x_msg_count             OUT NOCOPY NUMBER,
1061     x_msg_data              OUT NOCOPY VARCHAR2,
1062     p_talv_evt_rec		    IN talv_evt_rec_type) IS
1063   BEGIN
1064     OKC_TIME_PVT.LOCK_TPA_RELTV(
1065     p_api_version,
1066     p_init_msg_list,
1067     x_return_status,
1068     x_msg_count,
1069     x_msg_data,
1070     p_talv_evt_rec);
1071   END LOCK_TPA_RELTV;
1072 
1073   PROCEDURE LOCK_TPA_RELTV(
1074     p_api_version                  IN NUMBER,
1075     p_init_msg_list                IN VARCHAR2 ,
1076     x_return_status                OUT NOCOPY VARCHAR2,
1077     x_msg_count                    OUT NOCOPY NUMBER,
1078     x_msg_data                     OUT NOCOPY VARCHAR2,
1079     p_talv_evt_tbl                     IN talv_evt_tbl_type) IS
1080     i			         NUMBER := 0;
1081     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1082   BEGIN
1083     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1084     IF p_talv_evt_tbl.COUNT > 0 THEN
1085       i := p_talv_evt_tbl.FIRST;
1086       LOOP
1087         LOCK_TPA_RELTV(
1088 	    p_api_version,
1089 	    p_init_msg_list,
1090 	    l_return_status,
1091 	    x_msg_count,
1092 	    x_msg_data,
1093 	    p_talv_evt_tbl(i));
1094         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1095           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1096             x_return_status := l_return_status;
1097             raise G_EXCEPTION_HALT_VALIDATION;
1098           ELSE
1099             x_return_status := l_return_status;
1100           END IF;
1101         END IF;
1102         EXIT WHEN (i = p_talv_evt_tbl.LAST);
1103         i := p_talv_evt_tbl.NEXT(i);
1104       END LOOP;
1105     END IF;
1106   EXCEPTION
1107     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1108       NULL;
1109     WHEN OTHERS THEN
1110       OKC_API.set_message(p_app_name      => g_app_name,
1111                           p_msg_name      => g_unexpected_error,
1112                           p_token1        => g_sqlcode_token,
1113                           p_token1_value  => sqlcode,
1114                           p_token2        => g_sqlerrm_token,
1115                           p_token2_value  => sqlerrm);
1116       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1117   END LOCK_TPA_RELTV;
1118 
1119   PROCEDURE VALID_TPA_RELTV(
1120     p_api_version	    IN NUMBER,
1121     p_init_msg_list         IN VARCHAR2 ,
1122     x_return_status         OUT NOCOPY VARCHAR2,
1123     x_msg_count             OUT NOCOPY NUMBER,
1124     x_msg_data              OUT NOCOPY VARCHAR2,
1125     p_talv_evt_rec		    IN talv_evt_rec_type) IS
1126   BEGIN
1127     OKC_TIME_PVT.VALID_TPA_RELTV(
1128     p_api_version,
1129     p_init_msg_list,
1130     x_return_status,
1131     x_msg_count,
1132     x_msg_data,
1133     p_talv_evt_rec);
1134   END VALID_TPA_RELTV;
1135 
1136   PROCEDURE VALID_TPA_RELTV(
1137     p_api_version                  IN NUMBER,
1138     p_init_msg_list                IN VARCHAR2 ,
1139     x_return_status                OUT NOCOPY VARCHAR2,
1140     x_msg_count                    OUT NOCOPY NUMBER,
1141     x_msg_data                     OUT NOCOPY VARCHAR2,
1142     p_talv_evt_tbl                     IN talv_evt_tbl_type) IS
1143     i			         NUMBER := 0;
1144     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1145   BEGIN
1146     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1147     IF p_talv_evt_tbl.COUNT > 0 THEN
1148       i := p_talv_evt_tbl.FIRST;
1149       LOOP
1150         VALID_TPA_RELTV(
1151 	    p_api_version,
1152 	    p_init_msg_list,
1153 	    l_return_status,
1154 	    x_msg_count,
1155 	    x_msg_data,
1156 	    p_talv_evt_tbl(i));
1157         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1158           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1159             x_return_status := l_return_status;
1160             raise G_EXCEPTION_HALT_VALIDATION;
1161           ELSE
1162             x_return_status := l_return_status;
1163           END IF;
1164         END IF;
1165         EXIT WHEN (i = p_talv_evt_tbl.LAST);
1166         i := p_talv_evt_tbl.NEXT(i);
1167       END LOOP;
1168     END IF;
1169   EXCEPTION
1170     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1171       NULL;
1172     WHEN OTHERS THEN
1173       OKC_API.set_message(p_app_name      => g_app_name,
1174                           p_msg_name      => g_unexpected_error,
1175                           p_token1        => g_sqlcode_token,
1176                           p_token1_value  => sqlcode,
1177                           p_token2        => g_sqlerrm_token,
1178                           p_token2_value  => sqlerrm);
1179       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1180   END VALID_TPA_RELTV;
1181 
1182  --------------------------------------------------------------------------
1183 ---The following procedures cater to handling of OKC_TIME_TPA_VALUE
1184  --------------------------------------------------------------------------
1185 
1186   FUNCTION migrate_tavv(p_tavv_rec1 IN tavv_rec_type,
1187                         p_tavv_rec2 IN tavv_rec_type)
1188     RETURN tavv_rec_type IS
1189     l_tavv_rec tavv_rec_type;
1190   BEGIN
1191     l_tavv_rec.id                    := p_tavv_rec1.id;
1192     l_tavv_rec.object_version_number := p_tavv_rec1.object_version_number;
1193     l_tavv_rec.created_by            := p_tavv_rec1.created_by;
1194     l_tavv_rec.creation_date         := p_tavv_rec1.creation_date;
1195     l_tavv_rec.last_updated_by       := p_tavv_rec1.last_updated_by;
1196     l_tavv_rec.last_update_date      := p_tavv_rec1.last_update_date;
1197     l_tavv_rec.last_update_login     := p_tavv_rec1.last_update_login;
1198     l_tavv_rec.tze_id   := p_tavv_rec2.tze_id;
1199     l_tavv_rec.sfwt_flag             := p_tavv_rec2.sfwt_flag;
1200     l_tavv_rec.tve_id_generated_by   := p_tavv_rec2.tve_id_generated_by;
1201     l_tavv_rec.tve_id_limited        := p_tavv_rec2.tve_id_limited;
1202     l_tavv_rec.dnz_chr_id         := p_tavv_rec2.dnz_chr_id;
1203     l_tavv_rec.datetime              := p_tavv_rec2.datetime;
1204     l_tavv_rec.spn_id                := p_tavv_rec2.spn_id;
1205     l_tavv_rec.short_description     := p_tavv_rec2.short_description;
1206     l_tavv_rec.description           := p_tavv_rec2.description;
1207     l_tavv_rec.comments              := p_tavv_rec2.comments;
1208     l_tavv_rec.attribute_category    := p_tavv_rec2.attribute_category;
1209     l_tavv_rec.attribute1            := p_tavv_rec2.attribute1;
1210     l_tavv_rec.attribute2            := p_tavv_rec2.attribute2;
1211     l_tavv_rec.attribute3            := p_tavv_rec2.attribute3;
1212     l_tavv_rec.attribute4            := p_tavv_rec2.attribute4;
1213     l_tavv_rec.attribute5            := p_tavv_rec2.attribute5;
1214     l_tavv_rec.attribute6            := p_tavv_rec2.attribute6;
1215     l_tavv_rec.attribute7            := p_tavv_rec2.attribute7;
1216     l_tavv_rec.attribute8            := p_tavv_rec2.attribute8;
1217     l_tavv_rec.attribute9            := p_tavv_rec2.attribute9;
1218     l_tavv_rec.attribute10           := p_tavv_rec2.attribute10;
1219     l_tavv_rec.attribute11           := p_tavv_rec2.attribute11;
1220     l_tavv_rec.attribute12           := p_tavv_rec2.attribute12;
1221     l_tavv_rec.attribute13           := p_tavv_rec2.attribute13;
1222     l_tavv_rec.attribute14           := p_tavv_rec2.attribute14;
1223     l_tavv_rec.attribute15           := p_tavv_rec2.attribute15;
1224     RETURN (l_tavv_rec);
1225   END migrate_tavv;
1226 
1227   FUNCTION migrate_tavv(p_tavv_tbl1 IN tavv_tbl_type,
1228     p_tavv_tbl2 IN tavv_tbl_type)
1229     RETURN tavv_tbl_type IS
1230     l_tavv_tbl tavv_tbl_type;
1231     i NUMBER := 0;
1232     j NUMBER := 0;
1233   BEGIN
1234     -- If the user hook deleted some records or added some new records in the table,
1235     -- discard the change and simply copy the original table.
1236     IF p_tavv_tbl1.COUNT <> p_tavv_tbl2.COUNT THEN
1237       l_tavv_tbl := p_tavv_tbl1;
1238     ELSE
1239       IF (p_tavv_tbl1.COUNT > 0) THEN
1240         i := p_tavv_tbl1.FIRST;
1241         j := p_tavv_tbl2.FIRST;
1242         LOOP
1243           l_tavv_tbl(i) := migrate_tavv(p_tavv_tbl1(i), p_tavv_tbl2(j));
1244           EXIT WHEN (i = p_tavv_tbl1.LAST);
1245           i := p_tavv_tbl1.NEXT(i);
1246           j := p_tavv_tbl2.NEXT(j);
1247         END LOOP;
1248       END IF;
1249     END IF;
1250     RETURN (l_tavv_tbl);
1251   END migrate_tavv;
1252 
1253   PROCEDURE CREATE_TPA_VALUE(
1254     p_api_version	    IN NUMBER,
1255     p_init_msg_list         IN VARCHAR2 ,
1256     x_return_status         OUT NOCOPY VARCHAR2,
1257     x_msg_count             OUT NOCOPY NUMBER,
1258     x_msg_data              OUT NOCOPY VARCHAR2,
1259     p_tavv_rec	            IN tavv_rec_type,
1260     x_tavv_rec              OUT NOCOPY tavv_rec_type) IS
1261     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TPA_VALUE';
1262     l_return_status	  VARCHAR2(1);
1263     l_tavv_rec     tavv_rec_type := p_tavv_rec;
1264   BEGIN
1265     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1266 					      p_init_msg_list,
1267 					      '_PUB',
1268                                         x_return_status);
1269     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1270       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1271     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1272       raise OKC_API.G_EXCEPTION_ERROR;
1273     END IF;
1274     -- Call user hook for BEFORE
1275     g_tavv_rec := l_tavv_rec;
1276     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1277     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1278       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1279     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1280       raise OKC_API.G_EXCEPTION_ERROR;
1281     END IF;
1282     l_tavv_rec := migrate_tavv(l_tavv_rec, g_tavv_rec);
1283     OKC_TIME_PVT.CREATE_TPA_VALUE(
1284        p_api_version,
1285        p_init_msg_list,
1286        x_return_status,
1287        x_msg_count,
1288        x_msg_data,
1289        p_tavv_rec,
1290        x_tavv_rec);
1291     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1292       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1293     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1294       raise OKC_API.G_EXCEPTION_ERROR;
1295     END IF;
1296 
1297     -- Call user hook for AFTER
1298     g_tavv_rec := x_tavv_rec;
1299     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1300     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1301       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1302     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1303       raise OKC_API.G_EXCEPTION_ERROR;
1304     END IF;
1305     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1306   EXCEPTION
1307     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1308       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1309       (l_api_name,
1310        G_PKG_NAME,
1311        'OKC_API.G_RET_STS_ERROR',
1312        x_msg_count,
1313        x_msg_data,
1314        '_PUB');
1315     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1316       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1317       (l_api_name,
1318        G_PKG_NAME,
1319        'OKC_API.G_RET_STS_UNEXP_ERROR',
1320        x_msg_count,
1321        x_msg_data,
1322        '_PUB');
1323     WHEN OTHERS THEN
1324       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1325       (l_api_name,
1326        G_PKG_NAME,
1327        'OTHERS',
1328        x_msg_count,
1329        x_msg_data,
1330        '_PUB');
1331   END CREATE_TPA_VALUE;
1332 
1333   PROCEDURE CREATE_TPA_VALUE(
1334     p_api_version                  IN NUMBER,
1335     p_init_msg_list                IN VARCHAR2 ,
1336     x_return_status                OUT NOCOPY VARCHAR2,
1337     x_msg_count                    OUT NOCOPY NUMBER,
1338     x_msg_data                     OUT NOCOPY VARCHAR2,
1339     p_tavv_tbl                     IN tavv_tbl_type,
1340     x_tavv_tbl                     OUT NOCOPY tavv_tbl_type) IS
1341     i			         NUMBER := 0;
1342     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1343   BEGIN
1344     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1345     IF p_tavv_tbl.COUNT > 0 THEN
1346       i := p_tavv_tbl.FIRST;
1347       LOOP
1348         CREATE_TPA_VALUE(
1349 	    p_api_version,
1350 	    p_init_msg_list,
1351 	    l_return_status,
1352 	    x_msg_count,
1353 	    x_msg_data,
1354 	    p_tavv_tbl(i),
1355 	    x_tavv_tbl(i));
1356         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1357           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1358             x_return_status := l_return_status;
1359             raise G_EXCEPTION_HALT_VALIDATION;
1360           ELSE
1361             x_return_status := l_return_status;
1362           END IF;
1363         END IF;
1364         EXIT WHEN (i = p_tavv_tbl.LAST);
1365         i := p_tavv_tbl.NEXT(i);
1366       END LOOP;
1367     END IF;
1368   EXCEPTION
1369     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1370       NULL;
1371     WHEN OTHERS THEN
1372       OKC_API.set_message(p_app_name      => g_app_name,
1373                           p_msg_name      => g_unexpected_error,
1374                           p_token1        => g_sqlcode_token,
1375                           p_token1_value  => sqlcode,
1376                           p_token2        => g_sqlerrm_token,
1377                           p_token2_value  => sqlerrm);
1378       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1379   END CREATE_TPA_VALUE;
1380 
1381   PROCEDURE UPDATE_TPA_VALUE(
1382     p_api_version	    IN NUMBER,
1383     p_init_msg_list         IN VARCHAR2 ,
1384     x_return_status         OUT NOCOPY VARCHAR2,
1385     x_msg_count             OUT NOCOPY NUMBER,
1386     x_msg_data              OUT NOCOPY VARCHAR2,
1387     p_tavv_rec	            IN tavv_rec_type,
1388     x_tavv_rec              OUT NOCOPY tavv_rec_type) IS
1389     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TPA_VALUE';
1390     l_return_status	  VARCHAR2(1);
1391     l_tavv_rec     tavv_rec_type := p_tavv_rec;
1392   BEGIN
1393     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1394 					      p_init_msg_list,
1395 					      '_PUB',
1396                                         x_return_status);
1397     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1398       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1399     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1400       raise OKC_API.G_EXCEPTION_ERROR;
1401     END IF;
1402     -- Call user hook for BEFORE
1403     g_tavv_rec := l_tavv_rec;
1404     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1405     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1406       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1407     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1408       raise OKC_API.G_EXCEPTION_ERROR;
1409     END IF;
1410     l_tavv_rec := migrate_tavv(l_tavv_rec, g_tavv_rec);
1411     OKC_TIME_PVT.UPDATE_TPA_VALUE(
1412        p_api_version,
1413        p_init_msg_list,
1414        x_return_status,
1415        x_msg_count,
1416        x_msg_data,
1417        p_tavv_rec,
1418        x_tavv_rec);
1419     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
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;
1423     END IF;
1424 
1425     -- Call user hook for AFTER
1426     g_tavv_rec := x_tavv_rec;
1427     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1428     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1429       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1430     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1431       raise OKC_API.G_EXCEPTION_ERROR;
1432     END IF;
1433     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1434   EXCEPTION
1435     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1436       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1437       (l_api_name,
1438        G_PKG_NAME,
1439        'OKC_API.G_RET_STS_ERROR',
1440        x_msg_count,
1441        x_msg_data,
1442        '_PUB');
1443     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1444       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1445       (l_api_name,
1446        G_PKG_NAME,
1447        'OKC_API.G_RET_STS_UNEXP_ERROR',
1448        x_msg_count,
1449        x_msg_data,
1450        '_PUB');
1451     WHEN OTHERS THEN
1452       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1453       (l_api_name,
1454        G_PKG_NAME,
1455        'OTHERS',
1456        x_msg_count,
1457        x_msg_data,
1458        '_PUB');
1459   END UPDATE_TPA_VALUE;
1460 
1461   PROCEDURE UPDATE_TPA_VALUE(
1462     p_api_version                  IN NUMBER,
1463     p_init_msg_list                IN VARCHAR2 ,
1464     x_return_status                OUT NOCOPY VARCHAR2,
1465     x_msg_count                    OUT NOCOPY NUMBER,
1466     x_msg_data                     OUT NOCOPY VARCHAR2,
1467     p_tavv_tbl                     IN tavv_tbl_type,
1468     x_tavv_tbl                     OUT NOCOPY tavv_tbl_type) IS
1469     i			         NUMBER := 0;
1470     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1471   BEGIN
1472     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1473     IF p_tavv_tbl.COUNT > 0 THEN
1474       i := p_tavv_tbl.FIRST;
1475       LOOP
1476         UPDATE_TPA_VALUE(
1477 	    p_api_version,
1478 	    p_init_msg_list,
1479 	    l_return_status,
1480 	    x_msg_count,
1481 	    x_msg_data,
1482 	    p_tavv_tbl(i),
1483 	    x_tavv_tbl(i));
1484         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1485           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1486             x_return_status := l_return_status;
1487             raise G_EXCEPTION_HALT_VALIDATION;
1488           ELSE
1489             x_return_status := l_return_status;
1490           END IF;
1491         END IF;
1492         EXIT WHEN (i = p_tavv_tbl.LAST);
1493         i := p_tavv_tbl.NEXT(i);
1494       END LOOP;
1495     END IF;
1496   EXCEPTION
1497     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1498       NULL;
1499     WHEN OTHERS THEN
1500       OKC_API.set_message(p_app_name      => g_app_name,
1501                           p_msg_name      => g_unexpected_error,
1502                           p_token1        => g_sqlcode_token,
1503                           p_token1_value  => sqlcode,
1504                           p_token2        => g_sqlerrm_token,
1505                           p_token2_value  => sqlerrm);
1506       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1507   END UPDATE_TPA_VALUE;
1508 
1509   PROCEDURE DELETE_TPA_VALUE(
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_tavv_rec              IN tavv_rec_type) IS
1516     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TPA_VALUE';
1517     l_return_status	  VARCHAR2(1);
1518     l_tavv_rec     tavv_rec_type := p_tavv_rec;
1519   BEGIN
1520     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1521 					      p_init_msg_list,
1522 					      '_PUB',
1523                                         x_return_status);
1524     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1525       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1526     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1527       raise OKC_API.G_EXCEPTION_ERROR;
1528     END IF;
1529     -- Call user hook for BEFORE
1530     g_tavv_rec := l_tavv_rec;
1531     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1532     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1533       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1534     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1535       raise OKC_API.G_EXCEPTION_ERROR;
1536     END IF;
1537     OKC_TIME_PVT.DELETE_TPA_VALUE(
1538        p_api_version,
1539        p_init_msg_list,
1540        x_return_status,
1541        x_msg_count,
1542        x_msg_data,
1543        p_tavv_rec);
1544     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1545       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1546     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1547       raise OKC_API.G_EXCEPTION_ERROR;
1548     END IF;
1549 
1550     -- Call user hook for AFTER
1551     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1552     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1553       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1554     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1555       raise OKC_API.G_EXCEPTION_ERROR;
1556     END IF;
1557     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1558   EXCEPTION
1559     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1560       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1561       (l_api_name,
1562        G_PKG_NAME,
1563        'OKC_API.G_RET_STS_ERROR',
1564        x_msg_count,
1565        x_msg_data,
1566        '_PUB');
1567     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1568       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1569       (l_api_name,
1570        G_PKG_NAME,
1571        'OKC_API.G_RET_STS_UNEXP_ERROR',
1572        x_msg_count,
1573        x_msg_data,
1574        '_PUB');
1575     WHEN OTHERS THEN
1576       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1577       (l_api_name,
1578        G_PKG_NAME,
1579        'OTHERS',
1580        x_msg_count,
1581        x_msg_data,
1582        '_PUB');
1583   END DELETE_TPA_VALUE;
1584 
1585   PROCEDURE DELETE_TPA_VALUE(
1586     p_api_version                  IN NUMBER,
1587     p_init_msg_list                IN VARCHAR2 ,
1588     x_return_status                OUT NOCOPY VARCHAR2,
1589     x_msg_count                    OUT NOCOPY NUMBER,
1590     x_msg_data                     OUT NOCOPY VARCHAR2,
1591     p_tavv_tbl                     IN tavv_tbl_type) IS
1592     i			         NUMBER := 0;
1593     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1594   BEGIN
1595     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1596     IF p_tavv_tbl.COUNT > 0 THEN
1597       i := p_tavv_tbl.FIRST;
1598       LOOP
1599         DELETE_TPA_VALUE(
1600 	    p_api_version,
1601 	    p_init_msg_list,
1602 	    l_return_status,
1603 	    x_msg_count,
1604 	    x_msg_data,
1605 	    p_tavv_tbl(i));
1606         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1607           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1608             x_return_status := l_return_status;
1609             raise G_EXCEPTION_HALT_VALIDATION;
1610           ELSE
1611             x_return_status := l_return_status;
1612           END IF;
1613         END IF;
1614         EXIT WHEN (i = p_tavv_tbl.LAST);
1615         i := p_tavv_tbl.NEXT(i);
1616       END LOOP;
1617     END IF;
1618   EXCEPTION
1619     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1620       NULL;
1621     WHEN OTHERS THEN
1622       OKC_API.set_message(p_app_name      => g_app_name,
1623                           p_msg_name      => g_unexpected_error,
1624                           p_token1        => g_sqlcode_token,
1625                           p_token1_value  => sqlcode,
1626                           p_token2        => g_sqlerrm_token,
1627                           p_token2_value  => sqlerrm);
1628       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1629   END DELETE_TPA_VALUE;
1630 
1631   PROCEDURE LOCK_TPA_VALUE(
1632     p_api_version	    IN NUMBER,
1633     p_init_msg_list         IN VARCHAR2 ,
1634     x_return_status         OUT NOCOPY VARCHAR2,
1635     x_msg_count             OUT NOCOPY NUMBER,
1636     x_msg_data              OUT NOCOPY VARCHAR2,
1637     p_tavv_rec		    IN tavv_rec_type) IS
1638   BEGIN
1639     OKC_TIME_PVT.LOCK_TPA_VALUE(
1640     p_api_version,
1641     p_init_msg_list,
1642     x_return_status,
1643     x_msg_count,
1644     x_msg_data,
1645     p_tavv_rec);
1646   END LOCK_TPA_VALUE;
1647 
1648   PROCEDURE LOCK_TPA_VALUE(
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_tavv_tbl                     IN tavv_tbl_type) IS
1655     i			         NUMBER := 0;
1656     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1657   BEGIN
1658     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1659     IF p_tavv_tbl.COUNT > 0 THEN
1660       i := p_tavv_tbl.FIRST;
1661       LOOP
1662         LOCK_TPA_VALUE(
1663 	    p_api_version,
1664 	    p_init_msg_list,
1665 	    l_return_status,
1666 	    x_msg_count,
1667 	    x_msg_data,
1668 	    p_tavv_tbl(i));
1669         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1670           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1671             x_return_status := l_return_status;
1672             raise G_EXCEPTION_HALT_VALIDATION;
1673           ELSE
1674             x_return_status := l_return_status;
1675           END IF;
1676         END IF;
1677         EXIT WHEN (i = p_tavv_tbl.LAST);
1678         i := p_tavv_tbl.NEXT(i);
1679       END LOOP;
1680     END IF;
1681   EXCEPTION
1682     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1683       NULL;
1684     WHEN OTHERS THEN
1685       OKC_API.set_message(p_app_name      => g_app_name,
1686                           p_msg_name      => g_unexpected_error,
1687                           p_token1        => g_sqlcode_token,
1688                           p_token1_value  => sqlcode,
1689                           p_token2        => g_sqlerrm_token,
1690                           p_token2_value  => sqlerrm);
1691       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1692   END LOCK_TPA_VALUE;
1693 
1694   PROCEDURE VALID_TPA_VALUE(
1695     p_api_version	    IN NUMBER,
1696     p_init_msg_list         IN VARCHAR2 ,
1697     x_return_status         OUT NOCOPY VARCHAR2,
1698     x_msg_count             OUT NOCOPY NUMBER,
1699     x_msg_data              OUT NOCOPY VARCHAR2,
1700     p_tavv_rec		    IN tavv_rec_type) IS
1701   BEGIN
1702     OKC_TIME_PVT.VALID_TPA_VALUE(
1703     p_api_version,
1704     p_init_msg_list,
1705     x_return_status,
1706     x_msg_count,
1707     x_msg_data,
1708     p_tavv_rec);
1709   END VALID_TPA_VALUE;
1710 
1711   PROCEDURE VALID_TPA_VALUE(
1712     p_api_version                  IN NUMBER,
1713     p_init_msg_list                IN VARCHAR2 ,
1714     x_return_status                OUT NOCOPY VARCHAR2,
1715     x_msg_count                    OUT NOCOPY NUMBER,
1716     x_msg_data                     OUT NOCOPY VARCHAR2,
1717     p_tavv_tbl                     IN tavv_tbl_type) IS
1718     i			         NUMBER := 0;
1719     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1720   BEGIN
1721     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1722     IF p_tavv_tbl.COUNT > 0 THEN
1723       i := p_tavv_tbl.FIRST;
1724       LOOP
1725         VALID_TPA_VALUE(
1726 	    p_api_version,
1727 	    p_init_msg_list,
1728 	    l_return_status,
1729 	    x_msg_count,
1730 	    x_msg_data,
1731 	    p_tavv_tbl(i));
1732         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1733           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1734             x_return_status := l_return_status;
1735             raise G_EXCEPTION_HALT_VALIDATION;
1736           ELSE
1737             x_return_status := l_return_status;
1738           END IF;
1739         END IF;
1740         EXIT WHEN (i = p_tavv_tbl.LAST);
1741         i := p_tavv_tbl.NEXT(i);
1742       END LOOP;
1743     END IF;
1744   EXCEPTION
1745     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1746       NULL;
1747     WHEN OTHERS THEN
1748       OKC_API.set_message(p_app_name      => g_app_name,
1749                           p_msg_name      => g_unexpected_error,
1750                           p_token1        => g_sqlcode_token,
1751                           p_token1_value  => sqlcode,
1752                           p_token2        => g_sqlerrm_token,
1753                           p_token2_value  => sqlerrm);
1754       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1755   END VALID_TPA_VALUE;
1756 
1757  --------------------------------------------------------------------------
1758 ---The following procedures cater to handling of OKC_TIME_TPG_DELIMITED
1759  --------------------------------------------------------------------------
1760 
1761   FUNCTION migrate_tgdv(p_tgdv_ext_rec1 IN tgdv_ext_rec_type,
1762                         p_tgdv_ext_rec2 IN tgdv_ext_rec_type)
1763     RETURN tgdv_ext_rec_type IS
1764     l_tgdv_ext_rec tgdv_ext_rec_type;
1765   BEGIN
1766     l_tgdv_ext_rec.id                    := p_tgdv_ext_rec1.id;
1767     l_tgdv_ext_rec.object_version_number := p_tgdv_ext_rec1.object_version_number;
1768     l_tgdv_ext_rec.created_by            := p_tgdv_ext_rec1.created_by;
1769     l_tgdv_ext_rec.creation_date         := p_tgdv_ext_rec1.creation_date;
1770     l_tgdv_ext_rec.last_updated_by       := p_tgdv_ext_rec1.last_updated_by;
1771     l_tgdv_ext_rec.last_update_date      := p_tgdv_ext_rec1.last_update_date;
1772     l_tgdv_ext_rec.last_update_login     := p_tgdv_ext_rec1.last_update_login;
1773     l_tgdv_ext_rec.sfwt_flag             := p_tgdv_ext_rec2.sfwt_flag;
1774     l_tgdv_ext_rec.tve_id_limited        := p_tgdv_ext_rec2.tve_id_limited;
1775     l_tgdv_ext_rec.limited_start_date        := p_tgdv_ext_rec2.limited_start_date;
1776     l_tgdv_ext_rec.limited_end_date        := p_tgdv_ext_rec2.limited_end_date;
1777     l_tgdv_ext_rec.tze_id := p_tgdv_ext_rec2.tze_id;
1778     l_tgdv_ext_rec.dnz_chr_id         := p_tgdv_ext_rec2.dnz_chr_id;
1779     l_tgdv_ext_rec.month                 := p_tgdv_ext_rec2.month;
1780     l_tgdv_ext_rec.day                   := p_tgdv_ext_rec2.day;
1781     l_tgdv_ext_rec.day_of_week           := p_tgdv_ext_rec2.day_of_week;
1782     l_tgdv_ext_rec.minute                := p_tgdv_ext_rec2.minute;
1783     l_tgdv_ext_rec.hour                  := p_tgdv_ext_rec2.hour;
1784     l_tgdv_ext_rec.second                := p_tgdv_ext_rec2.second;
1785     l_tgdv_ext_rec.nth                := p_tgdv_ext_rec2.nth;
1786     l_tgdv_ext_rec.short_description     := p_tgdv_ext_rec2.short_description;
1787     l_tgdv_ext_rec.description           := p_tgdv_ext_rec2.description;
1788     l_tgdv_ext_rec.comments              := p_tgdv_ext_rec2.comments;
1789     l_tgdv_ext_rec.attribute_category    := p_tgdv_ext_rec2.attribute_category;
1790     l_tgdv_ext_rec.attribute1            := p_tgdv_ext_rec2.attribute1;
1791     l_tgdv_ext_rec.attribute2            := p_tgdv_ext_rec2.attribute2;
1792     l_tgdv_ext_rec.attribute3            := p_tgdv_ext_rec2.attribute3;
1793     l_tgdv_ext_rec.attribute4            := p_tgdv_ext_rec2.attribute4;
1794     l_tgdv_ext_rec.attribute5            := p_tgdv_ext_rec2.attribute5;
1795     l_tgdv_ext_rec.attribute6            := p_tgdv_ext_rec2.attribute6;
1796     l_tgdv_ext_rec.attribute7            := p_tgdv_ext_rec2.attribute7;
1797     l_tgdv_ext_rec.attribute8            := p_tgdv_ext_rec2.attribute8;
1798     l_tgdv_ext_rec.attribute9            := p_tgdv_ext_rec2.attribute9;
1799     l_tgdv_ext_rec.attribute10           := p_tgdv_ext_rec2.attribute10;
1800     l_tgdv_ext_rec.attribute11           := p_tgdv_ext_rec2.attribute11;
1801     l_tgdv_ext_rec.attribute12           := p_tgdv_ext_rec2.attribute12;
1802     l_tgdv_ext_rec.attribute13           := p_tgdv_ext_rec2.attribute13;
1803     l_tgdv_ext_rec.attribute14           := p_tgdv_ext_rec2.attribute14;
1804     l_tgdv_ext_rec.attribute15           := p_tgdv_ext_rec2.attribute15;
1805     RETURN (l_tgdv_ext_rec);
1806   END migrate_tgdv;
1807 
1808   FUNCTION migrate_tgdv(p_tgdv_ext_tbl1 IN tgdv_ext_tbl_type,
1809     p_tgdv_ext_tbl2 IN tgdv_ext_tbl_type)
1810     RETURN tgdv_ext_tbl_type IS
1811     l_tgdv_ext_tbl tgdv_ext_tbl_type;
1812     i NUMBER := 0;
1813     j NUMBER := 0;
1814   BEGIN
1815     -- If the user hook deleted some records or added some new records in the table,
1816     -- discard the change and simply copy the original table.
1817     IF p_tgdv_ext_tbl1.COUNT <> p_tgdv_ext_tbl2.COUNT THEN
1818       l_tgdv_ext_tbl := p_tgdv_ext_tbl1;
1819     ELSE
1820       IF (p_tgdv_ext_tbl1.COUNT > 0) THEN
1821         i := p_tgdv_ext_tbl1.FIRST;
1822         j := p_tgdv_ext_tbl2.FIRST;
1823         LOOP
1824           l_tgdv_ext_tbl(i) := migrate_tgdv(p_tgdv_ext_tbl1(i), p_tgdv_ext_tbl2(j));
1825           EXIT WHEN (i = p_tgdv_ext_tbl1.LAST);
1826           i := p_tgdv_ext_tbl1.NEXT(i);
1827           j := p_tgdv_ext_tbl2.NEXT(j);
1828         END LOOP;
1829       END IF;
1830     END IF;
1831     RETURN (l_tgdv_ext_tbl);
1832   END migrate_tgdv;
1833 
1834   PROCEDURE CREATE_TPG_DELIMITED(
1835     p_api_version	    IN NUMBER,
1836     p_init_msg_list         IN VARCHAR2 ,
1837     x_return_status         OUT NOCOPY VARCHAR2,
1838     x_msg_count             OUT NOCOPY NUMBER,
1839     x_msg_data              OUT NOCOPY VARCHAR2,
1840     p_tgdv_ext_rec	            IN tgdv_ext_rec_type,
1841     x_tgdv_ext_rec              OUT NOCOPY tgdv_ext_rec_type) IS
1842     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TPG_DELIMITED';
1843     l_return_status	  VARCHAR2(1);
1844     l_tgdv_ext_rec     tgdv_ext_rec_type := p_tgdv_ext_rec;
1845   BEGIN
1846     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1847 					      p_init_msg_list,
1848 					      '_PUB',
1849                                         x_return_status);
1850     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1851       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1852     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1853       raise OKC_API.G_EXCEPTION_ERROR;
1854     END IF;
1855     -- Call user hook for BEFORE
1856     g_tgdv_ext_rec := l_tgdv_ext_rec;
1857     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1858     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1859       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1860     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1861       raise OKC_API.G_EXCEPTION_ERROR;
1862     END IF;
1863     l_tgdv_ext_rec := migrate_tgdv(l_tgdv_ext_rec, g_tgdv_ext_rec);
1864     OKC_TIME_PVT.CREATE_TPG_DELIMITED(
1865        p_api_version,
1866        p_init_msg_list,
1867        x_return_status,
1868        x_msg_count,
1869        x_msg_data,
1870        p_tgdv_ext_rec,
1871        x_tgdv_ext_rec);
1872     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1873       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1874     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1875       raise OKC_API.G_EXCEPTION_ERROR;
1876     END IF;
1877 
1878     -- Call user hook for AFTER
1879     g_tgdv_ext_rec := x_tgdv_ext_rec;
1880     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
1881     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1882       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1883     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1884       raise OKC_API.G_EXCEPTION_ERROR;
1885     END IF;
1886     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1887   EXCEPTION
1888     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1889       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1890       (l_api_name,
1891        G_PKG_NAME,
1892        'OKC_API.G_RET_STS_ERROR',
1893        x_msg_count,
1894        x_msg_data,
1895        '_PUB');
1896     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1897       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1898       (l_api_name,
1899        G_PKG_NAME,
1900        'OKC_API.G_RET_STS_UNEXP_ERROR',
1901        x_msg_count,
1902        x_msg_data,
1903        '_PUB');
1904     WHEN OTHERS THEN
1905       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1906       (l_api_name,
1907        G_PKG_NAME,
1908        'OTHERS',
1909        x_msg_count,
1910        x_msg_data,
1911        '_PUB');
1912   END CREATE_TPG_DELIMITED;
1913 
1914   PROCEDURE CREATE_TPG_DELIMITED(
1915     p_api_version                  IN NUMBER,
1916     p_init_msg_list                IN VARCHAR2 ,
1917     x_return_status                OUT NOCOPY VARCHAR2,
1918     x_msg_count                    OUT NOCOPY NUMBER,
1919     x_msg_data                     OUT NOCOPY VARCHAR2,
1920     p_tgdv_ext_tbl                     IN tgdv_ext_tbl_type,
1921     x_tgdv_ext_tbl                     OUT NOCOPY tgdv_ext_tbl_type) IS
1922     i			         NUMBER := 0;
1923     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1924   BEGIN
1925     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1926     IF p_tgdv_ext_tbl.COUNT > 0 THEN
1927       i := p_tgdv_ext_tbl.FIRST;
1928       LOOP
1929         CREATE_TPG_DELIMITED(
1930 	    p_api_version,
1931 	    p_init_msg_list,
1932 	    l_return_status,
1933 	    x_msg_count,
1934 	    x_msg_data,
1935 	    p_tgdv_ext_tbl(i),
1936 	    x_tgdv_ext_tbl(i));
1937         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1938           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1939             x_return_status := l_return_status;
1940             raise G_EXCEPTION_HALT_VALIDATION;
1941           ELSE
1942             x_return_status := l_return_status;
1943           END IF;
1944         END IF;
1945         EXIT WHEN (i = p_tgdv_ext_tbl.LAST);
1946         i := p_tgdv_ext_tbl.NEXT(i);
1947       END LOOP;
1948     END IF;
1949   EXCEPTION
1950     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1951       NULL;
1952     WHEN OTHERS THEN
1953       OKC_API.set_message(p_app_name      => g_app_name,
1954                           p_msg_name      => g_unexpected_error,
1955                           p_token1        => g_sqlcode_token,
1956                           p_token1_value  => sqlcode,
1957                           p_token2        => g_sqlerrm_token,
1958                           p_token2_value  => sqlerrm);
1959       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1960   END CREATE_TPG_DELIMITED;
1961 
1962   PROCEDURE UPDATE_TPG_DELIMITED(
1963     p_api_version	    IN NUMBER,
1964     p_init_msg_list         IN VARCHAR2 ,
1965     x_return_status         OUT NOCOPY VARCHAR2,
1966     x_msg_count             OUT NOCOPY NUMBER,
1967     x_msg_data              OUT NOCOPY VARCHAR2,
1968     p_tgdv_ext_rec	            IN tgdv_ext_rec_type,
1969     x_tgdv_ext_rec              OUT NOCOPY tgdv_ext_rec_type) IS
1970     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TPG_DELIMITED';
1971     l_return_status	  VARCHAR2(1);
1972     l_tgdv_ext_rec     tgdv_ext_rec_type := p_tgdv_ext_rec;
1973   BEGIN
1974     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1975 					      p_init_msg_list,
1976 					      '_PUB',
1977                                         x_return_status);
1978     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1979       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1980     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1981       raise OKC_API.G_EXCEPTION_ERROR;
1982     END IF;
1983     -- Call user hook for BEFORE
1984     g_tgdv_ext_rec := l_tgdv_ext_rec;
1985     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
1986     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1987       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1988     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1989       raise OKC_API.G_EXCEPTION_ERROR;
1990     END IF;
1991     l_tgdv_ext_rec := migrate_tgdv(l_tgdv_ext_rec, g_tgdv_ext_rec);
1992     OKC_TIME_PVT.UPDATE_TPG_DELIMITED(
1993        p_api_version,
1994        p_init_msg_list,
1995        x_return_status,
1996        x_msg_count,
1997        x_msg_data,
1998        p_tgdv_ext_rec,
1999        x_tgdv_ext_rec);
2000     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2001       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2002     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2003       raise OKC_API.G_EXCEPTION_ERROR;
2004     END IF;
2005 
2006     -- Call user hook for AFTER
2007     g_tgdv_ext_rec := x_tgdv_ext_rec;
2008     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2009     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2010       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2011     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2012       raise OKC_API.G_EXCEPTION_ERROR;
2013     END IF;
2014     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2015   EXCEPTION
2016     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2017       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2018       (l_api_name,
2019        G_PKG_NAME,
2020        'OKC_API.G_RET_STS_ERROR',
2021        x_msg_count,
2022        x_msg_data,
2023        '_PUB');
2024     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2025       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2026       (l_api_name,
2027        G_PKG_NAME,
2028        'OKC_API.G_RET_STS_UNEXP_ERROR',
2029        x_msg_count,
2030        x_msg_data,
2031        '_PUB');
2032     WHEN OTHERS THEN
2033       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2034       (l_api_name,
2035        G_PKG_NAME,
2036        'OTHERS',
2037        x_msg_count,
2038        x_msg_data,
2039        '_PUB');
2040   END UPDATE_TPG_DELIMITED;
2041 
2042   PROCEDURE UPDATE_TPG_DELIMITED(
2043     p_api_version                  IN NUMBER,
2044     p_init_msg_list                IN VARCHAR2 ,
2045     x_return_status                OUT NOCOPY VARCHAR2,
2046     x_msg_count                    OUT NOCOPY NUMBER,
2047     x_msg_data                     OUT NOCOPY VARCHAR2,
2048     p_tgdv_ext_tbl                     IN tgdv_ext_tbl_type,
2049     x_tgdv_ext_tbl                     OUT NOCOPY tgdv_ext_tbl_type) IS
2050     i			         NUMBER := 0;
2051     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2052   BEGIN
2053     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2054     IF p_tgdv_ext_tbl.COUNT > 0 THEN
2055       i := p_tgdv_ext_tbl.FIRST;
2056       LOOP
2057         UPDATE_TPG_DELIMITED(
2058 	    p_api_version,
2059 	    p_init_msg_list,
2060 	    l_return_status,
2061 	    x_msg_count,
2062 	    x_msg_data,
2063 	    p_tgdv_ext_tbl(i),
2064 	    x_tgdv_ext_tbl(i));
2065         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2066           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2067             x_return_status := l_return_status;
2068             raise G_EXCEPTION_HALT_VALIDATION;
2069           ELSE
2070             x_return_status := l_return_status;
2071           END IF;
2072         END IF;
2073         EXIT WHEN (i = p_tgdv_ext_tbl.LAST);
2074         i := p_tgdv_ext_tbl.NEXT(i);
2075       END LOOP;
2076     END IF;
2077   EXCEPTION
2078     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2079       NULL;
2080     WHEN OTHERS THEN
2081       OKC_API.set_message(p_app_name      => g_app_name,
2082                           p_msg_name      => g_unexpected_error,
2083                           p_token1        => g_sqlcode_token,
2084                           p_token1_value  => sqlcode,
2085                           p_token2        => g_sqlerrm_token,
2086                           p_token2_value  => sqlerrm);
2087       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2088   END UPDATE_TPG_DELIMITED;
2089 
2090   PROCEDURE DELETE_TPG_DELIMITED(
2091     p_api_version	    IN NUMBER,
2092     p_init_msg_list         IN VARCHAR2 ,
2093     x_return_status         OUT NOCOPY VARCHAR2,
2094     x_msg_count             OUT NOCOPY NUMBER,
2095     x_msg_data              OUT NOCOPY VARCHAR2,
2096     p_tgdv_ext_rec              IN tgdv_ext_rec_type) IS
2097     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TPG_DELIMITED';
2098     l_return_status	  VARCHAR2(1);
2099     l_tgdv_ext_rec     tgdv_ext_rec_type := p_tgdv_ext_rec;
2100   BEGIN
2101     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2102 					      p_init_msg_list,
2103 					      '_PUB',
2104                                         x_return_status);
2105     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2106       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2107     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2108       raise OKC_API.G_EXCEPTION_ERROR;
2109     END IF;
2110     -- Call user hook for BEFORE
2111     g_tgdv_ext_rec := l_tgdv_ext_rec;
2112     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2113     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2114       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2115     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2116       raise OKC_API.G_EXCEPTION_ERROR;
2117     END IF;
2118     OKC_TIME_PVT.DELETE_TPG_DELIMITED(
2119        p_api_version,
2120        p_init_msg_list,
2121        x_return_status,
2122        x_msg_count,
2123        x_msg_data,
2124        p_tgdv_ext_rec);
2125     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2126       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2127     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2128       raise OKC_API.G_EXCEPTION_ERROR;
2129     END IF;
2130 
2131     -- Call user hook for AFTER
2132     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2133     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2134       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2135     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2136       raise OKC_API.G_EXCEPTION_ERROR;
2137     END IF;
2138     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2139   EXCEPTION
2140     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2141       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2142       (l_api_name,
2143        G_PKG_NAME,
2144        'OKC_API.G_RET_STS_ERROR',
2145        x_msg_count,
2146        x_msg_data,
2147        '_PUB');
2148     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2149       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2150       (l_api_name,
2151        G_PKG_NAME,
2152        'OKC_API.G_RET_STS_UNEXP_ERROR',
2153        x_msg_count,
2154        x_msg_data,
2155        '_PUB');
2156     WHEN OTHERS THEN
2157       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2158       (l_api_name,
2159        G_PKG_NAME,
2160        'OTHERS',
2161        x_msg_count,
2162        x_msg_data,
2163        '_PUB');
2164   END DELETE_TPG_DELIMITED;
2165 
2166   PROCEDURE DELETE_TPG_DELIMITED(
2167     p_api_version                  IN NUMBER,
2168     p_init_msg_list                IN VARCHAR2 ,
2169     x_return_status                OUT NOCOPY VARCHAR2,
2170     x_msg_count                    OUT NOCOPY NUMBER,
2171     x_msg_data                     OUT NOCOPY VARCHAR2,
2172     p_tgdv_ext_tbl                     IN tgdv_ext_tbl_type) IS
2173     i			         NUMBER := 0;
2174     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2175   BEGIN
2176     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2177     IF p_tgdv_ext_tbl.COUNT > 0 THEN
2178       i := p_tgdv_ext_tbl.FIRST;
2179       LOOP
2180         DELETE_TPG_DELIMITED(
2181 	    p_api_version,
2182 	    p_init_msg_list,
2183 	    l_return_status,
2184 	    x_msg_count,
2185 	    x_msg_data,
2186 	    p_tgdv_ext_tbl(i));
2187         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2188           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2189             x_return_status := l_return_status;
2190             raise G_EXCEPTION_HALT_VALIDATION;
2191           ELSE
2192             x_return_status := l_return_status;
2193           END IF;
2194         END IF;
2195         EXIT WHEN (i = p_tgdv_ext_tbl.LAST);
2196         i := p_tgdv_ext_tbl.NEXT(i);
2197       END LOOP;
2198     END IF;
2199   EXCEPTION
2200     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2201       NULL;
2202     WHEN OTHERS THEN
2203       OKC_API.set_message(p_app_name      => g_app_name,
2204                           p_msg_name      => g_unexpected_error,
2205                           p_token1        => g_sqlcode_token,
2206                           p_token1_value  => sqlcode,
2207                           p_token2        => g_sqlerrm_token,
2208                           p_token2_value  => sqlerrm);
2209       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2210   END DELETE_TPG_DELIMITED;
2211 
2212   PROCEDURE LOCK_TPG_DELIMITED(
2213     p_api_version	    IN NUMBER,
2214     p_init_msg_list         IN VARCHAR2 ,
2215     x_return_status         OUT NOCOPY VARCHAR2,
2216     x_msg_count             OUT NOCOPY NUMBER,
2217     x_msg_data              OUT NOCOPY VARCHAR2,
2218     p_tgdv_ext_rec		    IN tgdv_ext_rec_type) IS
2219   BEGIN
2220     OKC_TIME_PVT.LOCK_TPG_DELIMITED(
2221     p_api_version,
2222     p_init_msg_list,
2223     x_return_status,
2224     x_msg_count,
2225     x_msg_data,
2226     p_tgdv_ext_rec);
2227   END LOCK_TPG_DELIMITED;
2228 
2229   PROCEDURE LOCK_TPG_DELIMITED(
2230     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_tgdv_ext_tbl                     IN tgdv_ext_tbl_type) IS
2236     i			         NUMBER := 0;
2237     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2238   BEGIN
2239     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2240     IF p_tgdv_ext_tbl.COUNT > 0 THEN
2241       i := p_tgdv_ext_tbl.FIRST;
2242       LOOP
2243         LOCK_TPG_DELIMITED(
2244 	    p_api_version,
2245 	    p_init_msg_list,
2246 	    l_return_status,
2247 	    x_msg_count,
2248 	    x_msg_data,
2249 	    p_tgdv_ext_tbl(i));
2250         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2251           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2252             x_return_status := l_return_status;
2253             raise G_EXCEPTION_HALT_VALIDATION;
2254           ELSE
2255             x_return_status := l_return_status;
2256           END IF;
2257         END IF;
2258         EXIT WHEN (i = p_tgdv_ext_tbl.LAST);
2259         i := p_tgdv_ext_tbl.NEXT(i);
2260       END LOOP;
2261     END IF;
2262   EXCEPTION
2263     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2264       NULL;
2265     WHEN OTHERS THEN
2266       OKC_API.set_message(p_app_name      => g_app_name,
2267                           p_msg_name      => g_unexpected_error,
2268                           p_token1        => g_sqlcode_token,
2269                           p_token1_value  => sqlcode,
2270                           p_token2        => g_sqlerrm_token,
2271                           p_token2_value  => sqlerrm);
2272       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2273   END LOCK_TPG_DELIMITED;
2274 
2275   PROCEDURE VALID_TPG_DELIMITED(
2276     p_api_version	    IN NUMBER,
2277     p_init_msg_list         IN VARCHAR2 ,
2278     x_return_status         OUT NOCOPY VARCHAR2,
2279     x_msg_count             OUT NOCOPY NUMBER,
2280     x_msg_data              OUT NOCOPY VARCHAR2,
2281     p_tgdv_ext_rec		    IN tgdv_ext_rec_type) IS
2282   BEGIN
2283     OKC_TIME_PVT.VALID_TPG_DELIMITED(
2284     p_api_version,
2285     p_init_msg_list,
2286     x_return_status,
2287     x_msg_count,
2288     x_msg_data,
2289     p_tgdv_ext_rec);
2290   END VALID_TPG_DELIMITED;
2291 
2292   PROCEDURE VALID_TPG_DELIMITED(
2293     p_api_version                  IN NUMBER,
2294     p_init_msg_list                IN VARCHAR2 ,
2295     x_return_status                OUT NOCOPY VARCHAR2,
2296     x_msg_count                    OUT NOCOPY NUMBER,
2297     x_msg_data                     OUT NOCOPY VARCHAR2,
2298     p_tgdv_ext_tbl                     IN tgdv_ext_tbl_type) IS
2299     i			         NUMBER := 0;
2300     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2301   BEGIN
2302     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2303     IF p_tgdv_ext_tbl.COUNT > 0 THEN
2304       i := p_tgdv_ext_tbl.FIRST;
2305       LOOP
2306         VALID_TPG_DELIMITED(
2307 	    p_api_version,
2308 	    p_init_msg_list,
2309 	    l_return_status,
2310 	    x_msg_count,
2311 	    x_msg_data,
2312 	    p_tgdv_ext_tbl(i));
2313         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2314           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2315             x_return_status := l_return_status;
2316             raise G_EXCEPTION_HALT_VALIDATION;
2317           ELSE
2318             x_return_status := l_return_status;
2319           END IF;
2320         END IF;
2321         EXIT WHEN (i = p_tgdv_ext_tbl.LAST);
2322         i := p_tgdv_ext_tbl.NEXT(i);
2323       END LOOP;
2324     END IF;
2325   EXCEPTION
2326     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2327       NULL;
2328     WHEN OTHERS THEN
2329       OKC_API.set_message(p_app_name      => g_app_name,
2330                           p_msg_name      => g_unexpected_error,
2331                           p_token1        => g_sqlcode_token,
2332                           p_token1_value  => sqlcode,
2333                           p_token2        => g_sqlerrm_token,
2334                           p_token2_value  => sqlerrm);
2335       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2336   END VALID_TPG_DELIMITED;
2337 
2338  --------------------------------------------------------------------------
2339 ---The following procedures cater to handling of OKC_TIME_TPG_NAMED
2340  --------------------------------------------------------------------------
2341 
2342   FUNCTION migrate_tgnv(p_tgnv_rec1 IN tgnv_rec_type,
2343                         p_tgnv_rec2 IN tgnv_rec_type)
2344     RETURN tgnv_rec_type IS
2345     l_tgnv_rec tgnv_rec_type;
2346   BEGIN
2347     l_tgnv_rec.id                    := p_tgnv_rec1.id;
2348     l_tgnv_rec.object_version_number := p_tgnv_rec1.object_version_number;
2349     l_tgnv_rec.created_by            := p_tgnv_rec1.created_by;
2350     l_tgnv_rec.creation_date         := p_tgnv_rec1.creation_date;
2351     l_tgnv_rec.last_updated_by       := p_tgnv_rec1.last_updated_by;
2352     l_tgnv_rec.last_update_date      := p_tgnv_rec1.last_update_date;
2353     l_tgnv_rec.last_update_login     := p_tgnv_rec1.last_update_login;
2354     l_tgnv_rec.tze_id := p_tgnv_rec2.tze_id;
2355     l_tgnv_rec.sfwt_flag             := p_tgnv_rec2.sfwt_flag;
2356     l_tgnv_rec.tve_id_limited        := p_tgnv_rec2.tve_id_limited;
2357     l_tgnv_rec.dnz_chr_id         := p_tgnv_rec2.dnz_chr_id;
2358     l_tgnv_rec.cnh_id                := p_tgnv_rec2.cnh_id;
2359     l_tgnv_rec.short_description     := p_tgnv_rec2.short_description;
2360     l_tgnv_rec.description           := p_tgnv_rec2.description;
2361     l_tgnv_rec.comments              := p_tgnv_rec2.comments;
2362     l_tgnv_rec.attribute_category    := p_tgnv_rec2.attribute_category;
2363     l_tgnv_rec.attribute1            := p_tgnv_rec2.attribute1;
2364     l_tgnv_rec.attribute2            := p_tgnv_rec2.attribute2;
2365     l_tgnv_rec.attribute3            := p_tgnv_rec2.attribute3;
2366     l_tgnv_rec.attribute4            := p_tgnv_rec2.attribute4;
2367     l_tgnv_rec.attribute5            := p_tgnv_rec2.attribute5;
2368     l_tgnv_rec.attribute6            := p_tgnv_rec2.attribute6;
2369     l_tgnv_rec.attribute7            := p_tgnv_rec2.attribute7;
2370     l_tgnv_rec.attribute8            := p_tgnv_rec2.attribute8;
2371     l_tgnv_rec.attribute9            := p_tgnv_rec2.attribute9;
2372     l_tgnv_rec.attribute10           := p_tgnv_rec2.attribute10;
2373     l_tgnv_rec.attribute11           := p_tgnv_rec2.attribute11;
2374     l_tgnv_rec.attribute12           := p_tgnv_rec2.attribute12;
2375     l_tgnv_rec.attribute13           := p_tgnv_rec2.attribute13;
2376     l_tgnv_rec.attribute14           := p_tgnv_rec2.attribute14;
2377     l_tgnv_rec.attribute15           := p_tgnv_rec2.attribute15;
2378     RETURN (l_tgnv_rec);
2379   END migrate_tgnv;
2380 
2381   FUNCTION migrate_tgnv(p_tgnv_tbl1 IN tgnv_tbl_type,
2382     p_tgnv_tbl2 IN tgnv_tbl_type)
2383     RETURN tgnv_tbl_type IS
2384     l_tgnv_tbl tgnv_tbl_type;
2385     i NUMBER := 0;
2386     j NUMBER := 0;
2387   BEGIN
2388     -- If the user hook deleted some records or added some new records in the table,
2389     -- discard the change and simply copy the original table.
2390     IF p_tgnv_tbl1.COUNT <> p_tgnv_tbl2.COUNT THEN
2391       l_tgnv_tbl := p_tgnv_tbl1;
2392     ELSE
2393       IF (p_tgnv_tbl1.COUNT > 0) THEN
2394         i := p_tgnv_tbl1.FIRST;
2395         j := p_tgnv_tbl2.FIRST;
2396         LOOP
2397           l_tgnv_tbl(i) := migrate_tgnv(p_tgnv_tbl1(i), p_tgnv_tbl2(j));
2398           EXIT WHEN (i = p_tgnv_tbl1.LAST);
2399           i := p_tgnv_tbl1.NEXT(i);
2400           j := p_tgnv_tbl2.NEXT(j);
2401         END LOOP;
2402       END IF;
2403     END IF;
2404     RETURN (l_tgnv_tbl);
2405   END migrate_tgnv;
2406 
2407   PROCEDURE CREATE_TPG_NAMED(
2408     p_api_version	    IN NUMBER,
2409     p_init_msg_list         IN VARCHAR2 ,
2410     x_return_status         OUT NOCOPY VARCHAR2,
2411     x_msg_count             OUT NOCOPY NUMBER,
2412     x_msg_data              OUT NOCOPY VARCHAR2,
2413     p_tgnv_rec	            IN tgnv_rec_type,
2414     x_tgnv_rec              OUT NOCOPY tgnv_rec_type) IS
2415     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TPG_NAMED';
2416     l_return_status	  VARCHAR2(1);
2417     l_tgnv_rec     tgnv_rec_type := p_tgnv_rec;
2418   BEGIN
2419     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2420 					      p_init_msg_list,
2421 					      '_PUB',
2422                                         x_return_status);
2423     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2424       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2425     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2426       raise OKC_API.G_EXCEPTION_ERROR;
2427     END IF;
2428     -- Call user hook for BEFORE
2429     g_tgnv_rec := l_tgnv_rec;
2430     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2431     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2432       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2433     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2434       raise OKC_API.G_EXCEPTION_ERROR;
2435     END IF;
2436     l_tgnv_rec := migrate_tgnv(l_tgnv_rec, g_tgnv_rec);
2437     OKC_TIME_PVT.CREATE_TPG_NAMED(
2438        p_api_version,
2439        p_init_msg_list,
2440        x_return_status,
2441        x_msg_count,
2442        x_msg_data,
2443        p_tgnv_rec,
2444        x_tgnv_rec);
2445     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2446       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2447     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2448       raise OKC_API.G_EXCEPTION_ERROR;
2449     END IF;
2450 
2451     -- Call user hook for AFTER
2452     g_tgnv_rec := x_tgnv_rec;
2453     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2454     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2455       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2456     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2457       raise OKC_API.G_EXCEPTION_ERROR;
2458     END IF;
2459     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2460   EXCEPTION
2461     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2462       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2463       (l_api_name,
2464        G_PKG_NAME,
2465        'OKC_API.G_RET_STS_ERROR',
2466        x_msg_count,
2467        x_msg_data,
2468        '_PUB');
2469     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2470       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2471       (l_api_name,
2472        G_PKG_NAME,
2473        'OKC_API.G_RET_STS_UNEXP_ERROR',
2474        x_msg_count,
2475        x_msg_data,
2476        '_PUB');
2477     WHEN OTHERS THEN
2478       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2479       (l_api_name,
2480        G_PKG_NAME,
2481        'OTHERS',
2482        x_msg_count,
2483        x_msg_data,
2484        '_PUB');
2485   END CREATE_TPG_NAMED;
2486 
2487   PROCEDURE CREATE_TPG_NAMED(
2488     p_api_version                  IN NUMBER,
2489     p_init_msg_list                IN VARCHAR2 ,
2490     x_return_status                OUT NOCOPY VARCHAR2,
2491     x_msg_count                    OUT NOCOPY NUMBER,
2492     x_msg_data                     OUT NOCOPY VARCHAR2,
2493     p_tgnv_tbl                     IN tgnv_tbl_type,
2494     x_tgnv_tbl                     OUT NOCOPY tgnv_tbl_type) IS
2495     i			         NUMBER := 0;
2496     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2497   BEGIN
2498     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2499     IF p_tgnv_tbl.COUNT > 0 THEN
2500       i := p_tgnv_tbl.FIRST;
2501       LOOP
2502         CREATE_TPG_NAMED(
2503 	    p_api_version,
2504 	    p_init_msg_list,
2505 	    l_return_status,
2506 	    x_msg_count,
2507 	    x_msg_data,
2508 	    p_tgnv_tbl(i),
2509 	    x_tgnv_tbl(i));
2510         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2511           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2512             x_return_status := l_return_status;
2513             raise G_EXCEPTION_HALT_VALIDATION;
2514           ELSE
2515             x_return_status := l_return_status;
2516           END IF;
2517         END IF;
2518         EXIT WHEN (i = p_tgnv_tbl.LAST);
2519         i := p_tgnv_tbl.NEXT(i);
2520       END LOOP;
2521     END IF;
2522   EXCEPTION
2523     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2524       NULL;
2525     WHEN OTHERS THEN
2526       OKC_API.set_message(p_app_name      => g_app_name,
2527                           p_msg_name      => g_unexpected_error,
2528                           p_token1        => g_sqlcode_token,
2529                           p_token1_value  => sqlcode,
2530                           p_token2        => g_sqlerrm_token,
2531                           p_token2_value  => sqlerrm);
2532       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2533   END CREATE_TPG_NAMED;
2534 
2535   PROCEDURE UPDATE_TPG_NAMED(
2536     p_api_version	    IN NUMBER,
2537     p_init_msg_list         IN VARCHAR2 ,
2538     x_return_status         OUT NOCOPY VARCHAR2,
2539     x_msg_count             OUT NOCOPY NUMBER,
2540     x_msg_data              OUT NOCOPY VARCHAR2,
2541     p_tgnv_rec	            IN tgnv_rec_type,
2542     x_tgnv_rec              OUT NOCOPY tgnv_rec_type) IS
2543     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TPG_NAMED';
2544     l_return_status	  VARCHAR2(1);
2545     l_tgnv_rec     tgnv_rec_type := p_tgnv_rec;
2546   BEGIN
2547     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2548 					      p_init_msg_list,
2549 					      '_PUB',
2550                                         x_return_status);
2551     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2552       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2553     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2554       raise OKC_API.G_EXCEPTION_ERROR;
2555     END IF;
2556     -- Call user hook for BEFORE
2557     g_tgnv_rec := l_tgnv_rec;
2558     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2559     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2560       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2561     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2562       raise OKC_API.G_EXCEPTION_ERROR;
2563     END IF;
2564     l_tgnv_rec := migrate_tgnv(l_tgnv_rec, g_tgnv_rec);
2565     OKC_TIME_PVT.UPDATE_TPG_NAMED(
2566        p_api_version,
2567        p_init_msg_list,
2568        x_return_status,
2569        x_msg_count,
2570        x_msg_data,
2571        p_tgnv_rec,
2572        x_tgnv_rec);
2573     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2574       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2575     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2576       raise OKC_API.G_EXCEPTION_ERROR;
2577     END IF;
2578 
2579     -- Call user hook for AFTER
2580     g_tgnv_rec := x_tgnv_rec;
2581     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2582     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2583       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2584     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2585       raise OKC_API.G_EXCEPTION_ERROR;
2586     END IF;
2587     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2588   EXCEPTION
2589     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2590       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2591       (l_api_name,
2592        G_PKG_NAME,
2593        'OKC_API.G_RET_STS_ERROR',
2594        x_msg_count,
2595        x_msg_data,
2596        '_PUB');
2597     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2598       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2599       (l_api_name,
2600        G_PKG_NAME,
2601        'OKC_API.G_RET_STS_UNEXP_ERROR',
2602        x_msg_count,
2603        x_msg_data,
2604        '_PUB');
2605     WHEN OTHERS THEN
2606       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2607       (l_api_name,
2608        G_PKG_NAME,
2609        'OTHERS',
2610        x_msg_count,
2611        x_msg_data,
2612        '_PUB');
2613   END UPDATE_TPG_NAMED;
2614 
2615   PROCEDURE UPDATE_TPG_NAMED(
2616     p_api_version                  IN NUMBER,
2617     p_init_msg_list                IN VARCHAR2 ,
2618     x_return_status                OUT NOCOPY VARCHAR2,
2619     x_msg_count                    OUT NOCOPY NUMBER,
2620     x_msg_data                     OUT NOCOPY VARCHAR2,
2621     p_tgnv_tbl                     IN tgnv_tbl_type,
2622     x_tgnv_tbl                     OUT NOCOPY tgnv_tbl_type) IS
2623     i			         NUMBER := 0;
2624     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2625   BEGIN
2626     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2627     IF p_tgnv_tbl.COUNT > 0 THEN
2628       i := p_tgnv_tbl.FIRST;
2629       LOOP
2630         UPDATE_TPG_NAMED(
2631 	    p_api_version,
2632 	    p_init_msg_list,
2633 	    l_return_status,
2634 	    x_msg_count,
2635 	    x_msg_data,
2636 	    p_tgnv_tbl(i),
2637 	    x_tgnv_tbl(i));
2638         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2639           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2640             x_return_status := l_return_status;
2641             raise G_EXCEPTION_HALT_VALIDATION;
2642           ELSE
2643             x_return_status := l_return_status;
2644           END IF;
2645         END IF;
2646         EXIT WHEN (i = p_tgnv_tbl.LAST);
2647         i := p_tgnv_tbl.NEXT(i);
2648       END LOOP;
2649     END IF;
2650   EXCEPTION
2651     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2652       NULL;
2653     WHEN OTHERS THEN
2654       OKC_API.set_message(p_app_name      => g_app_name,
2655                           p_msg_name      => g_unexpected_error,
2656                           p_token1        => g_sqlcode_token,
2657                           p_token1_value  => sqlcode,
2658                           p_token2        => g_sqlerrm_token,
2659                           p_token2_value  => sqlerrm);
2660       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2661   END UPDATE_TPG_NAMED;
2662 
2663   PROCEDURE DELETE_TPG_NAMED(
2664     p_api_version	    IN NUMBER,
2665     p_init_msg_list         IN VARCHAR2 ,
2666     x_return_status         OUT NOCOPY VARCHAR2,
2667     x_msg_count             OUT NOCOPY NUMBER,
2668     x_msg_data              OUT NOCOPY VARCHAR2,
2669     p_tgnv_rec              IN tgnv_rec_type) IS
2670     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TPG_NAMED';
2671     l_return_status	  VARCHAR2(1);
2672     l_tgnv_rec     tgnv_rec_type := p_tgnv_rec;
2673   BEGIN
2674     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2675 					      p_init_msg_list,
2676 					      '_PUB',
2677                                         x_return_status);
2678     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2679       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2680     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2681       raise OKC_API.G_EXCEPTION_ERROR;
2682     END IF;
2683     -- Call user hook for BEFORE
2684     g_tgnv_rec := l_tgnv_rec;
2685     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
2686     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2687       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2688     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2689       raise OKC_API.G_EXCEPTION_ERROR;
2690     END IF;
2691     OKC_TIME_PVT.DELETE_TPG_NAMED(
2692        p_api_version,
2693        p_init_msg_list,
2694        x_return_status,
2695        x_msg_count,
2696        x_msg_data,
2697        p_tgnv_rec);
2698     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2699       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2700     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2701       raise OKC_API.G_EXCEPTION_ERROR;
2702     END IF;
2703 
2704     -- Call user hook for AFTER
2705     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
2706     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2707       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2708     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2709       raise OKC_API.G_EXCEPTION_ERROR;
2710     END IF;
2711     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2712   EXCEPTION
2713     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2714       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2715       (l_api_name,
2716        G_PKG_NAME,
2717        'OKC_API.G_RET_STS_ERROR',
2718        x_msg_count,
2719        x_msg_data,
2720        '_PUB');
2721     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2722       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2723       (l_api_name,
2724        G_PKG_NAME,
2725        'OKC_API.G_RET_STS_UNEXP_ERROR',
2726        x_msg_count,
2727        x_msg_data,
2728        '_PUB');
2729     WHEN OTHERS THEN
2730       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2731       (l_api_name,
2732        G_PKG_NAME,
2733        'OTHERS',
2734        x_msg_count,
2735        x_msg_data,
2736        '_PUB');
2737   END DELETE_TPG_NAMED;
2738 
2739   PROCEDURE DELETE_TPG_NAMED(
2740     p_api_version                  IN NUMBER,
2741     p_init_msg_list                IN VARCHAR2 ,
2742     x_return_status                OUT NOCOPY VARCHAR2,
2743     x_msg_count                    OUT NOCOPY NUMBER,
2744     x_msg_data                     OUT NOCOPY VARCHAR2,
2745     p_tgnv_tbl                     IN tgnv_tbl_type) IS
2746     i			         NUMBER := 0;
2747     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2748   BEGIN
2749     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2750     IF p_tgnv_tbl.COUNT > 0 THEN
2751       i := p_tgnv_tbl.FIRST;
2752       LOOP
2753         DELETE_TPG_NAMED(
2754 	    p_api_version,
2755 	    p_init_msg_list,
2756 	    l_return_status,
2757 	    x_msg_count,
2758 	    x_msg_data,
2759 	    p_tgnv_tbl(i));
2760         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2761           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2762             x_return_status := l_return_status;
2763             raise G_EXCEPTION_HALT_VALIDATION;
2764           ELSE
2765             x_return_status := l_return_status;
2766           END IF;
2767         END IF;
2768         EXIT WHEN (i = p_tgnv_tbl.LAST);
2769         i := p_tgnv_tbl.NEXT(i);
2770       END LOOP;
2771     END IF;
2772   EXCEPTION
2773     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2774       NULL;
2775     WHEN OTHERS THEN
2776       OKC_API.set_message(p_app_name      => g_app_name,
2777                           p_msg_name      => g_unexpected_error,
2778                           p_token1        => g_sqlcode_token,
2779                           p_token1_value  => sqlcode,
2780                           p_token2        => g_sqlerrm_token,
2781                           p_token2_value  => sqlerrm);
2782       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2783   END DELETE_TPG_NAMED;
2784 
2785   PROCEDURE LOCK_TPG_NAMED(
2786     p_api_version	    IN NUMBER,
2787     p_init_msg_list         IN VARCHAR2 ,
2788     x_return_status         OUT NOCOPY VARCHAR2,
2789     x_msg_count             OUT NOCOPY NUMBER,
2790     x_msg_data              OUT NOCOPY VARCHAR2,
2791     p_tgnv_rec	    IN tgnv_rec_type) IS
2792   BEGIN
2793     OKC_TIME_PVT.LOCK_TPG_NAMED(
2794     p_api_version,
2795     p_init_msg_list,
2796     x_return_status,
2797     x_msg_count,
2798     x_msg_data,
2799     p_tgnv_rec);
2800   END LOCK_TPG_NAMED;
2801 
2802   PROCEDURE LOCK_TPG_NAMED(
2803     p_api_version                  IN NUMBER,
2804     p_init_msg_list                IN VARCHAR2 ,
2805     x_return_status                OUT NOCOPY VARCHAR2,
2806     x_msg_count                    OUT NOCOPY NUMBER,
2807     x_msg_data                     OUT NOCOPY VARCHAR2,
2808     p_tgnv_tbl                     IN tgnv_tbl_type) IS
2809     i			         NUMBER := 0;
2810     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2811   BEGIN
2812     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2813     IF p_tgnv_tbl.COUNT > 0 THEN
2814       i := p_tgnv_tbl.FIRST;
2815       LOOP
2816         LOCK_TPG_NAMED(
2817 	    p_api_version,
2818 	    p_init_msg_list,
2819 	    l_return_status,
2820 	    x_msg_count,
2821 	    x_msg_data,
2822 	    p_tgnv_tbl(i));
2823         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2824           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2825             x_return_status := l_return_status;
2826             raise G_EXCEPTION_HALT_VALIDATION;
2827           ELSE
2828             x_return_status := l_return_status;
2829           END IF;
2830         END IF;
2831         EXIT WHEN (i = p_tgnv_tbl.LAST);
2832         i := p_tgnv_tbl.NEXT(i);
2833       END LOOP;
2834     END IF;
2835   EXCEPTION
2836     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2837       NULL;
2838     WHEN OTHERS THEN
2839       OKC_API.set_message(p_app_name      => g_app_name,
2840                           p_msg_name      => g_unexpected_error,
2841                           p_token1        => g_sqlcode_token,
2842                           p_token1_value  => sqlcode,
2843                           p_token2        => g_sqlerrm_token,
2844                           p_token2_value  => sqlerrm);
2845       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2846   END LOCK_TPG_NAMED;
2847 
2848   PROCEDURE VALID_TPG_NAMED(
2849     p_api_version	    IN NUMBER,
2850     p_init_msg_list         IN VARCHAR2 ,
2851     x_return_status         OUT NOCOPY VARCHAR2,
2852     x_msg_count             OUT NOCOPY NUMBER,
2853     x_msg_data              OUT NOCOPY VARCHAR2,
2854     p_tgnv_rec		    IN tgnv_rec_type) IS
2855   BEGIN
2856     OKC_TIME_PVT.VALID_TPG_NAMED(
2857     p_api_version,
2858     p_init_msg_list,
2859     x_return_status,
2860     x_msg_count,
2861     x_msg_data,
2862     p_tgnv_rec);
2863   END VALID_TPG_NAMED;
2864 
2865   PROCEDURE VALID_TPG_NAMED(
2866     p_api_version                  IN NUMBER,
2867     p_init_msg_list                IN VARCHAR2 ,
2868     x_return_status                OUT NOCOPY VARCHAR2,
2869     x_msg_count                    OUT NOCOPY NUMBER,
2870     x_msg_data                     OUT NOCOPY VARCHAR2,
2871     p_tgnv_tbl                     IN tgnv_tbl_type) IS
2872     i			         NUMBER := 0;
2873     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2874   BEGIN
2875     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2876     IF p_tgnv_tbl.COUNT > 0 THEN
2877       i := p_tgnv_tbl.FIRST;
2878       LOOP
2879         VALID_TPG_NAMED(
2880 	    p_api_version,
2881 	    p_init_msg_list,
2882 	    l_return_status,
2883 	    x_msg_count,
2884 	    x_msg_data,
2885 	    p_tgnv_tbl(i));
2886         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2887           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2888             x_return_status := l_return_status;
2889             raise G_EXCEPTION_HALT_VALIDATION;
2890           ELSE
2891             x_return_status := l_return_status;
2892           END IF;
2893         END IF;
2894         EXIT WHEN (i = p_tgnv_tbl.LAST);
2895         i := p_tgnv_tbl.NEXT(i);
2896       END LOOP;
2897     END IF;
2898   EXCEPTION
2899     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2900       NULL;
2901     WHEN OTHERS THEN
2902       OKC_API.set_message(p_app_name      => g_app_name,
2903                           p_msg_name      => g_unexpected_error,
2904                           p_token1        => g_sqlcode_token,
2905                           p_token1_value  => sqlcode,
2906                           p_token2        => g_sqlerrm_token,
2907                           p_token2_value  => sqlerrm);
2908       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2909   END VALID_TPG_NAMED;
2910 
2911  --------------------------------------------------------------------------
2912 ---The following procedures cater to handling of OKC_TIME_IA_STARTEND
2913  --------------------------------------------------------------------------
2914 
2915   FUNCTION migrate_isev(p_isev_ext_rec1 IN isev_ext_rec_type,
2916                         p_isev_ext_rec2 IN isev_ext_rec_type)
2917     RETURN isev_ext_rec_type IS
2918     l_isev_ext_rec isev_ext_rec_type;
2919   BEGIN
2920     l_isev_ext_rec.id                    := p_isev_ext_rec1.id;
2921     l_isev_ext_rec.object_version_number := p_isev_ext_rec1.object_version_number;
2922     l_isev_ext_rec.created_by            := p_isev_ext_rec1.created_by;
2923     l_isev_ext_rec.creation_date         := p_isev_ext_rec1.creation_date;
2924     l_isev_ext_rec.last_updated_by       := p_isev_ext_rec1.last_updated_by;
2925     l_isev_ext_rec.last_update_date      := p_isev_ext_rec1.last_update_date;
2926     l_isev_ext_rec.last_update_login     := p_isev_ext_rec1.last_update_login;
2927     l_isev_ext_rec.tze_id := p_isev_ext_rec2.tze_id;
2928     l_isev_ext_rec.sfwt_flag             := p_isev_ext_rec2.sfwt_flag;
2929     l_isev_ext_rec.tve_id_limited        := p_isev_ext_rec2.tve_id_limited;
2930     l_isev_ext_rec.dnz_chr_id         := p_isev_ext_rec2.dnz_chr_id;
2931     l_isev_ext_rec.tve_id_started        := p_isev_ext_rec2.tve_id_started;
2932     l_isev_ext_rec.tve_id_ended          := p_isev_ext_rec2.tve_id_ended;
2933     l_isev_ext_rec.duration              := p_isev_ext_rec2.duration;
2934     l_isev_ext_rec.uom_code       := p_isev_ext_rec2.uom_code;
2935     l_isev_ext_rec.before_after       := p_isev_ext_rec2.before_after;
2936     l_isev_ext_rec.operator              := p_isev_ext_rec2.operator;
2937     l_isev_ext_rec.spn_id                := p_isev_ext_rec2.spn_id;
2938     l_isev_ext_rec.short_description     := p_isev_ext_rec2.short_description;
2939     l_isev_ext_rec.description           := p_isev_ext_rec2.description;
2940     l_isev_ext_rec.comments              := p_isev_ext_rec2.comments;
2941     l_isev_ext_rec.attribute_category    := p_isev_ext_rec2.attribute_category;
2942     l_isev_ext_rec.attribute1            := p_isev_ext_rec2.attribute1;
2943     l_isev_ext_rec.attribute2            := p_isev_ext_rec2.attribute2;
2944     l_isev_ext_rec.attribute3            := p_isev_ext_rec2.attribute3;
2945     l_isev_ext_rec.attribute4            := p_isev_ext_rec2.attribute4;
2946     l_isev_ext_rec.attribute5            := p_isev_ext_rec2.attribute5;
2947     l_isev_ext_rec.attribute6            := p_isev_ext_rec2.attribute6;
2948     l_isev_ext_rec.attribute7            := p_isev_ext_rec2.attribute7;
2949     l_isev_ext_rec.attribute8            := p_isev_ext_rec2.attribute8;
2950     l_isev_ext_rec.attribute9            := p_isev_ext_rec2.attribute9;
2951     l_isev_ext_rec.attribute10           := p_isev_ext_rec2.attribute10;
2952     l_isev_ext_rec.attribute11           := p_isev_ext_rec2.attribute11;
2953     l_isev_ext_rec.attribute12           := p_isev_ext_rec2.attribute12;
2954     l_isev_ext_rec.attribute13           := p_isev_ext_rec2.attribute13;
2955     l_isev_ext_rec.attribute14           := p_isev_ext_rec2.attribute14;
2956     l_isev_ext_rec.attribute15           := p_isev_ext_rec2.attribute15;
2957     RETURN (l_isev_ext_rec);
2958   END migrate_isev;
2959 
2960   FUNCTION migrate_isev(p_isev_ext_tbl1 IN isev_ext_tbl_type,
2961     p_isev_ext_tbl2 IN isev_ext_tbl_type)
2962     RETURN isev_ext_tbl_type IS
2963     l_isev_ext_tbl isev_ext_tbl_type;
2964     i NUMBER := 0;
2965     j NUMBER := 0;
2966   BEGIN
2967     -- If the user hook deleted some records or added some new records in the table,
2968     -- discard the change and simply copy the original table.
2969     IF p_isev_ext_tbl1.COUNT <> p_isev_ext_tbl2.COUNT THEN
2970       l_isev_ext_tbl := p_isev_ext_tbl1;
2971     ELSE
2972       IF (p_isev_ext_tbl1.COUNT > 0) THEN
2973         i := p_isev_ext_tbl1.FIRST;
2974         j := p_isev_ext_tbl2.FIRST;
2975         LOOP
2976           l_isev_ext_tbl(i) := migrate_isev(p_isev_ext_tbl1(i), p_isev_ext_tbl2(j));
2977           EXIT WHEN (i = p_isev_ext_tbl1.LAST);
2978           i := p_isev_ext_tbl1.NEXT(i);
2979           j := p_isev_ext_tbl2.NEXT(j);
2980         END LOOP;
2981       END IF;
2982     END IF;
2983     RETURN (l_isev_ext_tbl);
2984   END migrate_isev;
2985 
2986   FUNCTION migrate_isev(p_isev_rel_rec1 IN isev_rel_rec_type,
2987                         p_isev_rel_rec2 IN isev_rel_rec_type)
2988     RETURN isev_rel_rec_type IS
2989     l_isev_rel_rec isev_rel_rec_type;
2990   BEGIN
2991     l_isev_rel_rec.id                    := p_isev_rel_rec1.id;
2992     l_isev_rel_rec.object_version_number := p_isev_rel_rec1.object_version_number;
2993     l_isev_rel_rec.created_by            := p_isev_rel_rec1.created_by;
2994     l_isev_rel_rec.creation_date         := p_isev_rel_rec1.creation_date;
2995     l_isev_rel_rec.last_updated_by       := p_isev_rel_rec1.last_updated_by;
2996     l_isev_rel_rec.last_update_date      := p_isev_rel_rec1.last_update_date;
2997     l_isev_rel_rec.last_update_login     := p_isev_rel_rec1.last_update_login;
2998     l_isev_rel_rec.tze_id := p_isev_rel_rec2.tze_id;
2999     l_isev_rel_rec.sfwt_flag             := p_isev_rel_rec2.sfwt_flag;
3000     l_isev_rel_rec.dnz_chr_id         := p_isev_rel_rec2.dnz_chr_id;
3001     l_isev_rel_rec.tve_id_limited        := p_isev_rel_rec2.tve_id_limited;
3002     l_isev_rel_rec.tve_id_started        := p_isev_rel_rec2.tve_id_started;
3003     l_isev_rel_rec.tve_id_ended          := p_isev_rel_rec2.tve_id_ended;
3004     l_isev_rel_rec.duration              := p_isev_rel_rec2.duration;
3005     l_isev_rel_rec.uom_code       := p_isev_rel_rec2.uom_code;
3006     l_isev_rel_rec.before_after       := p_isev_rel_rec2.before_after;
3007     l_isev_rel_rec.operator              := p_isev_rel_rec2.operator;
3008     l_isev_rel_rec.spn_id                := p_isev_rel_rec2.spn_id;
3009     l_isev_rel_rec.short_description     := p_isev_rel_rec2.short_description;
3010     l_isev_rel_rec.description           := p_isev_rel_rec2.description;
3011     l_isev_rel_rec.comments              := p_isev_rel_rec2.comments;
3012     l_isev_rel_rec.attribute_category    := p_isev_rel_rec2.attribute_category;
3013     l_isev_rel_rec.attribute1            := p_isev_rel_rec2.attribute1;
3014     l_isev_rel_rec.attribute2            := p_isev_rel_rec2.attribute2;
3015     l_isev_rel_rec.attribute3            := p_isev_rel_rec2.attribute3;
3016     l_isev_rel_rec.attribute4            := p_isev_rel_rec2.attribute4;
3017     l_isev_rel_rec.attribute5            := p_isev_rel_rec2.attribute5;
3018     l_isev_rel_rec.attribute6            := p_isev_rel_rec2.attribute6;
3019     l_isev_rel_rec.attribute7            := p_isev_rel_rec2.attribute7;
3020     l_isev_rel_rec.attribute8            := p_isev_rel_rec2.attribute8;
3021     l_isev_rel_rec.attribute9            := p_isev_rel_rec2.attribute9;
3022     l_isev_rel_rec.attribute10           := p_isev_rel_rec2.attribute10;
3023     l_isev_rel_rec.attribute11           := p_isev_rel_rec2.attribute11;
3024     l_isev_rel_rec.attribute12           := p_isev_rel_rec2.attribute12;
3025     l_isev_rel_rec.attribute13           := p_isev_rel_rec2.attribute13;
3026     l_isev_rel_rec.attribute14           := p_isev_rel_rec2.attribute14;
3027     l_isev_rel_rec.attribute15           := p_isev_rel_rec2.attribute15;
3028     RETURN (l_isev_rel_rec);
3029   END migrate_isev;
3030 
3031   FUNCTION migrate_isev(p_isev_rel_tbl1 IN isev_rel_tbl_type,
3032     p_isev_rel_tbl2 IN isev_rel_tbl_type)
3033     RETURN isev_rel_tbl_type IS
3034     l_isev_rel_tbl isev_rel_tbl_type;
3035     i NUMBER := 0;
3036     j NUMBER := 0;
3037   BEGIN
3038     -- If the user hook deleted some records or added some new records in the table,
3039     -- discard the change and simply copy the original table.
3040     IF p_isev_rel_tbl1.COUNT <> p_isev_rel_tbl2.COUNT THEN
3041       l_isev_rel_tbl := p_isev_rel_tbl1;
3042     ELSE
3043       IF (p_isev_rel_tbl1.COUNT > 0) THEN
3044         i := p_isev_rel_tbl1.FIRST;
3045         j := p_isev_rel_tbl2.FIRST;
3046         LOOP
3047           l_isev_rel_tbl(i) := migrate_isev(p_isev_rel_tbl1(i), p_isev_rel_tbl2(j));
3048           EXIT WHEN (i = p_isev_rel_tbl1.LAST);
3049           i := p_isev_rel_tbl1.NEXT(i);
3050           j := p_isev_rel_tbl2.NEXT(j);
3051         END LOOP;
3052       END IF;
3053     END IF;
3054     RETURN (l_isev_rel_tbl);
3055   END migrate_isev;
3056 
3057   PROCEDURE CREATE_IA_STARTEND(
3058     p_api_version	    IN NUMBER,
3059     p_init_msg_list         IN VARCHAR2 ,
3060     x_return_status         OUT NOCOPY VARCHAR2,
3061     x_msg_count             OUT NOCOPY NUMBER,
3062     x_msg_data              OUT NOCOPY VARCHAR2,
3063     p_isev_ext_rec	            IN isev_ext_rec_type,
3064     x_isev_ext_rec              OUT NOCOPY isev_ext_rec_type) IS
3065     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_IA_STARTEND';
3066     l_return_status	  VARCHAR2(1);
3067     l_isev_ext_rec     isev_ext_rec_type := p_isev_ext_rec;
3068   BEGIN
3069     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3070 					      p_init_msg_list,
3071 					      '_PUB',
3072                                         x_return_status);
3073     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3074       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3075     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3076       raise OKC_API.G_EXCEPTION_ERROR;
3077     END IF;
3078     -- Call user hook for BEFORE
3079     g_isev_ext_rec := l_isev_ext_rec;
3080     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3081     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3082       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3083     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3084       raise OKC_API.G_EXCEPTION_ERROR;
3085     END IF;
3086     l_isev_ext_rec := migrate_isev(l_isev_ext_rec, g_isev_ext_rec);
3087     OKC_TIME_PVT.CREATE_IA_STARTEND(
3088        p_api_version,
3089        p_init_msg_list,
3090        x_return_status,
3091        x_msg_count,
3092        x_msg_data,
3093        p_isev_ext_rec,
3094        x_isev_ext_rec);
3095     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3096       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3097     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3098       raise OKC_API.G_EXCEPTION_ERROR;
3099     END IF;
3100 
3101     -- Call user hook for AFTER
3102     g_isev_ext_rec := x_isev_ext_rec;
3103     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3104     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3105       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3106     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3107       raise OKC_API.G_EXCEPTION_ERROR;
3108     END IF;
3109     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3110   EXCEPTION
3111     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3112       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3113       (l_api_name,
3114        G_PKG_NAME,
3115        'OKC_API.G_RET_STS_ERROR',
3116        x_msg_count,
3117        x_msg_data,
3118        '_PUB');
3119     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3120       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3121       (l_api_name,
3122        G_PKG_NAME,
3123        'OKC_API.G_RET_STS_UNEXP_ERROR',
3124        x_msg_count,
3125        x_msg_data,
3126        '_PUB');
3127     WHEN OTHERS THEN
3128       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3129       (l_api_name,
3130        G_PKG_NAME,
3131        'OTHERS',
3132        x_msg_count,
3133        x_msg_data,
3134        '_PUB');
3135   END CREATE_IA_STARTEND;
3136 
3137   PROCEDURE CREATE_IA_STARTEND(
3138     p_api_version                  IN NUMBER,
3139     p_init_msg_list                IN VARCHAR2 ,
3140     x_return_status                OUT NOCOPY VARCHAR2,
3141     x_msg_count                    OUT NOCOPY NUMBER,
3142     x_msg_data                     OUT NOCOPY VARCHAR2,
3143     p_isev_ext_tbl                     IN isev_ext_tbl_type,
3144     x_isev_ext_tbl                     OUT NOCOPY isev_ext_tbl_type) IS
3145     i			         NUMBER := 0;
3146     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3147   BEGIN
3148     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3149     IF p_isev_ext_tbl.COUNT > 0 THEN
3150       i := p_isev_ext_tbl.FIRST;
3151       LOOP
3152         CREATE_IA_STARTEND(
3153 	    p_api_version,
3154 	    p_init_msg_list,
3155 	    l_return_status,
3156 	    x_msg_count,
3157 	    x_msg_data,
3158 	    p_isev_ext_tbl(i),
3159 	    x_isev_ext_tbl(i));
3160         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3161           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3162             x_return_status := l_return_status;
3163             raise G_EXCEPTION_HALT_VALIDATION;
3164           ELSE
3165             x_return_status := l_return_status;
3166           END IF;
3167         END IF;
3168         EXIT WHEN (i = p_isev_ext_tbl.LAST);
3169         i := p_isev_ext_tbl.NEXT(i);
3170       END LOOP;
3171     END IF;
3172   EXCEPTION
3173     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3174       NULL;
3175     WHEN OTHERS THEN
3176       OKC_API.set_message(p_app_name      => g_app_name,
3177                           p_msg_name      => g_unexpected_error,
3178                           p_token1        => g_sqlcode_token,
3179                           p_token1_value  => sqlcode,
3180                           p_token2        => g_sqlerrm_token,
3181                           p_token2_value  => sqlerrm);
3182       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3183   END CREATE_IA_STARTEND;
3184 
3185   PROCEDURE UPDATE_IA_STARTEND(
3186     p_api_version	    IN NUMBER,
3187     p_init_msg_list         IN VARCHAR2 ,
3188     x_return_status         OUT NOCOPY VARCHAR2,
3189     x_msg_count             OUT NOCOPY NUMBER,
3190     x_msg_data              OUT NOCOPY VARCHAR2,
3191     p_isev_ext_rec	            IN isev_ext_rec_type,
3192     x_isev_ext_rec              OUT NOCOPY isev_ext_rec_type) IS
3193     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_IA_STARTEND';
3194     l_return_status	  VARCHAR2(1);
3195     l_isev_ext_rec     isev_ext_rec_type := p_isev_ext_rec;
3196   BEGIN
3197     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3198 					      p_init_msg_list,
3199 					      '_PUB',
3200                                         x_return_status);
3201     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3202       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3203     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3204       raise OKC_API.G_EXCEPTION_ERROR;
3205     END IF;
3206     -- Call user hook for BEFORE
3207     g_isev_ext_rec := l_isev_ext_rec;
3208     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3209     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3210       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3211     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3212       raise OKC_API.G_EXCEPTION_ERROR;
3213     END IF;
3214     l_isev_ext_rec := migrate_isev(l_isev_ext_rec, g_isev_ext_rec);
3215     OKC_TIME_PVT.UPDATE_IA_STARTEND(
3216        p_api_version,
3217        p_init_msg_list,
3218        x_return_status,
3219        x_msg_count,
3220        x_msg_data,
3221        p_isev_ext_rec,
3222        x_isev_ext_rec);
3223     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3224       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3225     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3226       raise OKC_API.G_EXCEPTION_ERROR;
3227     END IF;
3228 
3229     -- Call user hook for AFTER
3230     g_isev_ext_rec := x_isev_ext_rec;
3231     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3232     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3233       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3234     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3235       raise OKC_API.G_EXCEPTION_ERROR;
3236     END IF;
3237     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3238   EXCEPTION
3239     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3240       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3241       (l_api_name,
3242        G_PKG_NAME,
3243        'OKC_API.G_RET_STS_ERROR',
3244        x_msg_count,
3245        x_msg_data,
3246        '_PUB');
3247     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3248       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3249       (l_api_name,
3250        G_PKG_NAME,
3251        'OKC_API.G_RET_STS_UNEXP_ERROR',
3252        x_msg_count,
3253        x_msg_data,
3254        '_PUB');
3255     WHEN OTHERS THEN
3256       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3257       (l_api_name,
3258        G_PKG_NAME,
3259        'OTHERS',
3260        x_msg_count,
3261        x_msg_data,
3262        '_PUB');
3263   END UPDATE_IA_STARTEND;
3264 
3265   PROCEDURE UPDATE_IA_STARTEND(
3266     p_api_version                  IN NUMBER,
3267     p_init_msg_list                IN VARCHAR2 ,
3268     x_return_status                OUT NOCOPY VARCHAR2,
3269     x_msg_count                    OUT NOCOPY NUMBER,
3270     x_msg_data                     OUT NOCOPY VARCHAR2,
3271     p_isev_ext_tbl                     IN isev_ext_tbl_type,
3272     x_isev_ext_tbl                     OUT NOCOPY isev_ext_tbl_type) IS
3273     i			         NUMBER := 0;
3274     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3275   BEGIN
3276     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3277     IF p_isev_ext_tbl.COUNT > 0 THEN
3278       i := p_isev_ext_tbl.FIRST;
3279       LOOP
3280         UPDATE_IA_STARTEND(
3281 	    p_api_version,
3282 	    p_init_msg_list,
3283 	    l_return_status,
3284 	    x_msg_count,
3285 	    x_msg_data,
3286 	    p_isev_ext_tbl(i),
3287 	    x_isev_ext_tbl(i));
3288         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3289           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3290             x_return_status := l_return_status;
3291             raise G_EXCEPTION_HALT_VALIDATION;
3292           ELSE
3293             x_return_status := l_return_status;
3294           END IF;
3295         END IF;
3296         EXIT WHEN (i = p_isev_ext_tbl.LAST);
3297         i := p_isev_ext_tbl.NEXT(i);
3298       END LOOP;
3299     END IF;
3300   EXCEPTION
3301     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3302       NULL;
3303     WHEN OTHERS THEN
3304       OKC_API.set_message(p_app_name      => g_app_name,
3305                           p_msg_name      => g_unexpected_error,
3306                           p_token1        => g_sqlcode_token,
3307                           p_token1_value  => sqlcode,
3308                           p_token2        => g_sqlerrm_token,
3309                           p_token2_value  => sqlerrm);
3310       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3311   END UPDATE_IA_STARTEND;
3312 
3313   PROCEDURE DELETE_IA_STARTEND(
3314     p_api_version	    IN NUMBER,
3315     p_init_msg_list         IN VARCHAR2 ,
3316     x_return_status         OUT NOCOPY VARCHAR2,
3317     x_msg_count             OUT NOCOPY NUMBER,
3318     x_msg_data              OUT NOCOPY VARCHAR2,
3319     p_isev_ext_rec              IN isev_ext_rec_type) IS
3320     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_IA_STARTEND';
3321     l_return_status	  VARCHAR2(1);
3322     l_isev_ext_rec     isev_ext_rec_type := p_isev_ext_rec;
3323   BEGIN
3324     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3325 					      p_init_msg_list,
3326 					      '_PUB',
3327                                         x_return_status);
3328     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3329       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3330     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3331       raise OKC_API.G_EXCEPTION_ERROR;
3332     END IF;
3333     -- Call user hook for BEFORE
3334     g_isev_ext_rec := l_isev_ext_rec;
3335     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3336     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3337       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3338     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3339       raise OKC_API.G_EXCEPTION_ERROR;
3340     END IF;
3341     OKC_TIME_PVT.DELETE_IA_STARTEND(
3342        p_api_version,
3343        p_init_msg_list,
3344        x_return_status,
3345        x_msg_count,
3346        x_msg_data,
3347        p_isev_ext_rec);
3348     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3349       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3350     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3351       raise OKC_API.G_EXCEPTION_ERROR;
3352     END IF;
3353 
3354     -- Call user hook for AFTER
3355     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3356     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3357       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3358     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3359       raise OKC_API.G_EXCEPTION_ERROR;
3360     END IF;
3361     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3362   EXCEPTION
3363     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3364       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3365       (l_api_name,
3366        G_PKG_NAME,
3367        'OKC_API.G_RET_STS_ERROR',
3368        x_msg_count,
3369        x_msg_data,
3370        '_PUB');
3371     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3372       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3373       (l_api_name,
3374        G_PKG_NAME,
3375        'OKC_API.G_RET_STS_UNEXP_ERROR',
3376        x_msg_count,
3377        x_msg_data,
3378        '_PUB');
3379     WHEN OTHERS THEN
3380       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3381       (l_api_name,
3382        G_PKG_NAME,
3383        'OTHERS',
3384        x_msg_count,
3385        x_msg_data,
3386        '_PUB');
3387   END DELETE_IA_STARTEND;
3388 
3389   PROCEDURE DELETE_IA_STARTEND(
3390     p_api_version                  IN NUMBER,
3391     p_init_msg_list                IN VARCHAR2 ,
3392     x_return_status                OUT NOCOPY VARCHAR2,
3393     x_msg_count                    OUT NOCOPY NUMBER,
3394     x_msg_data                     OUT NOCOPY VARCHAR2,
3395     p_isev_ext_tbl                     IN isev_ext_tbl_type) IS
3396     i			         NUMBER := 0;
3397     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3398   BEGIN
3399     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3400     IF p_isev_ext_tbl.COUNT > 0 THEN
3401       i := p_isev_ext_tbl.FIRST;
3402       LOOP
3403         DELETE_IA_STARTEND(
3404 	    p_api_version,
3405 	    p_init_msg_list,
3406 	    l_return_status,
3407 	    x_msg_count,
3408 	    x_msg_data,
3409 	    p_isev_ext_tbl(i));
3410         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3411           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3412             x_return_status := l_return_status;
3413             raise G_EXCEPTION_HALT_VALIDATION;
3414           ELSE
3415             x_return_status := l_return_status;
3416           END IF;
3417         END IF;
3418         EXIT WHEN (i = p_isev_ext_tbl.LAST);
3419         i := p_isev_ext_tbl.NEXT(i);
3420       END LOOP;
3421     END IF;
3422   EXCEPTION
3423     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3424       NULL;
3425     WHEN OTHERS THEN
3426       OKC_API.set_message(p_app_name      => g_app_name,
3427                           p_msg_name      => g_unexpected_error,
3428                           p_token1        => g_sqlcode_token,
3429                           p_token1_value  => sqlcode,
3430                           p_token2        => g_sqlerrm_token,
3431                           p_token2_value  => sqlerrm);
3432       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3433   END DELETE_IA_STARTEND;
3434 
3435   PROCEDURE LOCK_IA_STARTEND(
3436     p_api_version	    IN NUMBER,
3437     p_init_msg_list         IN VARCHAR2 ,
3438     x_return_status         OUT NOCOPY VARCHAR2,
3439     x_msg_count             OUT NOCOPY NUMBER,
3440     x_msg_data              OUT NOCOPY VARCHAR2,
3441     p_isev_ext_rec              IN isev_ext_rec_type) IS
3442   BEGIN
3443     OKC_TIME_PVT.LOCK_IA_STARTEND(
3444     p_api_version,
3445     p_init_msg_list,
3446     x_return_status,
3447     x_msg_count,
3448     x_msg_data,
3449     p_isev_ext_rec);
3450   END LOCK_IA_STARTEND;
3451 
3452   PROCEDURE LOCK_IA_STARTEND(
3453     p_api_version                  IN NUMBER,
3454     p_init_msg_list                IN VARCHAR2 ,
3455     x_return_status                OUT NOCOPY VARCHAR2,
3456     x_msg_count                    OUT NOCOPY NUMBER,
3457     x_msg_data                     OUT NOCOPY VARCHAR2,
3458     p_isev_ext_tbl                     IN isev_ext_tbl_type) IS
3459     i			         NUMBER := 0;
3460     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3461   BEGIN
3462     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3463     IF p_isev_ext_tbl.COUNT > 0 THEN
3464       i := p_isev_ext_tbl.FIRST;
3465       LOOP
3466         LOCK_IA_STARTEND(
3467 	    p_api_version,
3468 	    p_init_msg_list,
3469 	    l_return_status,
3470 	    x_msg_count,
3471 	    x_msg_data,
3472 	    p_isev_ext_tbl(i));
3473         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3474           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3475             x_return_status := l_return_status;
3476             raise G_EXCEPTION_HALT_VALIDATION;
3477           ELSE
3478             x_return_status := l_return_status;
3479           END IF;
3480         END IF;
3481         EXIT WHEN (i = p_isev_ext_tbl.LAST);
3482         i := p_isev_ext_tbl.NEXT(i);
3483       END LOOP;
3484     END IF;
3485   EXCEPTION
3486     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3487       NULL;
3488     WHEN OTHERS THEN
3489       OKC_API.set_message(p_app_name      => g_app_name,
3490                           p_msg_name      => g_unexpected_error,
3491                           p_token1        => g_sqlcode_token,
3492                           p_token1_value  => sqlcode,
3493                           p_token2        => g_sqlerrm_token,
3494                           p_token2_value  => sqlerrm);
3495       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3496   END LOCK_IA_STARTEND;
3497 
3498   PROCEDURE VALID_IA_STARTEND(
3499     p_api_version	    IN NUMBER,
3500     p_init_msg_list         IN VARCHAR2 ,
3501     x_return_status         OUT NOCOPY VARCHAR2,
3502     x_msg_count             OUT NOCOPY NUMBER,
3503     x_msg_data              OUT NOCOPY VARCHAR2,
3504     p_isev_ext_rec	    IN isev_ext_rec_type) IS
3505   BEGIN
3506     OKC_TIME_PVT.VALID_IA_STARTEND(
3507     p_api_version,
3508     p_init_msg_list,
3509     x_return_status,
3510     x_msg_count,
3511     x_msg_data,
3512     p_isev_ext_rec);
3513   END VALID_IA_STARTEND;
3514 
3515   PROCEDURE VALID_IA_STARTEND(
3516     p_api_version                  IN NUMBER,
3517     p_init_msg_list                IN VARCHAR2 ,
3518     x_return_status                OUT NOCOPY VARCHAR2,
3519     x_msg_count                    OUT NOCOPY NUMBER,
3520     x_msg_data                     OUT NOCOPY VARCHAR2,
3521     p_isev_ext_tbl                     IN isev_ext_tbl_type) IS
3522     i			         NUMBER := 0;
3523     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3524   BEGIN
3525     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3526     IF p_isev_ext_tbl.COUNT > 0 THEN
3527       i := p_isev_ext_tbl.FIRST;
3528       LOOP
3529         VALID_IA_STARTEND(
3530 	    p_api_version,
3531 	    p_init_msg_list,
3532 	    l_return_status,
3533 	    x_msg_count,
3534 	    x_msg_data,
3535 	    p_isev_ext_tbl(i));
3536         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3537           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3538             x_return_status := l_return_status;
3539             raise G_EXCEPTION_HALT_VALIDATION;
3540           ELSE
3541             x_return_status := l_return_status;
3542           END IF;
3543         END IF;
3544         EXIT WHEN (i = p_isev_ext_tbl.LAST);
3545         i := p_isev_ext_tbl.NEXT(i);
3546       END LOOP;
3547     END IF;
3548   EXCEPTION
3549     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3550       NULL;
3551     WHEN OTHERS THEN
3552       OKC_API.set_message(p_app_name      => g_app_name,
3553                           p_msg_name      => g_unexpected_error,
3554                           p_token1        => g_sqlcode_token,
3555                           p_token1_value  => sqlcode,
3556                           p_token2        => g_sqlerrm_token,
3557                           p_token2_value  => sqlerrm);
3558       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3559   END VALID_IA_STARTEND;
3560 
3561   PROCEDURE CREATE_IA_STARTEND(
3562     p_api_version	    IN NUMBER,
3563     p_init_msg_list         IN VARCHAR2 ,
3564     x_return_status         OUT NOCOPY VARCHAR2,
3565     x_msg_count             OUT NOCOPY NUMBER,
3566     x_msg_data              OUT NOCOPY VARCHAR2,
3567     p_isev_rel_rec	            IN isev_rel_rec_type,
3568     x_isev_rel_rec              OUT NOCOPY isev_rel_rec_type) IS
3569     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_IA_STARTEND';
3570     l_return_status	  VARCHAR2(1);
3571     l_isev_rel_rec     isev_rel_rec_type := p_isev_rel_rec;
3572   BEGIN
3573     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3574 					      p_init_msg_list,
3575 					      '_PUB',
3576                                         x_return_status);
3577     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3578       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3579     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3580       raise OKC_API.G_EXCEPTION_ERROR;
3581     END IF;
3582     -- Call user hook for BEFORE
3583     g_isev_rel_rec := l_isev_rel_rec;
3584     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3585     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3586       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3587     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3588       raise OKC_API.G_EXCEPTION_ERROR;
3589     END IF;
3590     l_isev_rel_rec := migrate_isev(l_isev_rel_rec, g_isev_rel_rec);
3591     OKC_TIME_PVT.CREATE_IA_STARTEND(
3592        p_api_version,
3593        p_init_msg_list,
3594        x_return_status,
3595        x_msg_count,
3596        x_msg_data,
3597        p_isev_rel_rec,
3598        x_isev_rel_rec);
3599     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3600       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3601     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3602       raise OKC_API.G_EXCEPTION_ERROR;
3603     END IF;
3604 
3605     -- Call user hook for AFTER
3606     g_isev_rel_rec := x_isev_rel_rec;
3607     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3608     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3609       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3610     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3611       raise OKC_API.G_EXCEPTION_ERROR;
3612     END IF;
3613     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3614   EXCEPTION
3615     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3616       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3617       (l_api_name,
3618        G_PKG_NAME,
3619        'OKC_API.G_RET_STS_ERROR',
3620        x_msg_count,
3621        x_msg_data,
3622        '_PUB');
3623     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3624       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3625       (l_api_name,
3626        G_PKG_NAME,
3627        'OKC_API.G_RET_STS_UNEXP_ERROR',
3628        x_msg_count,
3629        x_msg_data,
3630        '_PUB');
3631     WHEN OTHERS THEN
3632       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3633       (l_api_name,
3634        G_PKG_NAME,
3635        'OTHERS',
3636        x_msg_count,
3637        x_msg_data,
3638        '_PUB');
3639   END CREATE_IA_STARTEND;
3640 
3641   PROCEDURE CREATE_IA_STARTEND(
3642     p_api_version                  IN NUMBER,
3643     p_init_msg_list                IN VARCHAR2 ,
3644     x_return_status                OUT NOCOPY VARCHAR2,
3645     x_msg_count                    OUT NOCOPY NUMBER,
3646     x_msg_data                     OUT NOCOPY VARCHAR2,
3647     p_isev_rel_tbl                     IN isev_rel_tbl_type,
3648     x_isev_rel_tbl                     OUT NOCOPY isev_rel_tbl_type) IS
3649     i			         NUMBER := 0;
3650     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3651   BEGIN
3652     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3653     IF p_isev_rel_tbl.COUNT > 0 THEN
3654       i := p_isev_rel_tbl.FIRST;
3655       LOOP
3656         CREATE_IA_STARTEND(
3657 	    p_api_version,
3658 	    p_init_msg_list,
3659 	    l_return_status,
3660 	    x_msg_count,
3661 	    x_msg_data,
3662 	    p_isev_rel_tbl(i),
3663 	    x_isev_rel_tbl(i));
3664         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3665           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3666             x_return_status := l_return_status;
3667             raise G_EXCEPTION_HALT_VALIDATION;
3668           ELSE
3669             x_return_status := l_return_status;
3670           END IF;
3671         END IF;
3672         EXIT WHEN (i = p_isev_rel_tbl.LAST);
3673         i := p_isev_rel_tbl.Next(i);
3674       END LOOP;
3675     END IF;
3676   EXCEPTION
3677     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3678       NULL;
3679     WHEN OTHERS THEN
3680       OKC_API.set_message(p_app_name      => g_app_name,
3681                           p_msg_name      => g_unexpected_error,
3682                           p_token1        => g_sqlcode_token,
3683                           p_token1_value  => sqlcode,
3684                           p_token2        => g_sqlerrm_token,
3685                           p_token2_value  => sqlerrm);
3686       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3687   END CREATE_IA_STARTEND;
3688 
3689   PROCEDURE UPDATE_IA_STARTEND(
3690     p_api_version	    IN NUMBER,
3691     p_init_msg_list         IN VARCHAR2 ,
3692     x_return_status         OUT NOCOPY VARCHAR2,
3693     x_msg_count             OUT NOCOPY NUMBER,
3694     x_msg_data              OUT NOCOPY VARCHAR2,
3695     p_isev_rel_rec	            IN isev_rel_rec_type,
3696     x_isev_rel_rec              OUT NOCOPY isev_rel_rec_type) IS
3697     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_IA_STARTEND';
3698     l_return_status	  VARCHAR2(1);
3699     l_isev_rel_rec     isev_rel_rec_type := p_isev_rel_rec;
3700   BEGIN
3701     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3702 					      p_init_msg_list,
3703 					      '_PUB',
3704                                         x_return_status);
3705     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3706       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3707     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3708       raise OKC_API.G_EXCEPTION_ERROR;
3709     END IF;
3710     -- Call user hook for BEFORE
3711     g_isev_rel_rec := l_isev_rel_rec;
3712     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3713     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3714       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3715     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3716       raise OKC_API.G_EXCEPTION_ERROR;
3717     END IF;
3718     l_isev_rel_rec := migrate_isev(l_isev_rel_rec, g_isev_rel_rec);
3719     OKC_TIME_PVT.UPDATE_IA_STARTEND(
3720        p_api_version,
3721        p_init_msg_list,
3722        x_return_status,
3723        x_msg_count,
3724        x_msg_data,
3725        p_isev_rel_rec,
3726        x_isev_rel_rec);
3727     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3728       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3729     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3730       raise OKC_API.G_EXCEPTION_ERROR;
3731     END IF;
3732 
3733     -- Call user hook for AFTER
3734     g_isev_rel_rec := x_isev_rel_rec;
3735     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3736     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3737       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3738     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3739       raise OKC_API.G_EXCEPTION_ERROR;
3740     END IF;
3741     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3742   EXCEPTION
3743     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3744       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3745       (l_api_name,
3746        G_PKG_NAME,
3747        'OKC_API.G_RET_STS_ERROR',
3748        x_msg_count,
3749        x_msg_data,
3750        '_PUB');
3751     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3752       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3753       (l_api_name,
3754        G_PKG_NAME,
3755        'OKC_API.G_RET_STS_UNEXP_ERROR',
3756        x_msg_count,
3757        x_msg_data,
3758        '_PUB');
3759     WHEN OTHERS THEN
3760       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3761       (l_api_name,
3762        G_PKG_NAME,
3763        'OTHERS',
3764        x_msg_count,
3765        x_msg_data,
3766        '_PUB');
3767   END UPDATE_IA_STARTEND;
3768 
3769   PROCEDURE UPDATE_IA_STARTEND(
3770     p_api_version                  IN NUMBER,
3771     p_init_msg_list                IN VARCHAR2 ,
3772     x_return_status                OUT NOCOPY VARCHAR2,
3773     x_msg_count                    OUT NOCOPY NUMBER,
3774     x_msg_data                     OUT NOCOPY VARCHAR2,
3775     p_isev_rel_tbl                     IN isev_rel_tbl_type,
3776     x_isev_rel_tbl                     OUT NOCOPY isev_rel_tbl_type) IS
3777     i			         NUMBER := 0;
3778     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3779   BEGIN
3780     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3781     IF p_isev_rel_tbl.COUNT > 0 THEN
3782       i := p_isev_rel_tbl.FIRST;
3783       LOOP
3784         UPDATE_IA_STARTEND(
3785 	    p_api_version,
3786 	    p_init_msg_list,
3787 	    l_return_status,
3788 	    x_msg_count,
3789 	    x_msg_data,
3790 	    p_isev_rel_tbl(i),
3791 	    x_isev_rel_tbl(i));
3792         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3793           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3794             x_return_status := l_return_status;
3795             raise G_EXCEPTION_HALT_VALIDATION;
3796           ELSE
3797             x_return_status := l_return_status;
3798           END IF;
3799         END IF;
3800         EXIT WHEN (i = p_isev_rel_tbl.LAST);
3801         i := p_isev_rel_tbl.Next(i);
3802       END LOOP;
3803     END IF;
3804   EXCEPTION
3805     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3806       NULL;
3807     WHEN OTHERS THEN
3808       OKC_API.set_message(p_app_name      => g_app_name,
3809                           p_msg_name      => g_unexpected_error,
3810                           p_token1        => g_sqlcode_token,
3811                           p_token1_value  => sqlcode,
3812                           p_token2        => g_sqlerrm_token,
3813                           p_token2_value  => sqlerrm);
3814       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3815   END UPDATE_IA_STARTEND;
3816 
3817   PROCEDURE DELETE_IA_STARTEND(
3818     p_api_version	    IN NUMBER,
3819     p_init_msg_list         IN VARCHAR2 ,
3820     x_return_status         OUT NOCOPY VARCHAR2,
3821     x_msg_count             OUT NOCOPY NUMBER,
3822     x_msg_data              OUT NOCOPY VARCHAR2,
3823     p_isev_rel_rec              IN isev_rel_rec_type) IS
3824     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_IA_STARTEND';
3825     l_return_status	  VARCHAR2(1);
3826     l_isev_rel_rec     isev_rel_rec_type := p_isev_rel_rec;
3827   BEGIN
3828     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3829 					      p_init_msg_list,
3830 					      '_PUB',
3831                                         x_return_status);
3832     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3833       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3834     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3835       raise OKC_API.G_EXCEPTION_ERROR;
3836     END IF;
3837     -- Call user hook for BEFORE
3838     g_isev_rel_rec := l_isev_rel_rec;
3839     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
3840     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3841       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3842     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3843       raise OKC_API.G_EXCEPTION_ERROR;
3844     END IF;
3845     OKC_TIME_PVT.DELETE_IA_STARTEND(
3846        p_api_version,
3847        p_init_msg_list,
3848        x_return_status,
3849        x_msg_count,
3850        x_msg_data,
3851        p_isev_rel_rec);
3852     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3853       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3854     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3855       raise OKC_API.G_EXCEPTION_ERROR;
3856     END IF;
3857 
3858     -- Call user hook for AFTER
3859     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
3860     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3861       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3862     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3863       raise OKC_API.G_EXCEPTION_ERROR;
3864     END IF;
3865     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3866   EXCEPTION
3867     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3868       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3869       (l_api_name,
3870        G_PKG_NAME,
3871        'OKC_API.G_RET_STS_ERROR',
3872        x_msg_count,
3873        x_msg_data,
3874        '_PUB');
3875     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3876       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3877       (l_api_name,
3878        G_PKG_NAME,
3879        'OKC_API.G_RET_STS_UNEXP_ERROR',
3880        x_msg_count,
3881        x_msg_data,
3882        '_PUB');
3883     WHEN OTHERS THEN
3884       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3885       (l_api_name,
3886        G_PKG_NAME,
3887        'OTHERS',
3888        x_msg_count,
3889        x_msg_data,
3890        '_PUB');
3891   END DELETE_IA_STARTEND;
3892 
3893   PROCEDURE DELETE_IA_STARTEND(
3894     p_api_version                  IN NUMBER,
3895     p_init_msg_list                IN VARCHAR2 ,
3896     x_return_status                OUT NOCOPY VARCHAR2,
3897     x_msg_count                    OUT NOCOPY NUMBER,
3898     x_msg_data                     OUT NOCOPY VARCHAR2,
3899     p_isev_rel_tbl                     IN isev_rel_tbl_type) IS
3900     i			         NUMBER := 0;
3901     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3902   BEGIN
3903     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3904     IF p_isev_rel_tbl.COUNT > 0 THEN
3905       i := p_isev_rel_tbl.FIRST;
3906       LOOP
3907         DELETE_IA_STARTEND(
3908 	    p_api_version,
3909 	    p_init_msg_list,
3910 	    l_return_status,
3911 	    x_msg_count,
3912 	    x_msg_data,
3913 	    p_isev_rel_tbl(i));
3914         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3915           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3916             x_return_status := l_return_status;
3917             raise G_EXCEPTION_HALT_VALIDATION;
3918           ELSE
3919             x_return_status := l_return_status;
3920           END IF;
3921         END IF;
3922         EXIT WHEN (i = p_isev_rel_tbl.LAST);
3923         i := p_isev_rel_tbl.Next(i);
3924       END LOOP;
3925     END IF;
3926   EXCEPTION
3927     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3928       NULL;
3929     WHEN OTHERS THEN
3930       OKC_API.set_message(p_app_name      => g_app_name,
3931                           p_msg_name      => g_unexpected_error,
3932                           p_token1        => g_sqlcode_token,
3933                           p_token1_value  => sqlcode,
3934                           p_token2        => g_sqlerrm_token,
3935                           p_token2_value  => sqlerrm);
3936       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3937   END DELETE_IA_STARTEND;
3938 
3939   PROCEDURE LOCK_IA_STARTEND(
3940     p_api_version	    IN NUMBER,
3941     p_init_msg_list         IN VARCHAR2 ,
3942     x_return_status         OUT NOCOPY VARCHAR2,
3943     x_msg_count             OUT NOCOPY NUMBER,
3944     x_msg_data              OUT NOCOPY VARCHAR2,
3945     p_isev_rel_rec              IN isev_rel_rec_type) IS
3946   BEGIN
3947     OKC_TIME_PVT.LOCK_IA_STARTEND(
3948     p_api_version,
3949     p_init_msg_list,
3950     x_return_status,
3951     x_msg_count,
3952     x_msg_data,
3953     p_isev_rel_rec);
3954   END LOCK_IA_STARTEND;
3955 
3956   PROCEDURE LOCK_IA_STARTEND(
3957     p_api_version                  IN NUMBER,
3958     p_init_msg_list                IN VARCHAR2 ,
3959     x_return_status                OUT NOCOPY VARCHAR2,
3960     x_msg_count                    OUT NOCOPY NUMBER,
3961     x_msg_data                     OUT NOCOPY VARCHAR2,
3962     p_isev_rel_tbl                     IN isev_rel_tbl_type) IS
3963     i			         NUMBER := 0;
3964     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3965   BEGIN
3966     x_return_status := OKC_API.G_RET_STS_SUCCESS;
3967     IF p_isev_rel_tbl.COUNT > 0 THEN
3968       i := p_isev_rel_tbl.FIRST;
3969       LOOP
3970         LOCK_IA_STARTEND(
3971 	    p_api_version,
3972 	    p_init_msg_list,
3973 	    l_return_status,
3974 	    x_msg_count,
3975 	    x_msg_data,
3976 	    p_isev_rel_tbl(i));
3977         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3978           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3979             x_return_status := l_return_status;
3980             raise G_EXCEPTION_HALT_VALIDATION;
3981           ELSE
3982             x_return_status := l_return_status;
3983           END IF;
3984         END IF;
3985         EXIT WHEN (i = p_isev_rel_tbl.LAST);
3986         i := p_isev_rel_tbl.Next(i);
3987       END LOOP;
3988     END IF;
3989   EXCEPTION
3990     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3991       NULL;
3992     WHEN OTHERS THEN
3993       OKC_API.set_message(p_app_name      => g_app_name,
3994                           p_msg_name      => g_unexpected_error,
3995                           p_token1        => g_sqlcode_token,
3996                           p_token1_value  => sqlcode,
3997                           p_token2        => g_sqlerrm_token,
3998                           p_token2_value  => sqlerrm);
3999       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4000   END LOCK_IA_STARTEND;
4001 
4002   PROCEDURE VALID_IA_STARTEND(
4003     p_api_version	    IN NUMBER,
4004     p_init_msg_list         IN VARCHAR2 ,
4005     x_return_status         OUT NOCOPY VARCHAR2,
4006     x_msg_count             OUT NOCOPY NUMBER,
4007     x_msg_data              OUT NOCOPY VARCHAR2,
4008     p_isev_rel_rec	    IN isev_rel_rec_type) IS
4009   BEGIN
4010     OKC_TIME_PVT.VALID_IA_STARTEND(
4011     p_api_version,
4012     p_init_msg_list,
4013     x_return_status,
4014     x_msg_count,
4015     x_msg_data,
4016     p_isev_rel_rec);
4017   END VALID_IA_STARTEND;
4018 
4019   PROCEDURE VALID_IA_STARTEND(
4020     p_api_version                  IN NUMBER,
4021     p_init_msg_list                IN VARCHAR2 ,
4022     x_return_status                OUT NOCOPY VARCHAR2,
4023     x_msg_count                    OUT NOCOPY NUMBER,
4024     x_msg_data                     OUT NOCOPY VARCHAR2,
4025     p_isev_rel_tbl                     IN isev_rel_tbl_type) IS
4026     i			         NUMBER := 0;
4027     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4028   BEGIN
4029     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4030     IF p_isev_rel_tbl.COUNT > 0 THEN
4031       i := p_isev_rel_tbl.FIRST;
4032       LOOP
4033         VALID_IA_STARTEND(
4034 	    p_api_version,
4035 	    p_init_msg_list,
4036 	    l_return_status,
4037 	    x_msg_count,
4038 	    x_msg_data,
4039 	    p_isev_rel_tbl(i));
4040         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4041           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4042             x_return_status := l_return_status;
4043             raise G_EXCEPTION_HALT_VALIDATION;
4044           ELSE
4045             x_return_status := l_return_status;
4046           END IF;
4047         END IF;
4048         EXIT WHEN (i = p_isev_rel_tbl.LAST);
4049         i := p_isev_rel_tbl.Next(i);
4050       END LOOP;
4051     END IF;
4052   EXCEPTION
4053     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4054       NULL;
4055     WHEN OTHERS THEN
4056       OKC_API.set_message(p_app_name      => g_app_name,
4057                           p_msg_name      => g_unexpected_error,
4058                           p_token1        => g_sqlcode_token,
4059                           p_token1_value  => sqlcode,
4060                           p_token2        => g_sqlerrm_token,
4061                           p_token2_value  => sqlerrm);
4062       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4063   END VALID_IA_STARTEND;
4064 
4065  --------------------------------------------------------------------------
4066 ---The following procedures cater to handling of OKC_TIME_IG_STARTEND
4067  --------------------------------------------------------------------------
4068 
4069   FUNCTION migrate_igsv(p_igsv_ext_rec1 IN igsv_ext_rec_type,
4070                         p_igsv_ext_rec2 IN igsv_ext_rec_type)
4071     RETURN igsv_ext_rec_type IS
4072     l_igsv_ext_rec igsv_ext_rec_type;
4073   BEGIN
4074     l_igsv_ext_rec.id                    := p_igsv_ext_rec1.id;
4075     l_igsv_ext_rec.object_version_number := p_igsv_ext_rec1.object_version_number;
4076     l_igsv_ext_rec.created_by            := p_igsv_ext_rec1.created_by;
4077     l_igsv_ext_rec.creation_date         := p_igsv_ext_rec1.creation_date;
4078     l_igsv_ext_rec.last_updated_by       := p_igsv_ext_rec1.last_updated_by;
4079     l_igsv_ext_rec.last_update_date      := p_igsv_ext_rec1.last_update_date;
4080     l_igsv_ext_rec.last_update_login     := p_igsv_ext_rec1.last_update_login;
4081     l_igsv_ext_rec.tze_id := p_igsv_ext_rec2.tze_id;
4082     l_igsv_ext_rec.sfwt_flag             := p_igsv_ext_rec2.sfwt_flag;
4083     l_igsv_ext_rec.dnz_chr_id         := p_igsv_ext_rec2.dnz_chr_id;
4084     l_igsv_ext_rec.tve_id_limited        := p_igsv_ext_rec2.tve_id_limited;
4085     l_igsv_ext_rec.tve_id_started        := p_igsv_ext_rec2.tve_id_started;
4086     l_igsv_ext_rec.tve_id_ended          := p_igsv_ext_rec2.tve_id_ended;
4087     l_igsv_ext_rec.short_description     := p_igsv_ext_rec2.short_description;
4088     l_igsv_ext_rec.description           := p_igsv_ext_rec2.description;
4089     l_igsv_ext_rec.comments              := p_igsv_ext_rec2.comments;
4090     l_igsv_ext_rec.attribute_category    := p_igsv_ext_rec2.attribute_category;
4091     l_igsv_ext_rec.attribute1            := p_igsv_ext_rec2.attribute1;
4092     l_igsv_ext_rec.attribute2            := p_igsv_ext_rec2.attribute2;
4093     l_igsv_ext_rec.attribute3            := p_igsv_ext_rec2.attribute3;
4094     l_igsv_ext_rec.attribute4            := p_igsv_ext_rec2.attribute4;
4095     l_igsv_ext_rec.attribute5            := p_igsv_ext_rec2.attribute5;
4096     l_igsv_ext_rec.attribute6            := p_igsv_ext_rec2.attribute6;
4097     l_igsv_ext_rec.attribute7            := p_igsv_ext_rec2.attribute7;
4098     l_igsv_ext_rec.attribute8            := p_igsv_ext_rec2.attribute8;
4099     l_igsv_ext_rec.attribute9            := p_igsv_ext_rec2.attribute9;
4100     l_igsv_ext_rec.attribute10           := p_igsv_ext_rec2.attribute10;
4101     l_igsv_ext_rec.attribute11           := p_igsv_ext_rec2.attribute11;
4102     l_igsv_ext_rec.attribute12           := p_igsv_ext_rec2.attribute12;
4103     l_igsv_ext_rec.attribute13           := p_igsv_ext_rec2.attribute13;
4104     l_igsv_ext_rec.attribute14           := p_igsv_ext_rec2.attribute14;
4105     l_igsv_ext_rec.attribute15           := p_igsv_ext_rec2.attribute15;
4106     RETURN (l_igsv_ext_rec);
4107   END migrate_igsv;
4108 
4109   FUNCTION migrate_igsv(p_igsv_ext_tbl1 IN igsv_ext_tbl_type,
4110     p_igsv_ext_tbl2 IN igsv_ext_tbl_type)
4111     RETURN igsv_ext_tbl_type IS
4112     l_igsv_ext_tbl igsv_ext_tbl_type;
4113     i NUMBER := 0;
4114     j NUMBER := 0;
4115   BEGIN
4116     -- If the user hook deleted some records or added some new records in the table,
4117     -- discard the change and simply copy the original table.
4118     IF p_igsv_ext_tbl1.COUNT <> p_igsv_ext_tbl2.COUNT THEN
4119       l_igsv_ext_tbl := p_igsv_ext_tbl1;
4120     ELSE
4121       IF (p_igsv_ext_tbl1.COUNT > 0) THEN
4122         i := p_igsv_ext_tbl1.FIRST;
4123         j := p_igsv_ext_tbl2.FIRST;
4124         LOOP
4125           l_igsv_ext_tbl(i) := migrate_igsv(p_igsv_ext_tbl1(i), p_igsv_ext_tbl2(j));
4126           EXIT WHEN (i = p_igsv_ext_tbl1.LAST);
4127           i := p_igsv_ext_tbl1.NEXT(i);
4128           j := p_igsv_ext_tbl2.NEXT(j);
4129         END LOOP;
4130       END IF;
4131     END IF;
4132     RETURN (l_igsv_ext_tbl);
4133   END migrate_igsv;
4134 
4135   PROCEDURE CREATE_IG_STARTEND(
4136     p_api_version	    IN NUMBER,
4137     p_init_msg_list         IN VARCHAR2 ,
4138     x_return_status         OUT NOCOPY VARCHAR2,
4139     x_msg_count             OUT NOCOPY NUMBER,
4140     x_msg_data              OUT NOCOPY VARCHAR2,
4141     p_igsv_ext_rec	            IN igsv_ext_rec_type,
4142     x_igsv_ext_rec              OUT NOCOPY igsv_ext_rec_type) IS
4143     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_IG_STARTEND';
4144     l_return_status	  VARCHAR2(1);
4145     l_igsv_ext_rec     igsv_ext_rec_type := p_igsv_ext_rec;
4146   BEGIN
4147     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4148 					      p_init_msg_list,
4149 					      '_PUB',
4150                                         x_return_status);
4151     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4152       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4153     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4154       raise OKC_API.G_EXCEPTION_ERROR;
4155     END IF;
4156     -- Call user hook for BEFORE
4157     g_igsv_ext_rec := l_igsv_ext_rec;
4158     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4159     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4160       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4161     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4162       raise OKC_API.G_EXCEPTION_ERROR;
4163     END IF;
4164     l_igsv_ext_rec := migrate_igsv(l_igsv_ext_rec, g_igsv_ext_rec);
4165     OKC_TIME_PVT.CREATE_IG_STARTEND(
4166        p_api_version,
4167        p_init_msg_list,
4168        x_return_status,
4169        x_msg_count,
4170        x_msg_data,
4171        p_igsv_ext_rec,
4172        x_igsv_ext_rec);
4173     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4174       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4175     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4176       raise OKC_API.G_EXCEPTION_ERROR;
4177     END IF;
4178 
4179     -- Call user hook for AFTER
4180     g_igsv_ext_rec := x_igsv_ext_rec;
4181     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
4182     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4183       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4184     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4185       raise OKC_API.G_EXCEPTION_ERROR;
4186     END IF;
4187     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4188   EXCEPTION
4189     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4190       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4191       (l_api_name,
4192        G_PKG_NAME,
4193        'OKC_API.G_RET_STS_ERROR',
4194        x_msg_count,
4195        x_msg_data,
4196        '_PUB');
4197     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4198       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4199       (l_api_name,
4200        G_PKG_NAME,
4201        'OKC_API.G_RET_STS_UNEXP_ERROR',
4202        x_msg_count,
4203        x_msg_data,
4204        '_PUB');
4205     WHEN OTHERS THEN
4206       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4207       (l_api_name,
4208        G_PKG_NAME,
4209        'OTHERS',
4210        x_msg_count,
4211        x_msg_data,
4212        '_PUB');
4213   END CREATE_IG_STARTEND;
4214 
4215   PROCEDURE CREATE_IG_STARTEND(
4216     p_api_version                  IN NUMBER,
4217     p_init_msg_list                IN VARCHAR2 ,
4218     x_return_status                OUT NOCOPY VARCHAR2,
4219     x_msg_count                    OUT NOCOPY NUMBER,
4220     x_msg_data                     OUT NOCOPY VARCHAR2,
4221     p_igsv_ext_tbl                     IN igsv_ext_tbl_type,
4222     x_igsv_ext_tbl                     OUT NOCOPY igsv_ext_tbl_type) IS
4223     i			         NUMBER := 0;
4224     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4225   BEGIN
4226     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4227     IF p_igsv_ext_tbl.COUNT > 0 THEN
4228       i := p_igsv_ext_tbl.FIRST;
4229       LOOP
4230         CREATE_IG_STARTEND(
4231 	    p_api_version,
4232 	    p_init_msg_list,
4233 	    l_return_status,
4234 	    x_msg_count,
4235 	    x_msg_data,
4236 	    p_igsv_ext_tbl(i),
4237 	    x_igsv_ext_tbl(i));
4238         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4239           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4240             x_return_status := l_return_status;
4241             raise G_EXCEPTION_HALT_VALIDATION;
4242           ELSE
4243             x_return_status := l_return_status;
4244           END IF;
4245         END IF;
4246         EXIT WHEN (i = p_igsv_ext_tbl.LAST);
4247         i := p_igsv_ext_tbl.NEXT(i);
4248       END LOOP;
4249     END IF;
4250   EXCEPTION
4251     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4252       NULL;
4253     WHEN OTHERS THEN
4254       OKC_API.set_message(p_app_name      => g_app_name,
4255                           p_msg_name      => g_unexpected_error,
4256                           p_token1        => g_sqlcode_token,
4257                           p_token1_value  => sqlcode,
4258                           p_token2        => g_sqlerrm_token,
4259                           p_token2_value  => sqlerrm);
4260       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4261   END CREATE_IG_STARTEND;
4262 
4263   PROCEDURE UPDATE_IG_STARTEND(
4264     p_api_version	    IN NUMBER,
4265     p_init_msg_list         IN VARCHAR2 ,
4266     x_return_status         OUT NOCOPY VARCHAR2,
4267     x_msg_count             OUT NOCOPY NUMBER,
4268     x_msg_data              OUT NOCOPY VARCHAR2,
4269     p_igsv_ext_rec	            IN igsv_ext_rec_type,
4270     x_igsv_ext_rec              OUT NOCOPY igsv_ext_rec_type) IS
4271     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_IG_STARTEND';
4272     l_return_status	  VARCHAR2(1);
4273     l_igsv_ext_rec     igsv_ext_rec_type := p_igsv_ext_rec;
4274   BEGIN
4275     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4276 					      p_init_msg_list,
4277 					      '_PUB',
4278                                         x_return_status);
4279     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4280       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4281     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4282       raise OKC_API.G_EXCEPTION_ERROR;
4283     END IF;
4284     -- Call user hook for BEFORE
4285     g_igsv_ext_rec := l_igsv_ext_rec;
4286     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4287     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4288       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4289     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4290       raise OKC_API.G_EXCEPTION_ERROR;
4291     END IF;
4292     l_igsv_ext_rec := migrate_igsv(l_igsv_ext_rec, g_igsv_ext_rec);
4293     OKC_TIME_PVT.UPDATE_IG_STARTEND(
4294        p_api_version,
4295        p_init_msg_list,
4296        x_return_status,
4297        x_msg_count,
4298        x_msg_data,
4299        p_igsv_ext_rec,
4300        x_igsv_ext_rec);
4301     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4302       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4303     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4304       raise OKC_API.G_EXCEPTION_ERROR;
4305     END IF;
4306 
4307     -- Call user hook for AFTER
4308     g_igsv_ext_rec := x_igsv_ext_rec;
4309     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
4310     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4311       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4312     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4313       raise OKC_API.G_EXCEPTION_ERROR;
4314     END IF;
4315     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4316   EXCEPTION
4317     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4318       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4319       (l_api_name,
4320        G_PKG_NAME,
4321        'OKC_API.G_RET_STS_ERROR',
4322        x_msg_count,
4323        x_msg_data,
4324        '_PUB');
4325     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4326       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4327       (l_api_name,
4328        G_PKG_NAME,
4329        'OKC_API.G_RET_STS_UNEXP_ERROR',
4330        x_msg_count,
4331        x_msg_data,
4332        '_PUB');
4333     WHEN OTHERS THEN
4334       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4335       (l_api_name,
4336        G_PKG_NAME,
4337        'OTHERS',
4338        x_msg_count,
4339        x_msg_data,
4340        '_PUB');
4341   END UPDATE_IG_STARTEND;
4342 
4343   PROCEDURE UPDATE_IG_STARTEND(
4344     p_api_version                  IN NUMBER,
4345     p_init_msg_list                IN VARCHAR2 ,
4346     x_return_status                OUT NOCOPY VARCHAR2,
4347     x_msg_count                    OUT NOCOPY NUMBER,
4348     x_msg_data                     OUT NOCOPY VARCHAR2,
4349     p_igsv_ext_tbl                     IN igsv_ext_tbl_type,
4350     x_igsv_ext_tbl                     OUT NOCOPY igsv_ext_tbl_type) IS
4351     i			         NUMBER := 0;
4352     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4353   BEGIN
4354     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4355     IF p_igsv_ext_tbl.COUNT > 0 THEN
4356       i := p_igsv_ext_tbl.FIRST;
4357       LOOP
4358         UPDATE_IG_STARTEND(
4359 	    p_api_version,
4360 	    p_init_msg_list,
4361 	    l_return_status,
4362 	    x_msg_count,
4363 	    x_msg_data,
4364 	    p_igsv_ext_tbl(i),
4365 	    x_igsv_ext_tbl(i));
4366         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4367           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4368             x_return_status := l_return_status;
4369             raise G_EXCEPTION_HALT_VALIDATION;
4370           ELSE
4371             x_return_status := l_return_status;
4372           END IF;
4373         END IF;
4374         EXIT WHEN (i = p_igsv_ext_tbl.LAST);
4375         i := p_igsv_ext_tbl.NEXT(i);
4376       END LOOP;
4377     END IF;
4378   EXCEPTION
4379     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4380       NULL;
4381     WHEN OTHERS THEN
4382       OKC_API.set_message(p_app_name      => g_app_name,
4383                           p_msg_name      => g_unexpected_error,
4384                           p_token1        => g_sqlcode_token,
4385                           p_token1_value  => sqlcode,
4386                           p_token2        => g_sqlerrm_token,
4387                           p_token2_value  => sqlerrm);
4388       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4389   END UPDATE_IG_STARTEND;
4390 
4391   PROCEDURE DELETE_IG_STARTEND(
4392     p_api_version	    IN NUMBER,
4393     p_init_msg_list         IN VARCHAR2 ,
4394     x_return_status         OUT NOCOPY VARCHAR2,
4395     x_msg_count             OUT NOCOPY NUMBER,
4396     x_msg_data              OUT NOCOPY VARCHAR2,
4397     p_igsv_ext_rec              IN igsv_ext_rec_type) IS
4398     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_IG_STARTEND';
4399     l_return_status	  VARCHAR2(1);
4400     l_igsv_ext_rec     igsv_ext_rec_type := p_igsv_ext_rec;
4401   BEGIN
4402     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4403 					      p_init_msg_list,
4404 					      '_PUB',
4405                                         x_return_status);
4406     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4407       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4408     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4409       raise OKC_API.G_EXCEPTION_ERROR;
4410     END IF;
4411     -- Call user hook for BEFORE
4412     g_igsv_ext_rec := l_igsv_ext_rec;
4413     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4414     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4415       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4416     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4417       raise OKC_API.G_EXCEPTION_ERROR;
4418     END IF;
4419     OKC_TIME_PVT.DELETE_IG_STARTEND(
4420        p_api_version,
4421        p_init_msg_list,
4422        x_return_status,
4423        x_msg_count,
4424        x_msg_data,
4425        p_igsv_ext_rec);
4426     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4427       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4428     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4429       raise OKC_API.G_EXCEPTION_ERROR;
4430     END IF;
4431 
4432     -- Call user hook for AFTER
4433     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
4434     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4435       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4436     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4437       raise OKC_API.G_EXCEPTION_ERROR;
4438     END IF;
4439     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4440   EXCEPTION
4441     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4442       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4443       (l_api_name,
4444        G_PKG_NAME,
4445        'OKC_API.G_RET_STS_ERROR',
4446        x_msg_count,
4447        x_msg_data,
4448        '_PUB');
4449     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4450       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4451       (l_api_name,
4452        G_PKG_NAME,
4453        'OKC_API.G_RET_STS_UNEXP_ERROR',
4454        x_msg_count,
4455        x_msg_data,
4456        '_PUB');
4457     WHEN OTHERS THEN
4458       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4459       (l_api_name,
4460        G_PKG_NAME,
4461        'OTHERS',
4462        x_msg_count,
4463        x_msg_data,
4464        '_PUB');
4465   END DELETE_IG_STARTEND;
4466 
4467   PROCEDURE DELETE_IG_STARTEND(
4468     p_api_version                  IN NUMBER,
4469     p_init_msg_list                IN VARCHAR2 ,
4470     x_return_status                OUT NOCOPY VARCHAR2,
4471     x_msg_count                    OUT NOCOPY NUMBER,
4472     x_msg_data                     OUT NOCOPY VARCHAR2,
4473     p_igsv_ext_tbl                     IN igsv_ext_tbl_type) IS
4474     i			         NUMBER := 0;
4475     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4476   BEGIN
4477     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4478     IF p_igsv_ext_tbl.COUNT > 0 THEN
4479       i := p_igsv_ext_tbl.FIRST;
4480       LOOP
4481         DELETE_IG_STARTEND(
4482 	    p_api_version,
4483 	    p_init_msg_list,
4484 	    l_return_status,
4485 	    x_msg_count,
4486 	    x_msg_data,
4487 	    p_igsv_ext_tbl(i));
4488         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4489           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4490             x_return_status := l_return_status;
4491             raise G_EXCEPTION_HALT_VALIDATION;
4492           ELSE
4493             x_return_status := l_return_status;
4494           END IF;
4495         END IF;
4496         EXIT WHEN (i = p_igsv_ext_tbl.LAST);
4497         i := p_igsv_ext_tbl.NEXT(i);
4498       END LOOP;
4499     END IF;
4500   EXCEPTION
4501     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4502       NULL;
4503     WHEN OTHERS THEN
4504       OKC_API.set_message(p_app_name      => g_app_name,
4505                           p_msg_name      => g_unexpected_error,
4506                           p_token1        => g_sqlcode_token,
4507                           p_token1_value  => sqlcode,
4508                           p_token2        => g_sqlerrm_token,
4509                           p_token2_value  => sqlerrm);
4510       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4511   END DELETE_IG_STARTEND;
4512 
4513   PROCEDURE LOCK_IG_STARTEND(
4514     p_api_version	    IN NUMBER,
4515     p_init_msg_list         IN VARCHAR2 ,
4516     x_return_status         OUT NOCOPY VARCHAR2,
4517     x_msg_count             OUT NOCOPY NUMBER,
4518     x_msg_data              OUT NOCOPY VARCHAR2,
4519     p_igsv_ext_rec		    IN igsv_ext_rec_type) IS
4520   BEGIN
4521     OKC_TIME_PVT.LOCK_IG_STARTEND(
4522     p_api_version,
4523     p_init_msg_list,
4524     x_return_status,
4525     x_msg_count,
4526     x_msg_data,
4527     p_igsv_ext_rec);
4528   END LOCK_IG_STARTEND;
4529 
4530   PROCEDURE LOCK_IG_STARTEND(
4531     p_api_version                  IN NUMBER,
4532     p_init_msg_list                IN VARCHAR2 ,
4533     x_return_status                OUT NOCOPY VARCHAR2,
4534     x_msg_count                    OUT NOCOPY NUMBER,
4535     x_msg_data                     OUT NOCOPY VARCHAR2,
4536     p_igsv_ext_tbl                     IN igsv_ext_tbl_type) IS
4537     i			         NUMBER := 0;
4538     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4539   BEGIN
4540     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4541     IF p_igsv_ext_tbl.COUNT > 0 THEN
4542       i := p_igsv_ext_tbl.FIRST;
4543       LOOP
4544         LOCK_IG_STARTEND(
4545 	    p_api_version,
4546 	    p_init_msg_list,
4547 	    l_return_status,
4548 	    x_msg_count,
4549 	    x_msg_data,
4550 	    p_igsv_ext_tbl(i));
4551         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4552           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4553             x_return_status := l_return_status;
4554             raise G_EXCEPTION_HALT_VALIDATION;
4555           ELSE
4556             x_return_status := l_return_status;
4557           END IF;
4558         END IF;
4559         EXIT WHEN (i = p_igsv_ext_tbl.LAST);
4560         i := p_igsv_ext_tbl.NEXT(i);
4561       END LOOP;
4562     END IF;
4563   EXCEPTION
4564     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4565       NULL;
4566     WHEN OTHERS THEN
4567       OKC_API.set_message(p_app_name      => g_app_name,
4568                           p_msg_name      => g_unexpected_error,
4569                           p_token1        => g_sqlcode_token,
4570                           p_token1_value  => sqlcode,
4571                           p_token2        => g_sqlerrm_token,
4572                           p_token2_value  => sqlerrm);
4573       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4574   END LOCK_IG_STARTEND;
4575 
4576   PROCEDURE VALID_IG_STARTEND(
4577     p_api_version	    IN NUMBER,
4578     p_init_msg_list         IN VARCHAR2 ,
4579     x_return_status         OUT NOCOPY VARCHAR2,
4580     x_msg_count             OUT NOCOPY NUMBER,
4581     x_msg_data              OUT NOCOPY VARCHAR2,
4582     p_igsv_ext_rec		    IN igsv_ext_rec_type) IS
4583   BEGIN
4584     OKC_TIME_PVT.VALID_IG_STARTEND(
4585     p_api_version,
4586     p_init_msg_list,
4587     x_return_status,
4588     x_msg_count,
4589     x_msg_data,
4590     p_igsv_ext_rec);
4591   END VALID_IG_STARTEND;
4592 
4593   PROCEDURE VALID_IG_STARTEND(
4594     p_api_version                  IN NUMBER,
4595     p_init_msg_list                IN VARCHAR2 ,
4596     x_return_status                OUT NOCOPY VARCHAR2,
4597     x_msg_count                    OUT NOCOPY NUMBER,
4598     x_msg_data                     OUT NOCOPY VARCHAR2,
4599     p_igsv_ext_tbl                     IN igsv_ext_tbl_type) IS
4600     i			         NUMBER := 0;
4601     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4602   BEGIN
4603     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4604     IF p_igsv_ext_tbl.COUNT > 0 THEN
4605       i := p_igsv_ext_tbl.FIRST;
4606       LOOP
4607         VALID_IG_STARTEND(
4608 	    p_api_version,
4609 	    p_init_msg_list,
4610 	    l_return_status,
4611 	    x_msg_count,
4612 	    x_msg_data,
4613 	    p_igsv_ext_tbl(i));
4614         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4615           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4616             x_return_status := l_return_status;
4617             raise G_EXCEPTION_HALT_VALIDATION;
4618           ELSE
4619             x_return_status := l_return_status;
4620           END IF;
4621         END IF;
4622         EXIT WHEN (i = p_igsv_ext_tbl.LAST);
4623         i := p_igsv_ext_tbl.NEXT(i);
4624       END LOOP;
4625     END IF;
4626   EXCEPTION
4627     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4628       NULL;
4629     WHEN OTHERS THEN
4630       OKC_API.set_message(p_app_name      => g_app_name,
4631                           p_msg_name      => g_unexpected_error,
4632                           p_token1        => g_sqlcode_token,
4633                           p_token1_value  => sqlcode,
4634                           p_token2        => g_sqlerrm_token,
4635                           p_token2_value  => sqlerrm);
4636       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4637   END VALID_IG_STARTEND;
4638 
4639 ---The following procedures cater to handling of OKC_TIME_CYCLE
4640  --------------------------------------------------------------------------
4641 
4642   FUNCTION migrate_cylv(p_cylv_ext_rec1 IN cylv_ext_rec_type,
4643                         p_cylv_ext_rec2 IN cylv_ext_rec_type)
4644     RETURN cylv_ext_rec_type IS
4645     l_cylv_ext_rec cylv_ext_rec_type;
4646   BEGIN
4647     l_cylv_ext_rec.id                    := p_cylv_ext_rec1.id;
4648     l_cylv_ext_rec.object_version_number := p_cylv_ext_rec1.object_version_number;
4649     l_cylv_ext_rec.created_by            := p_cylv_ext_rec1.created_by;
4650     l_cylv_ext_rec.creation_date         := p_cylv_ext_rec1.creation_date;
4651     l_cylv_ext_rec.last_updated_by       := p_cylv_ext_rec1.last_updated_by;
4652     l_cylv_ext_rec.last_update_date      := p_cylv_ext_rec1.last_update_date;
4653     l_cylv_ext_rec.last_update_login     := p_cylv_ext_rec1.last_update_login;
4654     l_cylv_ext_rec.tve_id_limited         := p_cylv_ext_rec2.tve_id_limited;
4655     l_cylv_ext_rec.limited_start_date        := p_cylv_ext_rec2.limited_start_date;
4656     l_cylv_ext_rec.limited_end_date        := p_cylv_ext_rec2.limited_end_date;
4657     l_cylv_ext_rec.tze_id := p_cylv_ext_rec2.tze_id;
4658     l_cylv_ext_rec.name              := p_cylv_ext_rec2.name;
4659     l_cylv_ext_rec.interval_yn          := p_cylv_ext_rec2.interval_yn;
4660     l_cylv_ext_rec.active_yn          := p_cylv_ext_rec2.active_yn;
4661     l_cylv_ext_rec.uom_code          := p_cylv_ext_rec2.uom_code;
4662     l_cylv_ext_rec.duration          := p_cylv_ext_rec2.duration;
4663     l_cylv_ext_rec.spn_id                := p_cylv_ext_rec2.spn_id;
4664     l_cylv_ext_rec.sfwt_flag             := p_cylv_ext_rec2.sfwt_flag;
4665     l_cylv_ext_rec.short_description     := p_cylv_ext_rec2.short_description;
4666     l_cylv_ext_rec.description           := p_cylv_ext_rec2.description;
4667     l_cylv_ext_rec.comments              := p_cylv_ext_rec2.comments;
4668     l_cylv_ext_rec.attribute_category    := p_cylv_ext_rec2.attribute_category;
4669     l_cylv_ext_rec.attribute1            := p_cylv_ext_rec2.attribute1;
4670     l_cylv_ext_rec.attribute2            := p_cylv_ext_rec2.attribute2;
4671     l_cylv_ext_rec.attribute3            := p_cylv_ext_rec2.attribute3;
4672     l_cylv_ext_rec.attribute4            := p_cylv_ext_rec2.attribute4;
4673     l_cylv_ext_rec.attribute5            := p_cylv_ext_rec2.attribute5;
4674     l_cylv_ext_rec.attribute6            := p_cylv_ext_rec2.attribute6;
4675     l_cylv_ext_rec.attribute7            := p_cylv_ext_rec2.attribute7;
4676     l_cylv_ext_rec.attribute8            := p_cylv_ext_rec2.attribute8;
4677     l_cylv_ext_rec.attribute9            := p_cylv_ext_rec2.attribute9;
4678     l_cylv_ext_rec.attribute10           := p_cylv_ext_rec2.attribute10;
4679     l_cylv_ext_rec.attribute11           := p_cylv_ext_rec2.attribute11;
4680     l_cylv_ext_rec.attribute12           := p_cylv_ext_rec2.attribute12;
4681     l_cylv_ext_rec.attribute13           := p_cylv_ext_rec2.attribute13;
4682     l_cylv_ext_rec.attribute14           := p_cylv_ext_rec2.attribute14;
4683     l_cylv_ext_rec.attribute15           := p_cylv_ext_rec2.attribute15;
4684     RETURN (l_cylv_ext_rec);
4685   END migrate_cylv;
4686 
4687   FUNCTION migrate_cylv(p_cylv_ext_tbl1 IN cylv_ext_tbl_type,
4688     p_cylv_ext_tbl2 IN cylv_ext_tbl_type)
4689     RETURN cylv_ext_tbl_type IS
4690     l_cylv_ext_tbl cylv_ext_tbl_type;
4691     i NUMBER := 0;
4692     j NUMBER := 0;
4693   BEGIN
4694     -- If the user hook deleted some records or added some new records in the table,
4695     -- discard the change and simply copy the original table.
4696     IF p_cylv_ext_tbl1.COUNT <> p_cylv_ext_tbl2.COUNT THEN
4697       l_cylv_ext_tbl := p_cylv_ext_tbl1;
4698     ELSE
4699       IF (p_cylv_ext_tbl1.COUNT > 0) THEN
4700         i := p_cylv_ext_tbl1.FIRST;
4701         j := p_cylv_ext_tbl2.FIRST;
4702         LOOP
4703           l_cylv_ext_tbl(i) := migrate_cylv(p_cylv_ext_tbl1(i), p_cylv_ext_tbl2(j));
4704           EXIT WHEN (i = p_cylv_ext_tbl1.LAST);
4705           i := p_cylv_ext_tbl1.NEXT(i);
4706           j := p_cylv_ext_tbl2.NEXT(j);
4707         END LOOP;
4708       END IF;
4709     END IF;
4710     RETURN (l_cylv_ext_tbl);
4711   END migrate_cylv;
4712 
4713   PROCEDURE CREATE_CYCLE(
4714     p_api_version	    IN NUMBER,
4715     p_init_msg_list         IN VARCHAR2 ,
4716     x_return_status         OUT NOCOPY VARCHAR2,
4717     x_msg_count             OUT NOCOPY NUMBER,
4718     x_msg_data              OUT NOCOPY VARCHAR2,
4719     p_cylv_ext_rec	            IN cylv_ext_rec_type,
4720     x_cylv_ext_rec              OUT NOCOPY cylv_ext_rec_type) IS
4721     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_CYCLE';
4722     l_return_status	  VARCHAR2(1);
4723     l_cylv_ext_rec     cylv_ext_rec_type := p_cylv_ext_rec;
4724   BEGIN
4725     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4726 					      p_init_msg_list,
4727 					      '_PUB',
4728                                         x_return_status);
4729     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4730       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4731     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4732       raise OKC_API.G_EXCEPTION_ERROR;
4733     END IF;
4734     -- Call user hook for BEFORE
4735     g_cylv_ext_rec := l_cylv_ext_rec;
4736     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4737     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4738       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4739     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4740       raise OKC_API.G_EXCEPTION_ERROR;
4741     END IF;
4742     l_cylv_ext_rec := migrate_cylv(l_cylv_ext_rec, g_cylv_ext_rec);
4743     OKC_TIME_PVT.CREATE_CYCLE(
4744        p_api_version,
4745        p_init_msg_list,
4746        x_return_status,
4747        x_msg_count,
4748        x_msg_data,
4749        p_cylv_ext_rec,
4750        x_cylv_ext_rec);
4751     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4752       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4753     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4754       raise OKC_API.G_EXCEPTION_ERROR;
4755     END IF;
4756 
4757     -- Call user hook for AFTER
4758     g_cylv_ext_rec := x_cylv_ext_rec;
4759     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
4760     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4761       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4762     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4763       raise OKC_API.G_EXCEPTION_ERROR;
4764     END IF;
4765     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4766   EXCEPTION
4767     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4768       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4769       (l_api_name,
4770        G_PKG_NAME,
4771        'OKC_API.G_RET_STS_ERROR',
4772        x_msg_count,
4773        x_msg_data,
4774        '_PUB');
4775     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4776       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4777       (l_api_name,
4778        G_PKG_NAME,
4779        'OKC_API.G_RET_STS_UNEXP_ERROR',
4780        x_msg_count,
4781        x_msg_data,
4782        '_PUB');
4783     WHEN OTHERS THEN
4784       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4785       (l_api_name,
4786        G_PKG_NAME,
4787        'OTHERS',
4788        x_msg_count,
4789        x_msg_data,
4790        '_PUB');
4791   END CREATE_CYCLE;
4792 
4793   PROCEDURE CREATE_CYCLE(
4794     p_api_version                  IN NUMBER,
4795     p_init_msg_list                IN VARCHAR2 ,
4796     x_return_status                OUT NOCOPY VARCHAR2,
4797     x_msg_count                    OUT NOCOPY NUMBER,
4798     x_msg_data                     OUT NOCOPY VARCHAR2,
4799     p_cylv_ext_tbl                     IN cylv_ext_tbl_type,
4800     x_cylv_ext_tbl                     OUT NOCOPY cylv_ext_tbl_type) IS
4801     i			         NUMBER := 0;
4802     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4803   BEGIN
4804     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4805     IF p_cylv_ext_tbl.COUNT > 0 THEN
4806       i := p_cylv_ext_tbl.FIRST;
4807       LOOP
4808         CREATE_CYCLE(
4809 	    p_api_version,
4810 	    p_init_msg_list,
4811 	    l_return_status,
4812 	    x_msg_count,
4813 	    x_msg_data,
4814 	    p_cylv_ext_tbl(i),
4815 	    x_cylv_ext_tbl(i));
4816         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4817           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4818             x_return_status := l_return_status;
4819             raise G_EXCEPTION_HALT_VALIDATION;
4820           ELSE
4821             x_return_status := l_return_status;
4822           END IF;
4823         END IF;
4824         EXIT WHEN (i = p_cylv_ext_tbl.LAST);
4825         i := p_cylv_ext_tbl.NEXT(i);
4826       END LOOP;
4827     END IF;
4828   EXCEPTION
4829     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4830       NULL;
4831     WHEN OTHERS THEN
4832       OKC_API.set_message(p_app_name      => g_app_name,
4833                           p_msg_name      => g_unexpected_error,
4834                           p_token1        => g_sqlcode_token,
4835                           p_token1_value  => sqlcode,
4836                           p_token2        => g_sqlerrm_token,
4837                           p_token2_value  => sqlerrm);
4838       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4839   END CREATE_CYCLE;
4840 
4841   PROCEDURE UPDATE_CYCLE(
4842     p_api_version	    IN NUMBER,
4843     p_init_msg_list         IN VARCHAR2 ,
4844     x_return_status         OUT NOCOPY VARCHAR2,
4845     x_msg_count             OUT NOCOPY NUMBER,
4846     x_msg_data              OUT NOCOPY VARCHAR2,
4847     p_cylv_ext_rec	            IN cylv_ext_rec_type,
4848     x_cylv_ext_rec              OUT NOCOPY cylv_ext_rec_type) IS
4849     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_CYCLE';
4850     l_return_status	  VARCHAR2(1);
4851     l_cylv_ext_rec     cylv_ext_rec_type := p_cylv_ext_rec;
4852   BEGIN
4853     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4854 					      p_init_msg_list,
4855 					      '_PUB',
4856                                         x_return_status);
4857     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4858       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4859     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4860       raise OKC_API.G_EXCEPTION_ERROR;
4861     END IF;
4862     -- Call user hook for BEFORE
4863     g_cylv_ext_rec := l_cylv_ext_rec;
4864     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4865     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4866       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4867     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4868       raise OKC_API.G_EXCEPTION_ERROR;
4869     END IF;
4870     l_cylv_ext_rec := migrate_cylv(l_cylv_ext_rec, g_cylv_ext_rec);
4871     OKC_TIME_PVT.UPDATE_CYCLE(
4872        p_api_version,
4873        p_init_msg_list,
4874        x_return_status,
4875        x_msg_count,
4876        x_msg_data,
4877        p_cylv_ext_rec,
4878        x_cylv_ext_rec);
4879     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4880       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4881     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4882       raise OKC_API.G_EXCEPTION_ERROR;
4883     END IF;
4884 
4885     -- Call user hook for AFTER
4886     g_cylv_ext_rec := x_cylv_ext_rec;
4887     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
4888     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4889       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4890     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4891       raise OKC_API.G_EXCEPTION_ERROR;
4892     END IF;
4893     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4894   EXCEPTION
4895     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4896       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4897       (l_api_name,
4898        G_PKG_NAME,
4899        'OKC_API.G_RET_STS_ERROR',
4900        x_msg_count,
4901        x_msg_data,
4902        '_PUB');
4903     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4904       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4905       (l_api_name,
4906        G_PKG_NAME,
4907        'OKC_API.G_RET_STS_UNEXP_ERROR',
4908        x_msg_count,
4909        x_msg_data,
4910        '_PUB');
4911     WHEN OTHERS THEN
4912       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4913       (l_api_name,
4914        G_PKG_NAME,
4915        'OTHERS',
4916        x_msg_count,
4917        x_msg_data,
4918        '_PUB');
4919   END UPDATE_CYCLE;
4920 
4921   PROCEDURE UPDATE_CYCLE(
4922     p_api_version                  IN NUMBER,
4923     p_init_msg_list                IN VARCHAR2 ,
4924     x_return_status                OUT NOCOPY VARCHAR2,
4925     x_msg_count                    OUT NOCOPY NUMBER,
4926     x_msg_data                     OUT NOCOPY VARCHAR2,
4927     p_cylv_ext_tbl                     IN cylv_ext_tbl_type,
4928     x_cylv_ext_tbl                     OUT NOCOPY cylv_ext_tbl_type) IS
4929     i			         NUMBER := 0;
4930     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4931   BEGIN
4932     x_return_status := OKC_API.G_RET_STS_SUCCESS;
4933     IF p_cylv_ext_tbl.COUNT > 0 THEN
4934       i := p_cylv_ext_tbl.FIRST;
4935       LOOP
4936         UPDATE_CYCLE(
4937 	    p_api_version,
4938 	    p_init_msg_list,
4939 	    l_return_status,
4940 	    x_msg_count,
4941 	    x_msg_data,
4942 	    p_cylv_ext_tbl(i),
4943 	    x_cylv_ext_tbl(i));
4944         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4945           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4946             x_return_status := l_return_status;
4947             raise G_EXCEPTION_HALT_VALIDATION;
4948           ELSE
4949             x_return_status := l_return_status;
4950           END IF;
4951         END IF;
4952         EXIT WHEN (i = p_cylv_ext_tbl.LAST);
4953         i := p_cylv_ext_tbl.NEXT(i);
4954       END LOOP;
4955     END IF;
4956   EXCEPTION
4957     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4958       NULL;
4959     WHEN OTHERS THEN
4960       OKC_API.set_message(p_app_name      => g_app_name,
4961                           p_msg_name      => g_unexpected_error,
4962                           p_token1        => g_sqlcode_token,
4963                           p_token1_value  => sqlcode,
4964                           p_token2        => g_sqlerrm_token,
4965                           p_token2_value  => sqlerrm);
4966       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4967   END UPDATE_CYCLE;
4968 
4969   PROCEDURE DELETE_CYCLE(
4970     p_api_version	    IN NUMBER,
4971     p_init_msg_list         IN VARCHAR2 ,
4972     x_return_status         OUT NOCOPY VARCHAR2,
4973     x_msg_count             OUT NOCOPY NUMBER,
4974     x_msg_data              OUT NOCOPY VARCHAR2,
4975     p_cylv_ext_rec              IN cylv_ext_rec_type) IS
4976     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_CYCLE';
4977     l_return_status	  VARCHAR2(1);
4978     l_cylv_ext_rec     cylv_ext_rec_type := p_cylv_ext_rec;
4979   BEGIN
4980     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4981 					      p_init_msg_list,
4982 					      '_PUB',
4983                                         x_return_status);
4984     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4985       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4986     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4987       raise OKC_API.G_EXCEPTION_ERROR;
4988     END IF;
4989     -- Call user hook for BEFORE
4990     g_cylv_ext_rec := l_cylv_ext_rec;
4991     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
4992     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4993       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4994     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4995       raise OKC_API.G_EXCEPTION_ERROR;
4996     END IF;
4997     OKC_TIME_PVT.DELETE_CYCLE(
4998        p_api_version,
4999        p_init_msg_list,
5000        x_return_status,
5001        x_msg_count,
5002        x_msg_data,
5003        p_cylv_ext_rec);
5004     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5005       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5006     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5007       raise OKC_API.G_EXCEPTION_ERROR;
5008     END IF;
5009 
5010     -- Call user hook for AFTER
5011     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
5012     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5013       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5014     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5015       raise OKC_API.G_EXCEPTION_ERROR;
5016     END IF;
5017     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5018   EXCEPTION
5019     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5020       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5021       (l_api_name,
5022        G_PKG_NAME,
5023        'OKC_API.G_RET_STS_ERROR',
5024        x_msg_count,
5025        x_msg_data,
5026        '_PUB');
5027     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5028       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5029       (l_api_name,
5030        G_PKG_NAME,
5031        'OKC_API.G_RET_STS_UNEXP_ERROR',
5032        x_msg_count,
5033        x_msg_data,
5034        '_PUB');
5035     WHEN OTHERS THEN
5036       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5037       (l_api_name,
5038        G_PKG_NAME,
5039        'OTHERS',
5040        x_msg_count,
5041        x_msg_data,
5042        '_PUB');
5043   END DELETE_CYCLE;
5044 
5045   PROCEDURE DELETE_CYCLE(
5046     p_api_version                  IN NUMBER,
5047     p_init_msg_list                IN VARCHAR2 ,
5048     x_return_status                OUT NOCOPY VARCHAR2,
5049     x_msg_count                    OUT NOCOPY NUMBER,
5050     x_msg_data                     OUT NOCOPY VARCHAR2,
5051     p_cylv_ext_tbl                     IN cylv_ext_tbl_type) IS
5052     i			         NUMBER := 0;
5053     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5054   BEGIN
5055     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5056     IF p_cylv_ext_tbl.COUNT > 0 THEN
5057       i := p_cylv_ext_tbl.FIRST;
5058       LOOP
5059         DELETE_CYCLE(
5060 	    p_api_version,
5061 	    p_init_msg_list,
5062 	    l_return_status,
5063 	    x_msg_count,
5064 	    x_msg_data,
5065 	    p_cylv_ext_tbl(i));
5066         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5067           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5068             x_return_status := l_return_status;
5069             raise G_EXCEPTION_HALT_VALIDATION;
5070           ELSE
5071             x_return_status := l_return_status;
5072           END IF;
5073         END IF;
5074         EXIT WHEN (i = p_cylv_ext_tbl.LAST);
5075         i := p_cylv_ext_tbl.NEXT(i);
5076       END LOOP;
5077     END IF;
5078   EXCEPTION
5079     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5080       NULL;
5081     WHEN OTHERS THEN
5082       OKC_API.set_message(p_app_name      => g_app_name,
5083                           p_msg_name      => g_unexpected_error,
5084                           p_token1        => g_sqlcode_token,
5085                           p_token1_value  => sqlcode,
5086                           p_token2        => g_sqlerrm_token,
5087                           p_token2_value  => sqlerrm);
5088       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5089   END DELETE_CYCLE;
5090 
5091   PROCEDURE LOCK_CYCLE(
5092     p_api_version	    IN NUMBER,
5093     p_init_msg_list         IN VARCHAR2 ,
5094     x_return_status         OUT NOCOPY VARCHAR2,
5095     x_msg_count             OUT NOCOPY NUMBER,
5096     x_msg_data              OUT NOCOPY VARCHAR2,
5097     p_cylv_ext_rec		    IN cylv_ext_rec_type) IS
5098   BEGIN
5099     OKC_TIME_PVT.LOCK_CYCLE(
5100     p_api_version,
5101     p_init_msg_list,
5102     x_return_status,
5103     x_msg_count,
5104     x_msg_data,
5105     p_cylv_ext_rec);
5106   END LOCK_CYCLE;
5107 
5108   PROCEDURE LOCK_CYCLE(
5109     p_api_version                  IN NUMBER,
5110     p_init_msg_list                IN VARCHAR2 ,
5111     x_return_status                OUT NOCOPY VARCHAR2,
5112     x_msg_count                    OUT NOCOPY NUMBER,
5113     x_msg_data                     OUT NOCOPY VARCHAR2,
5114     p_cylv_ext_tbl                     IN cylv_ext_tbl_type) IS
5115     i			         NUMBER := 0;
5116     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5117   BEGIN
5118     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5119     IF p_cylv_ext_tbl.COUNT > 0 THEN
5120       i := p_cylv_ext_tbl.FIRST;
5121       LOOP
5122         LOCK_CYCLE(
5123 	    p_api_version,
5124 	    p_init_msg_list,
5125 	    l_return_status,
5126 	    x_msg_count,
5127 	    x_msg_data,
5128 	    p_cylv_ext_tbl(i));
5129         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5130           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5131             x_return_status := l_return_status;
5132             raise G_EXCEPTION_HALT_VALIDATION;
5133           ELSE
5134             x_return_status := l_return_status;
5135           END IF;
5136         END IF;
5137         EXIT WHEN (i = p_cylv_ext_tbl.LAST);
5138         i := p_cylv_ext_tbl.NEXT(i);
5139       END LOOP;
5140     END IF;
5141   EXCEPTION
5142     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5143       NULL;
5144     WHEN OTHERS THEN
5145       OKC_API.set_message(p_app_name      => g_app_name,
5146                           p_msg_name      => g_unexpected_error,
5147                           p_token1        => g_sqlcode_token,
5148                           p_token1_value  => sqlcode,
5149                           p_token2        => g_sqlerrm_token,
5150                           p_token2_value  => sqlerrm);
5151       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5152   END LOCK_CYCLE;
5153 
5154   PROCEDURE VALID_CYCLE(
5155     p_api_version	    IN NUMBER,
5156     p_init_msg_list         IN VARCHAR2 ,
5157     x_return_status         OUT NOCOPY VARCHAR2,
5158     x_msg_count             OUT NOCOPY NUMBER,
5159     x_msg_data              OUT NOCOPY VARCHAR2,
5160     p_cylv_ext_rec		    IN cylv_ext_rec_type) IS
5161   BEGIN
5162     OKC_TIME_PVT.VALID_CYCLE(
5163     p_api_version,
5164     p_init_msg_list,
5165     x_return_status,
5166     x_msg_count,
5167     x_msg_data,
5168     p_cylv_ext_rec);
5169   END VALID_CYCLE;
5170 
5171   PROCEDURE VALID_CYCLE(
5172     p_api_version                  IN NUMBER,
5173     p_init_msg_list                IN VARCHAR2 ,
5174     x_return_status                OUT NOCOPY VARCHAR2,
5175     x_msg_count                    OUT NOCOPY NUMBER,
5176     x_msg_data                     OUT NOCOPY VARCHAR2,
5177     p_cylv_ext_tbl                     IN cylv_ext_tbl_type) IS
5178     i			         NUMBER := 0;
5179     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5180   BEGIN
5181     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5182     IF p_cylv_ext_tbl.COUNT > 0 THEN
5183       i := p_cylv_ext_tbl.FIRST;
5184       LOOP
5185         VALID_CYCLE(
5186 	    p_api_version,
5187 	    p_init_msg_list,
5188 	    l_return_status,
5189 	    x_msg_count,
5190 	    x_msg_data,
5191 	    p_cylv_ext_tbl(i));
5192         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5193           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5194             x_return_status := l_return_status;
5195             raise G_EXCEPTION_HALT_VALIDATION;
5196           ELSE
5197             x_return_status := l_return_status;
5198           END IF;
5199         END IF;
5200         EXIT WHEN (i = p_cylv_ext_tbl.LAST);
5201         i := p_cylv_ext_tbl.NEXT(i);
5202       END LOOP;
5203     END IF;
5204   EXCEPTION
5205     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5206       NULL;
5207     WHEN OTHERS THEN
5208       OKC_API.set_message(p_app_name      => g_app_name,
5209                           p_msg_name      => g_unexpected_error,
5210                           p_token1        => g_sqlcode_token,
5211                           p_token1_value  => sqlcode,
5212                           p_token2        => g_sqlerrm_token,
5213                           p_token2_value  => sqlerrm);
5214       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5215   END VALID_CYCLE;
5216 
5217  --------------------------------------------------------------------------
5218 ---The following procedures cater to handling of OKC_TIME_SPAN
5219  --------------------------------------------------------------------------
5220 
5221   FUNCTION migrate_spnv(p_spnv_rec1 IN spnv_rec_type,
5222                         p_spnv_rec2 IN spnv_rec_type)
5223     RETURN spnv_rec_type IS
5224     l_spnv_rec spnv_rec_type;
5225   BEGIN
5226     l_spnv_rec.id                    := p_spnv_rec1.id;
5227     l_spnv_rec.object_version_number := p_spnv_rec1.object_version_number;
5228     l_spnv_rec.created_by            := p_spnv_rec1.created_by;
5229     l_spnv_rec.creation_date         := p_spnv_rec1.creation_date;
5230     l_spnv_rec.last_updated_by       := p_spnv_rec1.last_updated_by;
5231     l_spnv_rec.last_update_date      := p_spnv_rec1.last_update_date;
5232     l_spnv_rec.last_update_login     := p_spnv_rec1.last_update_login;
5233     l_spnv_rec.tve_id                := p_spnv_rec2.tve_id;
5234     l_spnv_rec.spn_id                := p_spnv_rec2.spn_id;
5235     l_spnv_rec.uom_code  := p_spnv_rec2.uom_code;
5236     l_spnv_rec.name                  := p_spnv_rec2.name;
5237     l_spnv_rec.duration              := p_spnv_rec2.duration;
5238     l_spnv_rec.active_yn             := p_spnv_rec2.active_yn;
5239     RETURN (l_spnv_rec);
5240   END migrate_spnv;
5241 
5242   FUNCTION migrate_spnv(p_spnv_tbl1 IN spnv_tbl_type,
5243     p_spnv_tbl2 IN spnv_tbl_type)
5244     RETURN spnv_tbl_type IS
5245     l_spnv_tbl spnv_tbl_type;
5246     i NUMBER := 0;
5247     j NUMBER := 0;
5248   BEGIN
5249     -- If the user hook deleted some records or added some new records in the table,
5250     -- discard the change and simply copy the original table.
5251     IF p_spnv_tbl1.COUNT <> p_spnv_tbl2.COUNT THEN
5252       l_spnv_tbl := p_spnv_tbl1;
5253     ELSE
5254       IF (p_spnv_tbl1.COUNT > 0) THEN
5255         i := p_spnv_tbl1.FIRST;
5256         j := p_spnv_tbl2.FIRST;
5257         LOOP
5258           l_spnv_tbl(i) := migrate_spnv(p_spnv_tbl1(i), p_spnv_tbl2(j));
5259           EXIT WHEN (i = p_spnv_tbl1.LAST);
5260           i := p_spnv_tbl1.NEXT(i);
5261           j := p_spnv_tbl2.NEXT(j);
5262         END LOOP;
5263       END IF;
5264     END IF;
5265     RETURN (l_spnv_tbl);
5266   END migrate_spnv;
5267 
5268   PROCEDURE CREATE_SPAN(
5269     p_api_version	    IN NUMBER,
5270     p_init_msg_list         IN VARCHAR2 ,
5271     x_return_status         OUT NOCOPY VARCHAR2,
5272     x_msg_count             OUT NOCOPY NUMBER,
5273     x_msg_data              OUT NOCOPY VARCHAR2,
5274     p_spnv_rec	            IN spnv_rec_type,
5275     x_spnv_rec              OUT NOCOPY spnv_rec_type) IS
5276     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_SPAN';
5277     l_return_status	  VARCHAR2(1);
5278     l_spnv_rec     spnv_rec_type := p_spnv_rec;
5279   BEGIN
5280     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5281 					      p_init_msg_list,
5282 					      '_PUB',
5283                                         x_return_status);
5284     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5285       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5286     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5287       raise OKC_API.G_EXCEPTION_ERROR;
5288     END IF;
5289     -- Call user hook for BEFORE
5290     g_spnv_rec := l_spnv_rec;
5291     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
5292     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5293       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5294     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5295       raise OKC_API.G_EXCEPTION_ERROR;
5296     END IF;
5297     l_spnv_rec := migrate_spnv(l_spnv_rec, g_spnv_rec);
5298     OKC_TIME_PVT.CREATE_SPAN(
5299        p_api_version,
5300        p_init_msg_list,
5301        x_return_status,
5302        x_msg_count,
5303        x_msg_data,
5304        p_spnv_rec,
5305        x_spnv_rec);
5306     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5307       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5308     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5309       raise OKC_API.G_EXCEPTION_ERROR;
5310     END IF;
5311 
5312     -- Call user hook for AFTER
5313     g_spnv_rec := x_spnv_rec;
5314     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
5315     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5316       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5317     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5318       raise OKC_API.G_EXCEPTION_ERROR;
5319     END IF;
5320     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5321   EXCEPTION
5322     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5323       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5324       (l_api_name,
5325        G_PKG_NAME,
5326        'OKC_API.G_RET_STS_ERROR',
5327        x_msg_count,
5328        x_msg_data,
5329        '_PUB');
5330     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5331       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5332       (l_api_name,
5333        G_PKG_NAME,
5334        'OKC_API.G_RET_STS_UNEXP_ERROR',
5335        x_msg_count,
5336        x_msg_data,
5337        '_PUB');
5338     WHEN OTHERS THEN
5339       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5340       (l_api_name,
5341        G_PKG_NAME,
5342        'OTHERS',
5343        x_msg_count,
5344        x_msg_data,
5345        '_PUB');
5346   END CREATE_SPAN;
5347 
5348   PROCEDURE CREATE_SPAN(
5349     p_api_version                  IN NUMBER,
5350     p_init_msg_list                IN VARCHAR2 ,
5351     x_return_status                OUT NOCOPY VARCHAR2,
5352     x_msg_count                    OUT NOCOPY NUMBER,
5353     x_msg_data                     OUT NOCOPY VARCHAR2,
5354     p_spnv_tbl                     IN spnv_tbl_type,
5355     x_spnv_tbl                     OUT NOCOPY spnv_tbl_type) IS
5356     i			         NUMBER := 0;
5357     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5358   BEGIN
5359     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5360     IF p_spnv_tbl.COUNT > 0 THEN
5361       i := p_spnv_tbl.FIRST;
5362       LOOP
5363         CREATE_SPAN(
5364 	    p_api_version,
5365 	    p_init_msg_list,
5366 	    l_return_status,
5367 	    x_msg_count,
5368 	    x_msg_data,
5369 	    p_spnv_tbl(i),
5370 	    x_spnv_tbl(i));
5371         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5372           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5373             x_return_status := l_return_status;
5374             raise G_EXCEPTION_HALT_VALIDATION;
5375           ELSE
5376             x_return_status := l_return_status;
5377           END IF;
5378         END IF;
5379         EXIT WHEN (i = p_spnv_tbl.LAST);
5380         i := p_spnv_tbl.NEXT(i);
5381       END LOOP;
5382     END IF;
5383   EXCEPTION
5384     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5385       NULL;
5386     WHEN OTHERS THEN
5387       OKC_API.set_message(p_app_name      => g_app_name,
5388                           p_msg_name      => g_unexpected_error,
5389                           p_token1        => g_sqlcode_token,
5390                           p_token1_value  => sqlcode,
5391                           p_token2        => g_sqlerrm_token,
5392                           p_token2_value  => sqlerrm);
5393       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5394   END CREATE_SPAN;
5395 
5396   PROCEDURE UPDATE_SPAN(
5397     p_api_version	    IN NUMBER,
5398     p_init_msg_list         IN VARCHAR2 ,
5399     x_return_status         OUT NOCOPY VARCHAR2,
5400     x_msg_count             OUT NOCOPY NUMBER,
5401     x_msg_data              OUT NOCOPY VARCHAR2,
5402     p_spnv_rec	            IN spnv_rec_type,
5403     x_spnv_rec              OUT NOCOPY spnv_rec_type) IS
5404     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_SPAN';
5405     l_return_status	  VARCHAR2(1);
5406     l_spnv_rec     spnv_rec_type := p_spnv_rec;
5407   BEGIN
5408     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5409 					      p_init_msg_list,
5410 					      '_PUB',
5411                                         x_return_status);
5412     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5413       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5414     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5415       raise OKC_API.G_EXCEPTION_ERROR;
5416     END IF;
5417     -- Call user hook for BEFORE
5418     g_spnv_rec := l_spnv_rec;
5419     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
5420     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5421       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5422     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5423       raise OKC_API.G_EXCEPTION_ERROR;
5424     END IF;
5425     l_spnv_rec := migrate_spnv(l_spnv_rec, g_spnv_rec);
5426     OKC_TIME_PVT.UPDATE_SPAN(
5427        p_api_version,
5428        p_init_msg_list,
5429        x_return_status,
5430        x_msg_count,
5431        x_msg_data,
5432        p_spnv_rec,
5433        x_spnv_rec);
5434     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5435       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5436     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5437       raise OKC_API.G_EXCEPTION_ERROR;
5438     END IF;
5439 
5440     -- Call user hook for AFTER
5441     g_spnv_rec := x_spnv_rec;
5442     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
5443     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5444       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5445     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5446       raise OKC_API.G_EXCEPTION_ERROR;
5447     END IF;
5448     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5449   EXCEPTION
5450     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5451       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5452       (l_api_name,
5453        G_PKG_NAME,
5454        'OKC_API.G_RET_STS_ERROR',
5455        x_msg_count,
5456        x_msg_data,
5457        '_PUB');
5458     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5459       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5460       (l_api_name,
5461        G_PKG_NAME,
5462        'OKC_API.G_RET_STS_UNEXP_ERROR',
5463        x_msg_count,
5464        x_msg_data,
5465        '_PUB');
5466     WHEN OTHERS THEN
5467       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5468       (l_api_name,
5469        G_PKG_NAME,
5470        'OTHERS',
5471        x_msg_count,
5472        x_msg_data,
5473        '_PUB');
5474   END UPDATE_SPAN;
5475 
5476   PROCEDURE UPDATE_SPAN(
5477     p_api_version                  IN NUMBER,
5478     p_init_msg_list                IN VARCHAR2 ,
5479     x_return_status                OUT NOCOPY VARCHAR2,
5480     x_msg_count                    OUT NOCOPY NUMBER,
5481     x_msg_data                     OUT NOCOPY VARCHAR2,
5482     p_spnv_tbl                     IN spnv_tbl_type,
5483     x_spnv_tbl                     OUT NOCOPY spnv_tbl_type) IS
5484     i			         NUMBER := 0;
5485     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5486   BEGIN
5487     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5488     IF p_spnv_tbl.COUNT > 0 THEN
5489       i := p_spnv_tbl.FIRST;
5490       LOOP
5491         UPDATE_SPAN(
5492 	    p_api_version,
5493 	    p_init_msg_list,
5494 	    l_return_status,
5495 	    x_msg_count,
5496 	    x_msg_data,
5497 	    p_spnv_tbl(i),
5498 	    x_spnv_tbl(i));
5499         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5500           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5501             x_return_status := l_return_status;
5502             raise G_EXCEPTION_HALT_VALIDATION;
5503           ELSE
5504             x_return_status := l_return_status;
5505           END IF;
5506         END IF;
5507         EXIT WHEN (i = p_spnv_tbl.LAST);
5508         i := p_spnv_tbl.NEXT(i);
5509       END LOOP;
5510     END IF;
5511   EXCEPTION
5512     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5513       NULL;
5514     WHEN OTHERS THEN
5515       OKC_API.set_message(p_app_name      => g_app_name,
5516                           p_msg_name      => g_unexpected_error,
5517                           p_token1        => g_sqlcode_token,
5518                           p_token1_value  => sqlcode,
5519                           p_token2        => g_sqlerrm_token,
5520                           p_token2_value  => sqlerrm);
5521       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5522   END UPDATE_SPAN;
5523 
5524   PROCEDURE DELETE_SPAN(
5525     p_api_version	    IN NUMBER,
5526     p_init_msg_list         IN VARCHAR2 ,
5527     x_return_status         OUT NOCOPY VARCHAR2,
5528     x_msg_count             OUT NOCOPY NUMBER,
5529     x_msg_data              OUT NOCOPY VARCHAR2,
5530     p_spnv_rec              IN spnv_rec_type) IS
5531     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_SPAN';
5532     l_return_status	  VARCHAR2(1);
5533     l_spnv_rec     spnv_rec_type := p_spnv_rec;
5534   BEGIN
5535     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5536 					      p_init_msg_list,
5537 					      '_PUB',
5538                                         x_return_status);
5539     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5540       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5541     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5542       raise OKC_API.G_EXCEPTION_ERROR;
5543     END IF;
5544     -- Call user hook for BEFORE
5545     g_spnv_rec := l_spnv_rec;
5546     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
5547     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5548       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5549     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5550       raise OKC_API.G_EXCEPTION_ERROR;
5551     END IF;
5552     OKC_TIME_PVT.DELETE_SPAN(
5553        p_api_version,
5554        p_init_msg_list,
5555        x_return_status,
5556        x_msg_count,
5557        x_msg_data,
5558        p_spnv_rec);
5559     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5560       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5561     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5562       raise OKC_API.G_EXCEPTION_ERROR;
5563     END IF;
5564 
5565     -- Call user hook for AFTER
5566     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
5567     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5568       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5569     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5570       raise OKC_API.G_EXCEPTION_ERROR;
5571     END IF;
5572     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5573   EXCEPTION
5574     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5575       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5576       (l_api_name,
5577        G_PKG_NAME,
5578        'OKC_API.G_RET_STS_ERROR',
5579        x_msg_count,
5580        x_msg_data,
5581        '_PUB');
5582     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5583       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5584       (l_api_name,
5585        G_PKG_NAME,
5586        'OKC_API.G_RET_STS_UNEXP_ERROR',
5587        x_msg_count,
5588        x_msg_data,
5589        '_PUB');
5590     WHEN OTHERS THEN
5591       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5592       (l_api_name,
5593        G_PKG_NAME,
5594        'OTHERS',
5595        x_msg_count,
5596        x_msg_data,
5597        '_PUB');
5598   END DELETE_SPAN;
5599 
5600   PROCEDURE DELETE_SPAN(
5601     p_api_version                  IN NUMBER,
5602     p_init_msg_list                IN VARCHAR2 ,
5603     x_return_status                OUT NOCOPY VARCHAR2,
5604     x_msg_count                    OUT NOCOPY NUMBER,
5605     x_msg_data                     OUT NOCOPY VARCHAR2,
5606     p_spnv_tbl                     IN spnv_tbl_type) IS
5607     i			         NUMBER := 0;
5608     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5609   BEGIN
5610     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5611     IF p_spnv_tbl.COUNT > 0 THEN
5612       i := p_spnv_tbl.FIRST;
5613       LOOP
5614         DELETE_SPAN(
5615 	    p_api_version,
5616 	    p_init_msg_list,
5617 	    l_return_status,
5618 	    x_msg_count,
5619 	    x_msg_data,
5620 	    p_spnv_tbl(i));
5621         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5622           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5623             x_return_status := l_return_status;
5624             raise G_EXCEPTION_HALT_VALIDATION;
5625           ELSE
5626             x_return_status := l_return_status;
5627           END IF;
5628         END IF;
5629         EXIT WHEN (i = p_spnv_tbl.LAST);
5630         i := p_spnv_tbl.NEXT(i);
5631       END LOOP;
5632     END IF;
5633   EXCEPTION
5634     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5635       NULL;
5636     WHEN OTHERS THEN
5637       OKC_API.set_message(p_app_name      => g_app_name,
5638                           p_msg_name      => g_unexpected_error,
5639                           p_token1        => g_sqlcode_token,
5640                           p_token1_value  => sqlcode,
5641                           p_token2        => g_sqlerrm_token,
5642                           p_token2_value  => sqlerrm);
5643       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5644   END DELETE_SPAN;
5645 
5646   PROCEDURE LOCK_SPAN(
5647     p_api_version	    IN NUMBER,
5648     p_init_msg_list         IN VARCHAR2 ,
5649     x_return_status         OUT NOCOPY VARCHAR2,
5650     x_msg_count             OUT NOCOPY NUMBER,
5651     x_msg_data              OUT NOCOPY VARCHAR2,
5652     p_spnv_rec		    IN spnv_rec_type) IS
5653   BEGIN
5654     OKC_TIME_PVT.LOCK_SPAN(
5655     p_api_version,
5656     p_init_msg_list,
5657     x_return_status,
5658     x_msg_count,
5659     x_msg_data,
5660     p_spnv_rec);
5661   END LOCK_SPAN;
5662 
5663   PROCEDURE LOCK_SPAN(
5664     p_api_version                  IN NUMBER,
5665     p_init_msg_list                IN VARCHAR2 ,
5666     x_return_status                OUT NOCOPY VARCHAR2,
5667     x_msg_count                    OUT NOCOPY NUMBER,
5668     x_msg_data                     OUT NOCOPY VARCHAR2,
5669     p_spnv_tbl                     IN spnv_tbl_type) IS
5670     i			         NUMBER := 0;
5671     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5672   BEGIN
5673     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5674     IF p_spnv_tbl.COUNT > 0 THEN
5675       i := p_spnv_tbl.FIRST;
5676       LOOP
5677         LOCK_SPAN(
5678 	    p_api_version,
5679 	    p_init_msg_list,
5680 	    l_return_status,
5681 	    x_msg_count,
5682 	    x_msg_data,
5683 	    p_spnv_tbl(i));
5684         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5685           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5686             x_return_status := l_return_status;
5687             raise G_EXCEPTION_HALT_VALIDATION;
5688           ELSE
5689             x_return_status := l_return_status;
5690           END IF;
5691         END IF;
5692         EXIT WHEN (i = p_spnv_tbl.LAST);
5693         i := p_spnv_tbl.NEXT(i);
5694       END LOOP;
5695     END IF;
5696   EXCEPTION
5697     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5698       NULL;
5699     WHEN OTHERS THEN
5700       OKC_API.set_message(p_app_name      => g_app_name,
5701                           p_msg_name      => g_unexpected_error,
5702                           p_token1        => g_sqlcode_token,
5703                           p_token1_value  => sqlcode,
5704                           p_token2        => g_sqlerrm_token,
5705                           p_token2_value  => sqlerrm);
5706       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5707   END LOCK_SPAN;
5708 
5709   PROCEDURE VALID_SPAN(
5710     p_api_version	    IN NUMBER,
5711     p_init_msg_list         IN VARCHAR2 ,
5712     x_return_status         OUT NOCOPY VARCHAR2,
5713     x_msg_count             OUT NOCOPY NUMBER,
5714     x_msg_data              OUT NOCOPY VARCHAR2,
5715     p_spnv_rec		    IN spnv_rec_type) IS
5716   BEGIN
5717     OKC_TIME_PVT.VALID_SPAN(
5718     p_api_version,
5719     p_init_msg_list,
5720     x_return_status,
5721     x_msg_count,
5722     x_msg_data,
5723     p_spnv_rec);
5724   END VALID_SPAN;
5725 
5726   PROCEDURE VALID_SPAN(
5727     p_api_version                  IN NUMBER,
5728     p_init_msg_list                IN VARCHAR2 ,
5729     x_return_status                OUT NOCOPY VARCHAR2,
5730     x_msg_count                    OUT NOCOPY NUMBER,
5731     x_msg_data                     OUT NOCOPY VARCHAR2,
5732     p_spnv_tbl                     IN spnv_tbl_type) IS
5733     i			         NUMBER := 0;
5734     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5735   BEGIN
5736     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5737     IF p_spnv_tbl.COUNT > 0 THEN
5738       i := p_spnv_tbl.FIRST;
5739       LOOP
5740         VALID_SPAN(
5741 	    p_api_version,
5742 	    p_init_msg_list,
5743 	    l_return_status,
5744 	    x_msg_count,
5745 	    x_msg_data,
5746 	    p_spnv_tbl(i));
5747         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5748           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5749             x_return_status := l_return_status;
5750             raise G_EXCEPTION_HALT_VALIDATION;
5751           ELSE
5752             x_return_status := l_return_status;
5753           END IF;
5754         END IF;
5755         EXIT WHEN (i = p_spnv_tbl.LAST);
5756         i := p_spnv_tbl.NEXT(i);
5757       END LOOP;
5758     END IF;
5759   EXCEPTION
5760     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5761       NULL;
5762     WHEN OTHERS THEN
5763       OKC_API.set_message(p_app_name      => g_app_name,
5764                           p_msg_name      => g_unexpected_error,
5765                           p_token1        => g_sqlcode_token,
5766                           p_token1_value  => sqlcode,
5767                           p_token2        => g_sqlerrm_token,
5768                           p_token2_value  => sqlerrm);
5769       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5770   END VALID_SPAN;
5771  --------------------------------------------------------------------------
5772 ---The following procedures cater to handling of OKC_TIME_TIME_CODE_UNITS
5773  --------------------------------------------------------------------------
5774 
5775   FUNCTION migrate_tcuv(p_tcuv_rec1 IN tcuv_rec_type,
5776                         p_tcuv_rec2 IN tcuv_rec_type)
5777     RETURN tcuv_rec_type IS
5778     l_tcuv_rec tcuv_rec_type;
5779   BEGIN
5780     l_tcuv_rec.tce_code              := p_tcuv_rec2.tce_code;
5781     l_tcuv_rec.uom_code              := p_tcuv_rec2.uom_code;
5782     l_tcuv_rec.quantity              := p_tcuv_rec2.quantity;
5783     l_tcuv_rec.active_flag           := p_tcuv_rec2.active_flag;
5784     l_tcuv_rec.object_version_number := p_tcuv_rec1.object_version_number;
5785     l_tcuv_rec.created_by            := p_tcuv_rec1.created_by;
5786     l_tcuv_rec.creation_date         := p_tcuv_rec1.creation_date;
5787     l_tcuv_rec.last_updated_by       := p_tcuv_rec1.last_updated_by;
5788     l_tcuv_rec.last_update_date      := p_tcuv_rec1.last_update_date;
5789     l_tcuv_rec.last_update_login     := p_tcuv_rec1.last_update_login;
5790     l_tcuv_rec.sfwt_flag             := p_tcuv_rec2.sfwt_flag;
5791     l_tcuv_rec.short_description     := p_tcuv_rec2.short_description;
5792     l_tcuv_rec.description           := p_tcuv_rec2.description;
5793     l_tcuv_rec.comments              := p_tcuv_rec2.comments;
5794     l_tcuv_rec.attribute_category    := p_tcuv_rec2.attribute_category;
5795     l_tcuv_rec.attribute1            := p_tcuv_rec2.attribute1;
5796     l_tcuv_rec.attribute2            := p_tcuv_rec2.attribute2;
5797     l_tcuv_rec.attribute3            := p_tcuv_rec2.attribute3;
5798     l_tcuv_rec.attribute4            := p_tcuv_rec2.attribute4;
5799     l_tcuv_rec.attribute5            := p_tcuv_rec2.attribute5;
5800     l_tcuv_rec.attribute6            := p_tcuv_rec2.attribute6;
5801     l_tcuv_rec.attribute7            := p_tcuv_rec2.attribute7;
5802     l_tcuv_rec.attribute8            := p_tcuv_rec2.attribute8;
5803     l_tcuv_rec.attribute9            := p_tcuv_rec2.attribute9;
5804     l_tcuv_rec.attribute10           := p_tcuv_rec2.attribute10;
5805     l_tcuv_rec.attribute11           := p_tcuv_rec2.attribute11;
5806     l_tcuv_rec.attribute12           := p_tcuv_rec2.attribute12;
5807     l_tcuv_rec.attribute13           := p_tcuv_rec2.attribute13;
5808     l_tcuv_rec.attribute14           := p_tcuv_rec2.attribute14;
5809     l_tcuv_rec.attribute15           := p_tcuv_rec2.attribute15;
5810     RETURN (l_tcuv_rec);
5811   END migrate_tcuv;
5812 
5813   FUNCTION migrate_tcuv(p_tcuv_tbl1 IN tcuv_tbl_type,
5814     p_tcuv_tbl2 IN tcuv_tbl_type)
5815     RETURN tcuv_tbl_type IS
5816     l_tcuv_tbl tcuv_tbl_type;
5817     i NUMBER := 0;
5818     j NUMBER := 0;
5819   BEGIN
5820     -- If the user hook deleted some records or added some new records in the table,
5821     -- discard the change and simply copy the original table.
5822     IF p_tcuv_tbl1.COUNT <> p_tcuv_tbl2.COUNT THEN
5823       l_tcuv_tbl := p_tcuv_tbl1;
5824     ELSE
5825       IF (p_tcuv_tbl1.COUNT > 0) THEN
5826         i := p_tcuv_tbl1.FIRST;
5827         j := p_tcuv_tbl2.FIRST;
5828         LOOP
5829           l_tcuv_tbl(i) := migrate_tcuv(p_tcuv_tbl1(i), p_tcuv_tbl2(j));
5830           EXIT WHEN (i = p_tcuv_tbl1.LAST);
5831           i := p_tcuv_tbl1.NEXT(i);
5832           j := p_tcuv_tbl2.NEXT(j);
5833         END LOOP;
5834       END IF;
5835     END IF;
5836     RETURN (l_tcuv_tbl);
5837   END migrate_tcuv;
5838 
5839   PROCEDURE CREATE_TIME_CODE_UNITS(
5840     p_api_version	    IN NUMBER,
5841     p_init_msg_list         IN VARCHAR2 ,
5842     x_return_status         OUT NOCOPY VARCHAR2,
5843     x_msg_count             OUT NOCOPY NUMBER,
5844     x_msg_data              OUT NOCOPY VARCHAR2,
5845     p_tcuv_rec	            IN tcuv_rec_type,
5846     x_tcuv_rec              OUT NOCOPY tcuv_rec_type) IS
5847     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_TIME_CODE_UNITS';
5848     l_return_status	  VARCHAR2(1);
5849     l_tcuv_rec     tcuv_rec_type := p_tcuv_rec;
5850   BEGIN
5851     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5852 					      p_init_msg_list,
5853 					      '_PUB',
5854                                         x_return_status);
5855     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5856       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5857     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5858       raise OKC_API.G_EXCEPTION_ERROR;
5859     END IF;
5860     -- Call user hook for BEFORE
5861     g_tcuv_rec := l_tcuv_rec;
5862     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
5863     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5864       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5865     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5866       raise OKC_API.G_EXCEPTION_ERROR;
5867     END IF;
5868     l_tcuv_rec := migrate_tcuv(l_tcuv_rec, g_tcuv_rec);
5869     OKC_TIME_PVT.CREATE_TIME_CODE_UNITS(
5870        p_api_version,
5871        p_init_msg_list,
5872        x_return_status,
5873        x_msg_count,
5874        x_msg_data,
5875        p_tcuv_rec,
5876        x_tcuv_rec);
5877     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5878       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5879     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5880       raise OKC_API.G_EXCEPTION_ERROR;
5881     END IF;
5882 
5883     -- Call user hook for AFTER
5884     g_tcuv_rec := x_tcuv_rec;
5885     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
5886     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5887       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5888     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5889       raise OKC_API.G_EXCEPTION_ERROR;
5890     END IF;
5891     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5892   EXCEPTION
5893     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5894       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5895       (l_api_name,
5896        G_PKG_NAME,
5897        'OKC_API.G_RET_STS_ERROR',
5898        x_msg_count,
5899        x_msg_data,
5900        '_PUB');
5901     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5902       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5903       (l_api_name,
5904        G_PKG_NAME,
5905        'OKC_API.G_RET_STS_UNEXP_ERROR',
5906        x_msg_count,
5907        x_msg_data,
5908        '_PUB');
5909     WHEN OTHERS THEN
5910       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5911       (l_api_name,
5912        G_PKG_NAME,
5913        'OTHERS',
5914        x_msg_count,
5915        x_msg_data,
5916        '_PUB');
5917   END CREATE_TIME_CODE_UNITS;
5918 
5919   PROCEDURE CREATE_TIME_CODE_UNITS(
5920     p_api_version                  IN NUMBER,
5921     p_init_msg_list                IN VARCHAR2 ,
5922     x_return_status                OUT NOCOPY VARCHAR2,
5923     x_msg_count                    OUT NOCOPY NUMBER,
5924     x_msg_data                     OUT NOCOPY VARCHAR2,
5925     p_tcuv_tbl                     IN tcuv_tbl_type,
5926     x_tcuv_tbl                     OUT NOCOPY tcuv_tbl_type) IS
5927     i			         NUMBER := 0;
5928     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5929   BEGIN
5930     x_return_status := OKC_API.G_RET_STS_SUCCESS;
5931     IF p_tcuv_tbl.COUNT > 0 THEN
5932       i := p_tcuv_tbl.FIRST;
5933       LOOP
5934         CREATE_TIME_CODE_UNITS(
5935 	    p_api_version,
5936 	    p_init_msg_list,
5937 	    l_return_status,
5938 	    x_msg_count,
5939 	    x_msg_data,
5940 	    p_tcuv_tbl(i),
5941 	    x_tcuv_tbl(i));
5942         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5943           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5944             x_return_status := l_return_status;
5945             raise G_EXCEPTION_HALT_VALIDATION;
5946           ELSE
5947             x_return_status := l_return_status;
5948           END IF;
5949         END IF;
5950         EXIT WHEN (i = p_tcuv_tbl.LAST);
5951         i := p_tcuv_tbl.NEXT(i);
5952       END LOOP;
5953     END IF;
5954   EXCEPTION
5955     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5956       NULL;
5957     WHEN OTHERS THEN
5958       OKC_API.set_message(p_app_name      => g_app_name,
5959                           p_msg_name      => g_unexpected_error,
5960                           p_token1        => g_sqlcode_token,
5961                           p_token1_value  => sqlcode,
5962                           p_token2        => g_sqlerrm_token,
5963                           p_token2_value  => sqlerrm);
5964       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5965   END CREATE_TIME_CODE_UNITS;
5966 
5967   PROCEDURE UPDATE_TIME_CODE_UNITS(
5968     p_api_version	    IN NUMBER,
5969     p_init_msg_list         IN VARCHAR2 ,
5970     x_return_status         OUT NOCOPY VARCHAR2,
5971     x_msg_count             OUT NOCOPY NUMBER,
5972     x_msg_data              OUT NOCOPY VARCHAR2,
5973     p_tcuv_rec	            IN tcuv_rec_type,
5974     x_tcuv_rec              OUT NOCOPY tcuv_rec_type) IS
5975     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_TIME_CODE_UNITS';
5976     l_return_status	  VARCHAR2(1);
5977     l_tcuv_rec     tcuv_rec_type := p_tcuv_rec;
5978   BEGIN
5979     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5980 					      p_init_msg_list,
5981 					      '_PUB',
5982                                         x_return_status);
5983     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5984       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5985     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5986       raise OKC_API.G_EXCEPTION_ERROR;
5987     END IF;
5988     -- Call user hook for BEFORE
5989     g_tcuv_rec := l_tcuv_rec;
5990     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
5991     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5992       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5993     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5994       raise OKC_API.G_EXCEPTION_ERROR;
5995     END IF;
5996     l_tcuv_rec := migrate_tcuv(l_tcuv_rec, g_tcuv_rec);
5997     OKC_TIME_PVT.UPDATE_TIME_CODE_UNITS(
5998        p_api_version,
5999        p_init_msg_list,
6000        x_return_status,
6001        x_msg_count,
6002        x_msg_data,
6003        p_tcuv_rec,
6004        x_tcuv_rec);
6005     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6006       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6007     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6008       raise OKC_API.G_EXCEPTION_ERROR;
6009     END IF;
6010 
6011     -- Call user hook for AFTER
6012     g_tcuv_rec := x_tcuv_rec;
6013     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
6014     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6015       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6016     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6017       raise OKC_API.G_EXCEPTION_ERROR;
6018     END IF;
6019     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6020   EXCEPTION
6021     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6022       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6023       (l_api_name,
6024        G_PKG_NAME,
6025        'OKC_API.G_RET_STS_ERROR',
6026        x_msg_count,
6027        x_msg_data,
6028        '_PUB');
6029     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6030       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6031       (l_api_name,
6032        G_PKG_NAME,
6033        'OKC_API.G_RET_STS_UNEXP_ERROR',
6034        x_msg_count,
6035        x_msg_data,
6036        '_PUB');
6037     WHEN OTHERS THEN
6038       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6039       (l_api_name,
6040        G_PKG_NAME,
6041        'OTHERS',
6042        x_msg_count,
6043        x_msg_data,
6044        '_PUB');
6045   END UPDATE_TIME_CODE_UNITS;
6046 
6047   PROCEDURE UPDATE_TIME_CODE_UNITS(
6048     p_api_version                  IN NUMBER,
6049     p_init_msg_list                IN VARCHAR2 ,
6050     x_return_status                OUT NOCOPY VARCHAR2,
6051     x_msg_count                    OUT NOCOPY NUMBER,
6052     x_msg_data                     OUT NOCOPY VARCHAR2,
6053     p_tcuv_tbl                     IN tcuv_tbl_type,
6054     x_tcuv_tbl                     OUT NOCOPY tcuv_tbl_type) IS
6055     i			         NUMBER := 0;
6056     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6057   BEGIN
6058     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6059     IF p_tcuv_tbl.COUNT > 0 THEN
6060       i := p_tcuv_tbl.FIRST;
6061       LOOP
6062         UPDATE_TIME_CODE_UNITS(
6063 	    p_api_version,
6064 	    p_init_msg_list,
6065 	    l_return_status,
6066 	    x_msg_count,
6067 	    x_msg_data,
6068 	    p_tcuv_tbl(i),
6069 	    x_tcuv_tbl(i));
6070         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6071           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6072             x_return_status := l_return_status;
6073             raise G_EXCEPTION_HALT_VALIDATION;
6074           ELSE
6075             x_return_status := l_return_status;
6076           END IF;
6077         END IF;
6078         EXIT WHEN (i = p_tcuv_tbl.LAST);
6079         i := p_tcuv_tbl.NEXT(i);
6080       END LOOP;
6081     END IF;
6082   EXCEPTION
6083     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6084       NULL;
6085     WHEN OTHERS THEN
6086       OKC_API.set_message(p_app_name      => g_app_name,
6087                           p_msg_name      => g_unexpected_error,
6088                           p_token1        => g_sqlcode_token,
6089                           p_token1_value  => sqlcode,
6090                           p_token2        => g_sqlerrm_token,
6091                           p_token2_value  => sqlerrm);
6092       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6093   END UPDATE_TIME_CODE_UNITS;
6094 
6095   PROCEDURE DELETE_TIME_CODE_UNITS(
6096     p_api_version	    IN NUMBER,
6097     p_init_msg_list         IN VARCHAR2 ,
6098     x_return_status         OUT NOCOPY VARCHAR2,
6099     x_msg_count             OUT NOCOPY NUMBER,
6100     x_msg_data              OUT NOCOPY VARCHAR2,
6101     p_tcuv_rec              IN tcuv_rec_type) IS
6102     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_TIME_CODE_UNITS';
6103     l_return_status	  VARCHAR2(1);
6104     l_tcuv_rec     tcuv_rec_type := p_tcuv_rec;
6105   BEGIN
6106     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6107 					      p_init_msg_list,
6108 					      '_PUB',
6109                                         x_return_status);
6110     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6111       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6112     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6113       raise OKC_API.G_EXCEPTION_ERROR;
6114     END IF;
6115     -- Call user hook for BEFORE
6116     g_tcuv_rec := l_tcuv_rec;
6117     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
6118     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6119       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6120     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6121       raise OKC_API.G_EXCEPTION_ERROR;
6122     END IF;
6123     OKC_TIME_PVT.DELETE_TIME_CODE_UNITS(
6124        p_api_version,
6125        p_init_msg_list,
6126        x_return_status,
6127        x_msg_count,
6128        x_msg_data,
6129        p_tcuv_rec);
6130     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6131       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6132     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6133       raise OKC_API.G_EXCEPTION_ERROR;
6134     END IF;
6135 
6136     -- Call user hook for AFTER
6137     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
6138     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6139       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6140     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6141       raise OKC_API.G_EXCEPTION_ERROR;
6142     END IF;
6143     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6144   EXCEPTION
6145     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6146       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6147       (l_api_name,
6148        G_PKG_NAME,
6149        'OKC_API.G_RET_STS_ERROR',
6150        x_msg_count,
6151        x_msg_data,
6152        '_PUB');
6153     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6154       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6155       (l_api_name,
6156        G_PKG_NAME,
6157        'OKC_API.G_RET_STS_UNEXP_ERROR',
6158        x_msg_count,
6159        x_msg_data,
6160        '_PUB');
6161     WHEN OTHERS THEN
6162       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6163       (l_api_name,
6164        G_PKG_NAME,
6165        'OTHERS',
6166        x_msg_count,
6167        x_msg_data,
6168        '_PUB');
6169   END DELETE_TIME_CODE_UNITS;
6170 
6171   PROCEDURE DELETE_TIME_CODE_UNITS(
6172     p_api_version                  IN NUMBER,
6173     p_init_msg_list                IN VARCHAR2 ,
6174     x_return_status                OUT NOCOPY VARCHAR2,
6175     x_msg_count                    OUT NOCOPY NUMBER,
6176     x_msg_data                     OUT NOCOPY VARCHAR2,
6177     p_tcuv_tbl                     IN tcuv_tbl_type) IS
6178     i			         NUMBER := 0;
6179     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6180   BEGIN
6181     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6182     IF p_tcuv_tbl.COUNT > 0 THEN
6183       i := p_tcuv_tbl.FIRST;
6184       LOOP
6185         DELETE_TIME_CODE_UNITS(
6186 	    p_api_version,
6187 	    p_init_msg_list,
6188 	    l_return_status,
6189 	    x_msg_count,
6190 	    x_msg_data,
6191 	    p_tcuv_tbl(i));
6192         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6193           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6194             x_return_status := l_return_status;
6195             raise G_EXCEPTION_HALT_VALIDATION;
6196           ELSE
6197             x_return_status := l_return_status;
6198           END IF;
6199         END IF;
6200         EXIT WHEN (i = p_tcuv_tbl.LAST);
6201         i := p_tcuv_tbl.NEXT(i);
6202       END LOOP;
6203     END IF;
6204   EXCEPTION
6205     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6206       NULL;
6207     WHEN OTHERS THEN
6208       OKC_API.set_message(p_app_name      => g_app_name,
6209                           p_msg_name      => g_unexpected_error,
6210                           p_token1        => g_sqlcode_token,
6211                           p_token1_value  => sqlcode,
6212                           p_token2        => g_sqlerrm_token,
6213                           p_token2_value  => sqlerrm);
6214       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6215   END DELETE_TIME_CODE_UNITS;
6216 
6217   PROCEDURE LOCK_TIME_CODE_UNITS(
6218     p_api_version	    IN NUMBER,
6219     p_init_msg_list         IN VARCHAR2 ,
6220     x_return_status         OUT NOCOPY VARCHAR2,
6221     x_msg_count             OUT NOCOPY NUMBER,
6222     x_msg_data              OUT NOCOPY VARCHAR2,
6223     p_tcuv_rec		    IN tcuv_rec_type) IS
6224   BEGIN
6225     OKC_TIME_PVT.LOCK_TIME_CODE_UNITS(
6226     p_api_version,
6227     p_init_msg_list,
6228     x_return_status,
6229     x_msg_count,
6230     x_msg_data,
6231     p_tcuv_rec);
6232   END LOCK_TIME_CODE_UNITS;
6233 
6234   PROCEDURE LOCK_TIME_CODE_UNITS(
6235     p_api_version                  IN NUMBER,
6236     p_init_msg_list                IN VARCHAR2 ,
6237     x_return_status                OUT NOCOPY VARCHAR2,
6238     x_msg_count                    OUT NOCOPY NUMBER,
6239     x_msg_data                     OUT NOCOPY VARCHAR2,
6240     p_tcuv_tbl                     IN tcuv_tbl_type) IS
6241     i			         NUMBER := 0;
6242     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6243   BEGIN
6244     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6245     IF p_tcuv_tbl.COUNT > 0 THEN
6246       i := p_tcuv_tbl.FIRST;
6247       LOOP
6248         LOCK_TIME_CODE_UNITS(
6249 	    p_api_version,
6250 	    p_init_msg_list,
6251 	    l_return_status,
6252 	    x_msg_count,
6253 	    x_msg_data,
6254 	    p_tcuv_tbl(i));
6255         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6256           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6257             x_return_status := l_return_status;
6258             raise G_EXCEPTION_HALT_VALIDATION;
6259           ELSE
6260             x_return_status := l_return_status;
6261           END IF;
6262         END IF;
6263         EXIT WHEN (i = p_tcuv_tbl.LAST);
6264         i := p_tcuv_tbl.NEXT(i);
6265       END LOOP;
6266     END IF;
6267   EXCEPTION
6268     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6269       NULL;
6270     WHEN OTHERS THEN
6271       OKC_API.set_message(p_app_name      => g_app_name,
6272                           p_msg_name      => g_unexpected_error,
6273                           p_token1        => g_sqlcode_token,
6274                           p_token1_value  => sqlcode,
6275                           p_token2        => g_sqlerrm_token,
6276                           p_token2_value  => sqlerrm);
6277       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6278   END LOCK_TIME_CODE_UNITS;
6279 
6280   PROCEDURE VALID_TIME_CODE_UNITS(
6281     p_api_version	    IN NUMBER,
6282     p_init_msg_list         IN VARCHAR2 ,
6283     x_return_status         OUT NOCOPY VARCHAR2,
6284     x_msg_count             OUT NOCOPY NUMBER,
6285     x_msg_data              OUT NOCOPY VARCHAR2,
6286     p_tcuv_rec		    IN tcuv_rec_type) IS
6287   BEGIN
6288     OKC_TIME_PVT.VALID_TIME_CODE_UNITS(
6289     p_api_version,
6290     p_init_msg_list,
6291     x_return_status,
6292     x_msg_count,
6293     x_msg_data,
6294     p_tcuv_rec);
6295   END VALID_TIME_CODE_UNITS;
6296 
6297   PROCEDURE VALID_TIME_CODE_UNITS(
6298     p_api_version                  IN NUMBER,
6299     p_init_msg_list                IN VARCHAR2 ,
6300     x_return_status                OUT NOCOPY VARCHAR2,
6301     x_msg_count                    OUT NOCOPY NUMBER,
6302     x_msg_data                     OUT NOCOPY VARCHAR2,
6303     p_tcuv_tbl                     IN tcuv_tbl_type) IS
6304     i			         NUMBER := 0;
6305     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6306   BEGIN
6307     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6308     IF p_tcuv_tbl.COUNT > 0 THEN
6309       i := p_tcuv_tbl.FIRST;
6310       LOOP
6311         VALID_TIME_CODE_UNITS(
6312 	    p_api_version,
6313 	    p_init_msg_list,
6314 	    l_return_status,
6315 	    x_msg_count,
6316 	    x_msg_data,
6317 	    p_tcuv_tbl(i));
6318         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6319           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6320             x_return_status := l_return_status;
6321             raise G_EXCEPTION_HALT_VALIDATION;
6322           ELSE
6323             x_return_status := l_return_status;
6324           END IF;
6325         END IF;
6326         EXIT WHEN (i = p_tcuv_tbl.LAST);
6327         i := p_tcuv_tbl.NEXT(i);
6328       END LOOP;
6329     END IF;
6330   EXCEPTION
6331     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6332       NULL;
6333     WHEN OTHERS THEN
6334       OKC_API.set_message(p_app_name      => g_app_name,
6335                           p_msg_name      => g_unexpected_error,
6336                           p_token1        => g_sqlcode_token,
6337                           p_token1_value  => sqlcode,
6338                           p_token2        => g_sqlerrm_token,
6339                           p_token2_value  => sqlerrm);
6340       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6341   END VALID_TIME_CODE_UNITS;
6342 
6343  --------------------------------------------------------------------------
6344 ---The following procedures cater to handling of OKC_TIME_RESOLVED_TIMEVALUES
6345  --------------------------------------------------------------------------
6346 
6347   FUNCTION migrate_rtvv(p_rtvv_rec1 IN rtvv_rec_type,
6348                         p_rtvv_rec2 IN rtvv_rec_type)
6349     RETURN rtvv_rec_type IS
6350     l_rtvv_rec rtvv_rec_type;
6351   BEGIN
6352     l_rtvv_rec.coe_id                := p_rtvv_rec2.coe_id;
6353     l_rtvv_rec.tve_id                := p_rtvv_rec2.tve_id;
6354     l_rtvv_rec.datetime                := p_rtvv_rec2.datetime;
6355     l_rtvv_rec.id               := p_rtvv_rec1.id;
6356     l_rtvv_rec.object_version_number := p_rtvv_rec1.object_version_number;
6357     l_rtvv_rec.created_by            := p_rtvv_rec1.created_by;
6358     l_rtvv_rec.creation_date         := p_rtvv_rec1.creation_date;
6359     l_rtvv_rec.last_updated_by       := p_rtvv_rec1.last_updated_by;
6360     l_rtvv_rec.last_update_date      := p_rtvv_rec1.last_update_date;
6361     l_rtvv_rec.last_update_login     := p_rtvv_rec1.last_update_login;
6362     RETURN (l_rtvv_rec);
6363   END migrate_rtvv;
6364 
6365   FUNCTION migrate_rtvv(p_rtvv_tbl1 IN rtvv_tbl_type,
6366     p_rtvv_tbl2 IN rtvv_tbl_type)
6367     RETURN rtvv_tbl_type IS
6368     l_rtvv_tbl rtvv_tbl_type;
6369     i NUMBER := 0;
6370     j NUMBER := 0;
6371   BEGIN
6372     -- If the user hook deleted some records or added some new records in the table,
6373     -- discard the change and simply copy the original table.
6374     IF p_rtvv_tbl1.COUNT <> p_rtvv_tbl2.COUNT THEN
6375       l_rtvv_tbl := p_rtvv_tbl1;
6376     ELSE
6377       IF (p_rtvv_tbl1.COUNT > 0) THEN
6378         i := p_rtvv_tbl1.FIRST;
6379         j := p_rtvv_tbl2.FIRST;
6380         LOOP
6381           l_rtvv_tbl(i) := migrate_rtvv(p_rtvv_tbl1(i), p_rtvv_tbl2(j));
6382           EXIT WHEN (i = p_rtvv_tbl1.LAST);
6383           i := p_rtvv_tbl1.NEXT(i);
6384           j := p_rtvv_tbl2.NEXT(j);
6385         END LOOP;
6386       END IF;
6387     END IF;
6388     RETURN (l_rtvv_tbl);
6389   END migrate_rtvv;
6390 
6391   PROCEDURE CREATE_RESOLVED_TIMEVALUES(
6392     p_api_version	    IN NUMBER,
6393     p_init_msg_list         IN VARCHAR2 ,
6394     x_return_status         OUT NOCOPY VARCHAR2,
6395     x_msg_count             OUT NOCOPY NUMBER,
6396     x_msg_data              OUT NOCOPY VARCHAR2,
6397     p_rtvv_rec	            IN rtvv_rec_type,
6398     x_rtvv_rec              OUT NOCOPY rtvv_rec_type) IS
6399     l_api_name              CONSTANT VARCHAR2(30) := 'CREATE_RESOLVED_TIMEVALUES';
6400     l_return_status	  VARCHAR2(1);
6401     l_rtvv_rec     rtvv_rec_type := p_rtvv_rec;
6402   BEGIN
6403     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6404 					      p_init_msg_list,
6405 					      '_PUB',
6406                                         x_return_status);
6407     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6408       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6409     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6410       raise OKC_API.G_EXCEPTION_ERROR;
6411     END IF;
6412     -- Call user hook for BEFORE
6413     g_rtvv_rec := l_rtvv_rec;
6414     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
6415     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6416       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6417     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6418       raise OKC_API.G_EXCEPTION_ERROR;
6419     END IF;
6420     l_rtvv_rec := migrate_rtvv(l_rtvv_rec, g_rtvv_rec);
6421     OKC_TIME_PVT.CREATE_RESOLVED_TIMEVALUES(
6422        p_api_version,
6423        p_init_msg_list,
6424        x_return_status,
6425        x_msg_count,
6426        x_msg_data,
6427        p_rtvv_rec,
6428        x_rtvv_rec);
6429     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6430       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6431     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6432       raise OKC_API.G_EXCEPTION_ERROR;
6433     END IF;
6434 
6435     -- Call user hook for AFTER
6436     g_rtvv_rec := x_rtvv_rec;
6437     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
6438     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6439       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6440     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6441       raise OKC_API.G_EXCEPTION_ERROR;
6442     END IF;
6443     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6444   EXCEPTION
6445     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6446       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6447       (l_api_name,
6448        G_PKG_NAME,
6449        'OKC_API.G_RET_STS_ERROR',
6450        x_msg_count,
6451        x_msg_data,
6452        '_PUB');
6453     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6454       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6455       (l_api_name,
6456        G_PKG_NAME,
6457        'OKC_API.G_RET_STS_UNEXP_ERROR',
6458        x_msg_count,
6459        x_msg_data,
6460        '_PUB');
6461     WHEN OTHERS THEN
6462       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6463       (l_api_name,
6464        G_PKG_NAME,
6465        'OTHERS',
6466        x_msg_count,
6467        x_msg_data,
6468        '_PUB');
6469   END CREATE_RESOLVED_TIMEVALUES;
6470 
6471   PROCEDURE CREATE_RESOLVED_TIMEVALUES(
6472     p_api_version                  IN NUMBER,
6473     p_init_msg_list                IN VARCHAR2 ,
6474     x_return_status                OUT NOCOPY VARCHAR2,
6475     x_msg_count                    OUT NOCOPY NUMBER,
6476     x_msg_data                     OUT NOCOPY VARCHAR2,
6477     p_rtvv_tbl                     IN rtvv_tbl_type,
6478     x_rtvv_tbl                     OUT NOCOPY rtvv_tbl_type) IS
6479     i			         NUMBER := 0;
6480     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6481   BEGIN
6482     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6483     IF p_rtvv_tbl.COUNT > 0 THEN
6484       i := p_rtvv_tbl.FIRST;
6485       LOOP
6486         CREATE_RESOLVED_TIMEVALUES(
6487 	    p_api_version,
6488 	    p_init_msg_list,
6489 	    l_return_status,
6490 	    x_msg_count,
6491 	    x_msg_data,
6492 	    p_rtvv_tbl(i),
6493 	    x_rtvv_tbl(i));
6494         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6495           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6496             x_return_status := l_return_status;
6497             raise G_EXCEPTION_HALT_VALIDATION;
6498           ELSE
6499             x_return_status := l_return_status;
6500           END IF;
6501         END IF;
6502         EXIT WHEN (i = p_rtvv_tbl.LAST);
6503         i := p_rtvv_tbl.NEXT(i);
6504       END LOOP;
6505     END IF;
6506   EXCEPTION
6507     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6508       NULL;
6509     WHEN OTHERS THEN
6510       OKC_API.set_message(p_app_name      => g_app_name,
6511                           p_msg_name      => g_unexpected_error,
6512                           p_token1        => g_sqlcode_token,
6513                           p_token1_value  => sqlcode,
6514                           p_token2        => g_sqlerrm_token,
6515                           p_token2_value  => sqlerrm);
6516       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6517   END CREATE_RESOLVED_TIMEVALUES;
6518 
6519   PROCEDURE UPDATE_RESOLVED_TIMEVALUES(
6520     p_api_version	    IN NUMBER,
6521     p_init_msg_list         IN VARCHAR2 ,
6522     x_return_status         OUT NOCOPY VARCHAR2,
6523     x_msg_count             OUT NOCOPY NUMBER,
6524     x_msg_data              OUT NOCOPY VARCHAR2,
6525     p_rtvv_rec	            IN rtvv_rec_type,
6526     x_rtvv_rec              OUT NOCOPY rtvv_rec_type) IS
6527     l_api_name              CONSTANT VARCHAR2(30) := 'UPDATE_RESOLVED_TIMEVALUES';
6528     l_return_status	  VARCHAR2(1);
6529     l_rtvv_rec     rtvv_rec_type := p_rtvv_rec;
6530   BEGIN
6531     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6532 					      p_init_msg_list,
6533 					      '_PUB',
6534                                         x_return_status);
6535     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6536       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6537     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6538       raise OKC_API.G_EXCEPTION_ERROR;
6539     END IF;
6540     -- Call user hook for BEFORE
6541     g_rtvv_rec := l_rtvv_rec;
6542     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
6543     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6544       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6545     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6546       raise OKC_API.G_EXCEPTION_ERROR;
6547     END IF;
6548     l_rtvv_rec := migrate_rtvv(l_rtvv_rec, g_rtvv_rec);
6549     OKC_TIME_PVT.UPDATE_RESOLVED_TIMEVALUES(
6550        p_api_version,
6551        p_init_msg_list,
6552        x_return_status,
6553        x_msg_count,
6554        x_msg_data,
6555        p_rtvv_rec,
6556        x_rtvv_rec);
6557     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6558       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6559     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6560       raise OKC_API.G_EXCEPTION_ERROR;
6561     END IF;
6562 
6563     -- Call user hook for AFTER
6564     g_rtvv_rec := x_rtvv_rec;
6565     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
6566     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6567       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6568     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6569       raise OKC_API.G_EXCEPTION_ERROR;
6570     END IF;
6571     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6572   EXCEPTION
6573     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6574       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6575       (l_api_name,
6576        G_PKG_NAME,
6577        'OKC_API.G_RET_STS_ERROR',
6578        x_msg_count,
6579        x_msg_data,
6580        '_PUB');
6581     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6582       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6583       (l_api_name,
6584        G_PKG_NAME,
6585        'OKC_API.G_RET_STS_UNEXP_ERROR',
6586        x_msg_count,
6587        x_msg_data,
6588        '_PUB');
6589     WHEN OTHERS THEN
6590       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6591       (l_api_name,
6592        G_PKG_NAME,
6593        'OTHERS',
6594        x_msg_count,
6595        x_msg_data,
6596        '_PUB');
6597   END UPDATE_RESOLVED_TIMEVALUES;
6598 
6599   PROCEDURE UPDATE_RESOLVED_TIMEVALUES(
6600     p_api_version                  IN NUMBER,
6601     p_init_msg_list                IN VARCHAR2 ,
6602     x_return_status                OUT NOCOPY VARCHAR2,
6603     x_msg_count                    OUT NOCOPY NUMBER,
6604     x_msg_data                     OUT NOCOPY VARCHAR2,
6605     p_rtvv_tbl                     IN rtvv_tbl_type,
6606     x_rtvv_tbl                     OUT NOCOPY rtvv_tbl_type) IS
6607     i			         NUMBER := 0;
6608     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6609   BEGIN
6610     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6611     IF p_rtvv_tbl.COUNT > 0 THEN
6612       i := p_rtvv_tbl.FIRST;
6613       LOOP
6614         UPDATE_RESOLVED_TIMEVALUES(
6615 	    p_api_version,
6616 	    p_init_msg_list,
6617 	    l_return_status,
6618 	    x_msg_count,
6619 	    x_msg_data,
6620 	    p_rtvv_tbl(i),
6621 	    x_rtvv_tbl(i));
6622         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6623           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6624             x_return_status := l_return_status;
6625             raise G_EXCEPTION_HALT_VALIDATION;
6626           ELSE
6627             x_return_status := l_return_status;
6628           END IF;
6629         END IF;
6630         EXIT WHEN (i = p_rtvv_tbl.LAST);
6631         i := p_rtvv_tbl.NEXT(i);
6632       END LOOP;
6633     END IF;
6634   EXCEPTION
6635     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6636       NULL;
6637     WHEN OTHERS THEN
6638       OKC_API.set_message(p_app_name      => g_app_name,
6639                           p_msg_name      => g_unexpected_error,
6640                           p_token1        => g_sqlcode_token,
6641                           p_token1_value  => sqlcode,
6642                           p_token2        => g_sqlerrm_token,
6643                           p_token2_value  => sqlerrm);
6644       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6645   END UPDATE_RESOLVED_TIMEVALUES;
6646 
6647   PROCEDURE DELETE_RESOLVED_TIMEVALUES(
6648     p_api_version	    IN NUMBER,
6649     p_init_msg_list         IN VARCHAR2 ,
6650     x_return_status         OUT NOCOPY VARCHAR2,
6651     x_msg_count             OUT NOCOPY NUMBER,
6652     x_msg_data              OUT NOCOPY VARCHAR2,
6653     p_rtvv_rec              IN rtvv_rec_type) IS
6654     l_api_name              CONSTANT VARCHAR2(30) := 'DELETE_RESOLVED_TIMEVALUES';
6655     l_return_status	  VARCHAR2(1);
6656     l_rtvv_rec     rtvv_rec_type := p_rtvv_rec;
6657   BEGIN
6658     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6659 					      p_init_msg_list,
6660 					      '_PUB',
6661                                         x_return_status);
6662     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6663       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6664     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6665       raise OKC_API.G_EXCEPTION_ERROR;
6666     END IF;
6667     -- Call user hook for BEFORE
6668     g_rtvv_rec := l_rtvv_rec;
6669     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
6670     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6671       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6672     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6673       raise OKC_API.G_EXCEPTION_ERROR;
6674     END IF;
6675     OKC_TIME_PVT.DELETE_RESOLVED_TIMEVALUES(
6676        p_api_version,
6677        p_init_msg_list,
6678        x_return_status,
6679        x_msg_count,
6680        x_msg_data,
6681        p_rtvv_rec);
6682     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6683       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6684     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6685       raise OKC_API.G_EXCEPTION_ERROR;
6686     END IF;
6687 
6688     -- Call user hook for AFTER
6689     okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
6690     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6691       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6692     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6693       raise OKC_API.G_EXCEPTION_ERROR;
6694     END IF;
6695     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6696   EXCEPTION
6697     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6698       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6699       (l_api_name,
6700        G_PKG_NAME,
6701        'OKC_API.G_RET_STS_ERROR',
6702        x_msg_count,
6703        x_msg_data,
6704        '_PUB');
6705     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6706       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6707       (l_api_name,
6708        G_PKG_NAME,
6709        'OKC_API.G_RET_STS_UNEXP_ERROR',
6710        x_msg_count,
6711        x_msg_data,
6712        '_PUB');
6713     WHEN OTHERS THEN
6714       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6715       (l_api_name,
6716        G_PKG_NAME,
6717        'OTHERS',
6718        x_msg_count,
6719        x_msg_data,
6720        '_PUB');
6721   END DELETE_RESOLVED_TIMEVALUES;
6722 
6723   PROCEDURE DELETE_RESOLVED_TIMEVALUES(
6724     p_api_version                  IN NUMBER,
6725     p_init_msg_list                IN VARCHAR2 ,
6726     x_return_status                OUT NOCOPY VARCHAR2,
6727     x_msg_count                    OUT NOCOPY NUMBER,
6728     x_msg_data                     OUT NOCOPY VARCHAR2,
6729     p_rtvv_tbl                     IN rtvv_tbl_type) IS
6730     i			         NUMBER := 0;
6731     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6732   BEGIN
6733     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6734     IF p_rtvv_tbl.COUNT > 0 THEN
6735       i := p_rtvv_tbl.FIRST;
6736       LOOP
6737         DELETE_RESOLVED_TIMEVALUES(
6738 	    p_api_version,
6739 	    p_init_msg_list,
6740 	    l_return_status,
6741 	    x_msg_count,
6742 	    x_msg_data,
6743 	    p_rtvv_tbl(i));
6744         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6745           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6746             x_return_status := l_return_status;
6747             raise G_EXCEPTION_HALT_VALIDATION;
6748           ELSE
6749             x_return_status := l_return_status;
6750           END IF;
6751         END IF;
6752         EXIT WHEN (i = p_rtvv_tbl.LAST);
6753         i := p_rtvv_tbl.NEXT(i);
6754       END LOOP;
6755     END IF;
6756   EXCEPTION
6757     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6758       NULL;
6759     WHEN OTHERS THEN
6760       OKC_API.set_message(p_app_name      => g_app_name,
6761                           p_msg_name      => g_unexpected_error,
6762                           p_token1        => g_sqlcode_token,
6763                           p_token1_value  => sqlcode,
6764                           p_token2        => g_sqlerrm_token,
6765                           p_token2_value  => sqlerrm);
6766       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6767   END DELETE_RESOLVED_TIMEVALUES;
6768 
6769   PROCEDURE LOCK_RESOLVED_TIMEVALUES(
6770     p_api_version	    IN NUMBER,
6771     p_init_msg_list         IN VARCHAR2 ,
6772     x_return_status         OUT NOCOPY VARCHAR2,
6773     x_msg_count             OUT NOCOPY NUMBER,
6774     x_msg_data              OUT NOCOPY VARCHAR2,
6775     p_rtvv_rec		    IN rtvv_rec_type) IS
6776   BEGIN
6777     OKC_TIME_PVT.LOCK_RESOLVED_TIMEVALUES(
6778     p_api_version,
6779     p_init_msg_list,
6780     x_return_status,
6781     x_msg_count,
6782     x_msg_data,
6783     p_rtvv_rec);
6784   END LOCK_RESOLVED_TIMEVALUES;
6785 
6786   PROCEDURE LOCK_RESOLVED_TIMEVALUES(
6787     p_api_version                  IN NUMBER,
6788     p_init_msg_list                IN VARCHAR2 ,
6789     x_return_status                OUT NOCOPY VARCHAR2,
6790     x_msg_count                    OUT NOCOPY NUMBER,
6791     x_msg_data                     OUT NOCOPY VARCHAR2,
6792     p_rtvv_tbl                     IN rtvv_tbl_type) IS
6793     i			         NUMBER := 0;
6794     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6795   BEGIN
6796     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6797     IF p_rtvv_tbl.COUNT > 0 THEN
6798       i := p_rtvv_tbl.FIRST;
6799       LOOP
6800         LOCK_RESOLVED_TIMEVALUES(
6801 	    p_api_version,
6802 	    p_init_msg_list,
6803 	    l_return_status,
6804 	    x_msg_count,
6805 	    x_msg_data,
6806 	    p_rtvv_tbl(i));
6807         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6808           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6809             x_return_status := l_return_status;
6810             raise G_EXCEPTION_HALT_VALIDATION;
6811           ELSE
6812             x_return_status := l_return_status;
6813           END IF;
6814         END IF;
6815         EXIT WHEN (i = p_rtvv_tbl.LAST);
6816         i := p_rtvv_tbl.NEXT(i);
6817       END LOOP;
6818     END IF;
6819   EXCEPTION
6820     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6821       NULL;
6822     WHEN OTHERS THEN
6823       OKC_API.set_message(p_app_name      => g_app_name,
6824                           p_msg_name      => g_unexpected_error,
6825                           p_token1        => g_sqlcode_token,
6826                           p_token1_value  => sqlcode,
6827                           p_token2        => g_sqlerrm_token,
6828                           p_token2_value  => sqlerrm);
6829       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6830   END LOCK_RESOLVED_TIMEVALUES;
6831 
6832   PROCEDURE VALID_RESOLVED_TIMEVALUES(
6833     p_api_version	    IN NUMBER,
6834     p_init_msg_list         IN VARCHAR2 ,
6835     x_return_status         OUT NOCOPY VARCHAR2,
6836     x_msg_count             OUT NOCOPY NUMBER,
6837     x_msg_data              OUT NOCOPY VARCHAR2,
6838     p_rtvv_rec		    IN rtvv_rec_type) IS
6839   BEGIN
6840     OKC_TIME_PVT.VALID_RESOLVED_TIMEVALUES(
6841     p_api_version,
6842     p_init_msg_list,
6843     x_return_status,
6844     x_msg_count,
6845     x_msg_data,
6846     p_rtvv_rec);
6847   END VALID_RESOLVED_TIMEVALUES;
6848 
6849   PROCEDURE VALID_RESOLVED_TIMEVALUES(
6850     p_api_version                  IN NUMBER,
6851     p_init_msg_list                IN VARCHAR2 ,
6852     x_return_status                OUT NOCOPY VARCHAR2,
6853     x_msg_count                    OUT NOCOPY NUMBER,
6854     x_msg_data                     OUT NOCOPY VARCHAR2,
6855     p_rtvv_tbl                     IN rtvv_tbl_type) IS
6856     i			         NUMBER := 0;
6857     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6858   BEGIN
6859     x_return_status := OKC_API.G_RET_STS_SUCCESS;
6860     IF p_rtvv_tbl.COUNT > 0 THEN
6861       i := p_rtvv_tbl.FIRST;
6862       LOOP
6863         VALID_RESOLVED_TIMEVALUES(
6864 	    p_api_version,
6865 	    p_init_msg_list,
6866 	    l_return_status,
6867 	    x_msg_count,
6868 	    x_msg_data,
6869 	    p_rtvv_tbl(i));
6870         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6871           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6872             x_return_status := l_return_status;
6873             raise G_EXCEPTION_HALT_VALIDATION;
6874           ELSE
6875             x_return_status := l_return_status;
6876           END IF;
6877         END IF;
6878         EXIT WHEN (i = p_rtvv_tbl.LAST);
6879         i := p_rtvv_tbl.NEXT(i);
6880       END LOOP;
6881     END IF;
6882   EXCEPTION
6883     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6884       NULL;
6885     WHEN OTHERS THEN
6886       OKC_API.set_message(p_app_name      => g_app_name,
6887                           p_msg_name      => g_unexpected_error,
6888                           p_token1        => g_sqlcode_token,
6889                           p_token1_value  => sqlcode,
6890                           p_token2        => g_sqlerrm_token,
6891                           p_token2_value  => sqlerrm);
6892       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6893   END VALID_RESOLVED_TIMEVALUES;
6894 END OKC_TIME_PUB;