DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CONTRACT_PUB

Source


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