DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_ACTIONS_PUB

Source


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