DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CONTRACT_PROD_OPTNS_PUB

Source


1 package body OKL_CONTRACT_PROD_OPTNS_PUB as
2 /* $Header: OKLPCSPB.pls 115.6 2004/04/13 10:42:51 rnaik noship $ */
3 
4 -- Start of comments
5 -- Procedure Name  : CREATE_CONTRACT_OPTION
6 -- Description     : creates contract option
7 -- Business Rules  :
8 -- Parameters      :
9 -- Version         : 1.0
10 -- End of comments
11   PROCEDURE create_contract_option(p_api_version   IN  NUMBER,
12                                    p_init_msg_list IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
13                                    x_return_status OUT NOCOPY VARCHAR2,
14                                    x_msg_count     OUT NOCOPY NUMBER,
15                                    x_msg_data      OUT NOCOPY VARCHAR2,
16                                    p_cspv_rec      IN  cspv_rec_type,
17                                    x_cspv_rec      OUT NOCOPY cspv_rec_type) IS
18 
19     l_cspv_rec                           cspv_rec_type;
20     l_return_status                      VARCHAR2(3)  := FND_API.G_RET_STS_SUCCESS;
21     l_api_name                  CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_OPTION';
22     l_api_version	              CONSTANT NUMBER := 1;
23   BEGIN
24     savepoint create_contract_option_pub;
25     -- Standard call to check for call compatibility.
26     IF NOT (FND_API.Compatible_API_Call (l_api_version,
27 	                                 p_api_version,
28 			                 l_api_name,
29 		                         G_PKG_NAME)) THEN
30        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
31     END IF;
32     -- Initialize message list if p_init_msg_list is set to TRUE.
33     IF (FND_API.to_Boolean( p_init_msg_list )) THEN
34        FND_MSG_PUB.initialize;
35     END IF;
36     l_cspv_rec := p_cspv_rec;
37     g_cspv_rec := l_cspv_rec;
38     --  Customer pre processing  section
39     -- 	Verticle industry pre- processing section
40     -- Business API call  section
41     l_cspv_rec.id := p_cspv_rec.id;
42     l_cspv_rec.object_version_number := p_cspv_rec.object_version_number;
43     OKL_CONTRACT_PROD_OPTNS_PVT.Create_contract_option(p_api_version   => p_api_version,
44                                             p_init_msg_list => p_init_msg_list,
45                                             x_return_status => l_return_status,
46                                             x_msg_count     => x_msg_count,
47                                             x_msg_data      => x_msg_data,
48                                             p_cspv_rec      => l_cspv_rec,
49                                             x_cspv_rec      => x_cspv_rec);
50     IF (l_return_status = FND_API.G_RET_STS_ERROR )  THEN
51        RAISE FND_API.G_EXC_ERROR;
52     ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
53        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
54     END IF;
55     l_cspv_rec := x_cspv_rec;
56     g_cspv_rec := l_cspv_rec;
57     --	Verticle industry post- processing section
58     --  Customer post processing  section
59     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
60   EXCEPTION
61 	When  FND_API.G_EXC_ERROR  then
62 		ROLLBACK  TO create_contract_option_pub;
63 		x_return_status := FND_API.G_RET_STS_ERROR;
64                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
65                                                         p_data  => x_msg_data);
66 	When  FND_API.G_EXC_UNEXPECTED_ERROR  then
67 		ROLLBACK  TO create_contract_option_pub;
68 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
69                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
70                                                         p_data  => x_msg_data);
71 	When  OTHERS  then
72 		ROLLBACK  TO create_contract_option_pub;
73 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
74 		FND_MSG_PUB.ADD_EXC_MSG( G_PKG_NAME, 'create_contract_option_pub');
75                              FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
76                                                         p_count   => x_msg_count,
77                                                         p_data    => x_msg_data);
78   END create_contract_option;
79 
80 -- Start of comments
81 --
82 -- Procedure Name  : CREATE_CONTRACT_OPTION
83 -- Description     : creates contract option
84 -- Business Rules  :
85 -- Parameters      :
86 -- Version         : 1.0
87 -- End of comments
88 
89   PROCEDURE create_contract_option(
90     p_api_version                  IN NUMBER,
91     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
92     x_return_status                OUT NOCOPY VARCHAR2,
93     x_msg_count                    OUT NOCOPY NUMBER,
94     x_msg_data                     OUT NOCOPY VARCHAR2,
95     p_cspv_tbl                     IN cspv_tbl_type,
96     x_cspv_tbl                     OUT NOCOPY cspv_tbl_type) IS
97     i                              NUMBER := 0;
98     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
99   BEGIN
100     x_return_status := FND_API.G_RET_STS_SUCCESS;
101     IF p_cspv_tbl.COUNT > 0 THEN
102       i := p_cspv_tbl.FIRST;
103       LOOP
104         create_contract_option(p_api_version   => p_api_version,
105                              p_init_msg_list => p_init_msg_list,
106                              x_return_status => l_return_status,
107                              x_msg_count     => x_msg_count,
108                              x_msg_data      => x_msg_data,
109                              p_cspv_rec      => p_cspv_tbl(i),
110                              x_cspv_rec      => x_cspv_tbl(i));
111         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
112            IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
113               x_return_status := l_return_status;
114               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
115            ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
116               x_return_status := l_return_status;
117               RAISE FND_API.G_EXC_ERROR;
118            ELSE
119               x_return_status := l_return_status;
120               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
121            END IF;
122         END IF;
123         EXIT WHEN (i = p_cspv_tbl.LAST);
124         i := p_cspv_tbl.NEXT(i);
125       END LOOP;
126     END IF;
127   EXCEPTION
128     WHEN  FND_API.G_EXC_ERROR  THEN
129     ROLLBACK  TO create_contract_option_pub;
130     x_return_status := FND_API.G_RET_STS_ERROR;
131     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
132                                p_data  => x_msg_data);
133     WHEN  FND_API.G_EXC_UNEXPECTED_ERROR  THEN
134     ROLLBACK  TO create_contract_option_pub;
135     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
136     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
137                                p_data  => x_msg_data);
138     WHEN  OTHERS  then
139     ROLLBACK  TO create_contract_option_pub;
140     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
141     FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME, 'create_contract_option_pub');
142     FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
143                                p_count   => x_msg_count,
144                                p_data    => x_msg_data);
145   END create_contract_option;
146 
147 -- Start of comments
148 --
149 -- Procedure Name  : UPDATE_CONTRACT_OPTION
150 -- Description     : updates contract option
151 -- Business Rules  :
152 -- Parameters      :
153 -- Version         : 1.0
154 -- End of comments
155   PROCEDURE update_contract_option(p_api_version   IN         NUMBER,
156                                  p_init_msg_list IN         VARCHAR2 DEFAULT OKC_API.G_FALSE,
157                                  x_return_status OUT NOCOPY VARCHAR2,
158                                  x_msg_count     OUT NOCOPY NUMBER,
159                                  x_msg_data      OUT NOCOPY VARCHAR2,
160                                  p_cspv_rec      IN         cspv_rec_type,
161                                  x_cspv_rec      OUT NOCOPY cspv_rec_type) IS
162 
163     l_cspv_rec                           cspv_rec_type;
164     l_return_status                      VARCHAR2(3)  := FND_API.G_RET_STS_SUCCESS;
165     l_api_name                  CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_OPTION';
166     l_api_version	              CONSTANT NUMBER := 1;
167   BEGIN
168     savepoint update_contract_option_pub;
169     -- Standard call to check for call compatibility.
170     IF NOT (FND_API.Compatible_API_Call (l_api_version,
171 	                                 p_api_version,
172 			                 l_api_name,
173 		                         G_PKG_NAME)) THEN
174        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
175     END IF;
176     -- Initialize message list if p_init_msg_list is set to TRUE.
177     IF (FND_API.to_Boolean( p_init_msg_list )) THEN
178        FND_MSG_PUB.initialize;
179     END IF;
180     l_cspv_rec := p_cspv_rec;
181     g_cspv_rec := l_cspv_rec;
182     --  Customer pre processing  section
183     -- 	Verticle industry pre- processing section
184     -- Business API call  section
185     l_cspv_rec.id := p_cspv_rec.id;
186     l_cspv_rec.object_version_number := p_cspv_rec.object_version_number;
187     OKL_CONTRACT_PROD_OPTNS_PVT.update_contract_option(p_api_version   => p_api_version,
188                                             p_init_msg_list => p_init_msg_list,
189                                             x_return_status => l_return_status,
190                                             x_msg_count     => x_msg_count,
191                                             x_msg_data      => x_msg_data,
192                                             p_cspv_rec      => l_cspv_rec,
193                                             x_cspv_rec      => x_cspv_rec);
194     IF (l_return_status = FND_API.G_RET_STS_ERROR )  THEN
195        RAISE FND_API.G_EXC_ERROR;
196     ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
197        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
198     END IF;
199     l_cspv_rec := x_cspv_rec;
200     g_cspv_rec := l_cspv_rec;
201     --	Verticle industry post- processing section
202     --  Customer post processing  section
203     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
204   EXCEPTION
205 	When  FND_API.G_EXC_ERROR  then
206 		ROLLBACK  TO update_contract_option_pub;
207 		x_return_status := FND_API.G_RET_STS_ERROR;
208                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
209                                                         p_data  => x_msg_data);
210 	When  FND_API.G_EXC_UNEXPECTED_ERROR  then
211 		ROLLBACK  TO update_contract_option_pub;
212 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
213                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
214                                                         p_data  => x_msg_data);
215 	When  OTHERS  then
216 		ROLLBACK  TO update_contract_option_pub;
217 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
218 		FND_MSG_PUB.ADD_EXC_MSG( G_PKG_NAME, 'update_contract_option_pub');
219                              FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
220                                                         p_count   => x_msg_count,
221                                                         p_data    => x_msg_data);
222   END update_contract_option;
223 
224 -- Start of comments
225 --
226 -- Procedure Name  : UPDATE_CONTRACT_OPTION
227 -- Description     : updates contract option
228 -- Business Rules  :
229 -- Parameters      :
230 -- Version         : 1.0
231 -- End of comments
232 
233   PROCEDURE update_contract_option(
234     p_api_version                  IN NUMBER,
235     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
236     x_return_status                OUT NOCOPY VARCHAR2,
237     x_msg_count                    OUT NOCOPY NUMBER,
238     x_msg_data                     OUT NOCOPY VARCHAR2,
239     p_cspv_tbl                     IN cspv_tbl_type,
240     x_cspv_tbl                     OUT NOCOPY cspv_tbl_type) IS
241     i                              NUMBER := 0;
242     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
243   BEGIN
244     x_return_status := FND_API.G_RET_STS_SUCCESS;
245     IF p_cspv_tbl.COUNT > 0 THEN
246       i := p_cspv_tbl.FIRST;
247       LOOP
248         update_contract_option(p_api_version   => p_api_version,
249                              p_init_msg_list => p_init_msg_list,
250                              x_return_status => l_return_status,
251                              x_msg_count     => x_msg_count,
252                              x_msg_data      => x_msg_data,
253                              p_cspv_rec      => p_cspv_tbl(i),
254                              x_cspv_rec      => x_cspv_tbl(i));
255         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
256            IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
257               x_return_status := l_return_status;
258               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
259            ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
260               x_return_status := l_return_status;
261               RAISE FND_API.G_EXC_ERROR;
262            ELSE
263               x_return_status := l_return_status;
264               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265            END IF;
266         END IF;
267         EXIT WHEN (i = p_cspv_tbl.LAST);
268         i := p_cspv_tbl.NEXT(i);
269       END LOOP;
270     END IF;
271   EXCEPTION
272     WHEN  FND_API.G_EXC_ERROR  THEN
273     ROLLBACK  TO update_contract_option_pub;
274     x_return_status := FND_API.G_RET_STS_ERROR;
275     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
276                                p_data  => x_msg_data);
277     WHEN  FND_API.G_EXC_UNEXPECTED_ERROR  THEN
278     ROLLBACK  TO update_contract_option_pub;
279     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
280     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
281                                p_data  => x_msg_data);
282     WHEN  OTHERS  then
283     ROLLBACK  TO update_contract_option_pub;
284     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
285     FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME, 'update_contract_option_pub');
286     FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
287                                p_count   => x_msg_count,
288                                p_data    => x_msg_data);
289   END update_contract_option;
290 
291 -- Start of comments
292 --
293 -- Procedure Name  : DELETE_CONTRACT_OPTION
294 -- Description     : deletes contract option
295 -- Business Rules  :
296 -- Parameters      :
297 -- Version         : 1.0
298 -- End of comments
299   PROCEDURE delete_contract_option(p_api_version   IN         NUMBER,
300                                  p_init_msg_list IN         VARCHAR2 DEFAULT OKC_API.G_FALSE,
301                                  x_return_status OUT NOCOPY VARCHAR2,
302                                  x_msg_count     OUT NOCOPY NUMBER,
303                                  x_msg_data      OUT NOCOPY VARCHAR2,
304                                  p_cspv_rec      IN         cspv_rec_type) IS
305 
306     l_cspv_rec                           cspv_rec_type;
307     l_return_status                      VARCHAR2(3)  := FND_API.G_RET_STS_SUCCESS;
308     l_api_name                  CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_OPTION';
309     l_api_version	              CONSTANT NUMBER := 1;
310   BEGIN
311     savepoint delete_contract_option_pub;
312     -- Standard call to check for call compatibility.
313     IF NOT (FND_API.Compatible_API_Call (l_api_version,
314 	                                 p_api_version,
315 			                 l_api_name,
316 		                         G_PKG_NAME)) THEN
317        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
318     END IF;
319     -- Initialize message list if p_init_msg_list is set to TRUE.
320     IF (FND_API.to_Boolean( p_init_msg_list )) THEN
321        FND_MSG_PUB.initialize;
322     END IF;
323     l_cspv_rec := p_cspv_rec;
324     g_cspv_rec := l_cspv_rec;
325     --  Customer pre processing  section
326     -- 	Verticle industry pre- processing section
327     -- Business API call  section
328     l_cspv_rec.id := p_cspv_rec.id;
329     l_cspv_rec.object_version_number := p_cspv_rec.object_version_number;
330     OKL_CONTRACT_PROD_OPTNS_PVT.delete_contract_option(p_api_version   => p_api_version,
331                                             p_init_msg_list => p_init_msg_list,
332                                             x_return_status => l_return_status,
333                                             x_msg_count     => x_msg_count,
334                                             x_msg_data      => x_msg_data,
335                                             p_cspv_rec      => l_cspv_rec);
336     IF (l_return_status = FND_API.G_RET_STS_ERROR )  THEN
337        RAISE FND_API.G_EXC_ERROR;
338     ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
339        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
340     END IF;
341     g_cspv_rec := l_cspv_rec;
342     --	Verticle industry post- processing section
343     --  Customer post processing  section
344     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
345   EXCEPTION
346 	When  FND_API.G_EXC_ERROR  then
347 		ROLLBACK  TO delete_contract_option_pub;
348 		x_return_status := FND_API.G_RET_STS_ERROR;
349                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
350                                                         p_data  => x_msg_data);
351 	When  FND_API.G_EXC_UNEXPECTED_ERROR  then
352 		ROLLBACK  TO delete_contract_option_pub;
353 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
354                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
355                                                         p_data  => x_msg_data);
356 	When  OTHERS  then
357 		ROLLBACK  TO delete_contract_option_pub;
358 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
359 		FND_MSG_PUB.ADD_EXC_MSG( G_PKG_NAME, 'delete_contract_option_pub');
360                              FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
361                                                         p_count   => x_msg_count,
362                                                         p_data    => x_msg_data);
363   END delete_contract_option;
364 
365 -- Start of comments
366 --
367 -- Procedure Name  : DELETE_CONTRACT_OPTION
368 -- Description     : deletes contract option
369 -- Business Rules  :
370 -- Parameters      :
371 -- Version         : 1.0
372 -- End of comments
373 
374   PROCEDURE delete_contract_option(
375     p_api_version                  IN NUMBER,
376     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
377     x_return_status                OUT NOCOPY VARCHAR2,
378     x_msg_count                    OUT NOCOPY NUMBER,
379     x_msg_data                     OUT NOCOPY VARCHAR2,
380     p_cspv_tbl                     IN cspv_tbl_type) IS
381     i                              NUMBER := 0;
382     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
383   BEGIN
384     x_return_status := FND_API.G_RET_STS_SUCCESS;
385     IF p_cspv_tbl.COUNT > 0 THEN
386       i := p_cspv_tbl.FIRST;
387       LOOP
388         delete_contract_option(p_api_version   => p_api_version,
389                              p_init_msg_list => p_init_msg_list,
390                              x_return_status => l_return_status,
391                              x_msg_count     => x_msg_count,
392                              x_msg_data      => x_msg_data,
393                              p_cspv_rec      => p_cspv_tbl(i));
394         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
395            IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
396               x_return_status := l_return_status;
397               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
398            ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
399               x_return_status := l_return_status;
400               RAISE FND_API.G_EXC_ERROR;
401            ELSE
402               x_return_status := l_return_status;
403               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
404            END IF;
405         END IF;
406         EXIT WHEN (i = p_cspv_tbl.LAST);
407         i := p_cspv_tbl.NEXT(i);
408       END LOOP;
409     END IF;
410   EXCEPTION
411     WHEN  FND_API.G_EXC_ERROR  THEN
412     ROLLBACK  TO delete_contract_option_pub;
413     x_return_status := FND_API.G_RET_STS_ERROR;
414     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
415                                p_data  => x_msg_data);
416     WHEN  FND_API.G_EXC_UNEXPECTED_ERROR  THEN
417     ROLLBACK  TO delete_contract_option_pub;
418     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
419     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
420                                p_data  => x_msg_data);
421     WHEN  OTHERS  then
422     ROLLBACK  TO delete_contract_option_pub;
423     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
424     FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME, 'delete_contract_option_pub');
425     FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
426                                p_count   => x_msg_count,
427                                p_data    => x_msg_data);
428   END delete_contract_option;
429 
430 
431 -- Start of comments
432 --
433 -- Procedure Name  : VALIDATE_CONTRACT_OPTION
434 -- Description     : validates contract option
435 -- Business Rules  :
436 -- Parameters      :
437 -- Version         : 1.0
438 -- End of comments
439   PROCEDURE validate_contract_option(p_api_version   IN         NUMBER,
440                                  p_init_msg_list IN         VARCHAR2 DEFAULT OKC_API.G_FALSE,
441                                  x_return_status OUT NOCOPY VARCHAR2,
442                                  x_msg_count     OUT NOCOPY NUMBER,
443                                  x_msg_data      OUT NOCOPY VARCHAR2,
444                                  p_cspv_rec      IN         cspv_rec_type) IS
445 
446     l_cspv_rec                           cspv_rec_type;
447     l_return_status                      VARCHAR2(3)  := FND_API.G_RET_STS_SUCCESS;
448     l_api_name                  CONSTANT VARCHAR2(30) := 'VALIDATE_CONTRACT_OPTION';
449     l_api_version	              CONSTANT NUMBER := 1;
450   BEGIN
451     savepoint validate_contract_option_pub;
452     -- Standard call to check for call compatibility.
453     IF NOT (FND_API.Compatible_API_Call (l_api_version,
454 	                                 p_api_version,
455 			                 l_api_name,
456 		                         G_PKG_NAME)) THEN
457        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
458     END IF;
459     -- Initialize message list if p_init_msg_list is set to TRUE.
460     IF (FND_API.to_Boolean( p_init_msg_list )) THEN
461        FND_MSG_PUB.initialize;
462     END IF;
463     l_cspv_rec := p_cspv_rec;
464     g_cspv_rec := l_cspv_rec;
465     --  Customer pre processing  section
466     -- 	Verticle industry pre- processing section
467     -- Business API call  section
468     l_cspv_rec.id := p_cspv_rec.id;
469     l_cspv_rec.object_version_number := p_cspv_rec.object_version_number;
470     OKL_CONTRACT_PROD_OPTNS_PVT.validate_contract_option(p_api_version   => p_api_version,
471                                             p_init_msg_list => p_init_msg_list,
472                                             x_return_status => l_return_status,
473                                             x_msg_count     => x_msg_count,
474                                             x_msg_data      => x_msg_data,
475                                             p_cspv_rec      => l_cspv_rec);
476     IF (l_return_status = FND_API.G_RET_STS_ERROR )  THEN
477        RAISE FND_API.G_EXC_ERROR;
478     ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
479        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
480     END IF;
481     g_cspv_rec := l_cspv_rec;
482     --	Verticle industry post- processing section
483     --  Customer post processing  section
484     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
485   EXCEPTION
486 	When  FND_API.G_EXC_ERROR  then
487 		ROLLBACK  TO validate_contract_option_pub;
488 		x_return_status := FND_API.G_RET_STS_ERROR;
489                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
490                                                         p_data  => x_msg_data);
491 	When  FND_API.G_EXC_UNEXPECTED_ERROR  then
492 		ROLLBACK  TO validate_contract_option_pub;
493 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
494                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
495                                                         p_data  => x_msg_data);
496 	When  OTHERS  then
497 		ROLLBACK  TO validate_contract_option_pub;
498 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
499 		FND_MSG_PUB.ADD_EXC_MSG( G_PKG_NAME, 'validate_contract_option_pub');
500                              FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
501                                                         p_count   => x_msg_count,
502                                                         p_data    => x_msg_data);
503   END validate_contract_option;
504 
505 -- Start of comments
506 --
507 -- Procedure Name  : VALIDATE_CONTRACT_OPTION
508 -- Description     : validates contract option
509 -- Business Rules  :
510 -- Parameters      :
511 -- Version         : 1.0
512 -- End of comments
513 
514   PROCEDURE validate_contract_option(
515     p_api_version                  IN NUMBER,
516     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
517     x_return_status                OUT NOCOPY VARCHAR2,
518     x_msg_count                    OUT NOCOPY NUMBER,
519     x_msg_data                     OUT NOCOPY VARCHAR2,
520     p_cspv_tbl                     IN cspv_tbl_type) IS
521     i                              NUMBER := 0;
522     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
523   BEGIN
524     x_return_status := FND_API.G_RET_STS_SUCCESS;
525     IF p_cspv_tbl.COUNT > 0 THEN
526       i := p_cspv_tbl.FIRST;
527       LOOP
528         validate_contract_option(p_api_version   => p_api_version,
529                              p_init_msg_list => p_init_msg_list,
530                              x_return_status => l_return_status,
531                              x_msg_count     => x_msg_count,
532                              x_msg_data      => x_msg_data,
533                              p_cspv_rec      => p_cspv_tbl(i));
534         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
535            IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
536               x_return_status := l_return_status;
537               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
538            ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
539               x_return_status := l_return_status;
540               RAISE FND_API.G_EXC_ERROR;
541            ELSE
542               x_return_status := l_return_status;
543               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544            END IF;
545         END IF;
546         EXIT WHEN (i = p_cspv_tbl.LAST);
547         i := p_cspv_tbl.NEXT(i);
548       END LOOP;
549     END IF;
550   EXCEPTION
551     WHEN  FND_API.G_EXC_ERROR  THEN
552     ROLLBACK  TO validate_contract_option_pub;
553     x_return_status := FND_API.G_RET_STS_ERROR;
554     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
555                                p_data  => x_msg_data);
556     WHEN  FND_API.G_EXC_UNEXPECTED_ERROR  THEN
557     ROLLBACK  TO validate_contract_option_pub;
558     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
559     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
560                                p_data  => x_msg_data);
561     WHEN  OTHERS  then
562     ROLLBACK  TO validate_contract_option_pub;
563     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
564     FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME, 'validate_contract_option_pub');
565     FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
566                                p_count   => x_msg_count,
567                                p_data    => x_msg_data);
568   END validate_contract_option;
569 
570 
571 -- Start of comments
572 --
573 -- Procedure Name  : LOCK_CONTRACT_OPTION
574 -- Description     : locks contract option
575 -- Business Rules  :
576 -- Parameters      :
577 -- Version         : 1.0
578 -- End of comments
579   PROCEDURE lock_contract_option(p_api_version   IN         NUMBER,
580                                  p_init_msg_list IN         VARCHAR2 DEFAULT OKC_API.G_FALSE,
581                                  x_return_status OUT NOCOPY VARCHAR2,
582                                  x_msg_count     OUT NOCOPY NUMBER,
583                                  x_msg_data      OUT NOCOPY VARCHAR2,
584                                  p_cspv_rec      IN         cspv_rec_type) IS
585 
586     l_cspv_rec                           cspv_rec_type;
587     l_return_status                      VARCHAR2(3)  := FND_API.G_RET_STS_SUCCESS;
588     l_api_name                  CONSTANT VARCHAR2(30) := 'LOCK_CONTRACT_OPTION';
589     l_api_version	              CONSTANT NUMBER := 1;
590   BEGIN
591     savepoint lock_contract_option_pub;
592     -- Standard call to check for call compatibility.
593     IF NOT (FND_API.Compatible_API_Call (l_api_version,
594 	                                 p_api_version,
595 			                 l_api_name,
596 		                         G_PKG_NAME)) THEN
597        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
598     END IF;
599     -- Initialize message list if p_init_msg_list is set to TRUE.
600     IF (FND_API.to_Boolean( p_init_msg_list )) THEN
601        FND_MSG_PUB.initialize;
602     END IF;
603     l_cspv_rec := p_cspv_rec;
604     -- Business API call  section
605     l_cspv_rec.id := p_cspv_rec.id;
606     l_cspv_rec.object_version_number := p_cspv_rec.object_version_number;
607     OKL_CONTRACT_PROD_OPTNS_PVT.lock_contract_option(p_api_version   => p_api_version,
608                                             p_init_msg_list => p_init_msg_list,
609                                             x_return_status => l_return_status,
610                                             x_msg_count     => x_msg_count,
611                                             x_msg_data      => x_msg_data,
612                                             p_cspv_rec      => l_cspv_rec);
613     IF (l_return_status = FND_API.G_RET_STS_ERROR )  THEN
614        RAISE FND_API.G_EXC_ERROR;
615     ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
616        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
617     END IF;
618     g_cspv_rec := l_cspv_rec;
619     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
620   EXCEPTION
621 	When  FND_API.G_EXC_ERROR  then
622 		ROLLBACK  TO lock_contract_option_pub;
623 		x_return_status := FND_API.G_RET_STS_ERROR;
624                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
625                                                         p_data  => x_msg_data);
626 	When  FND_API.G_EXC_UNEXPECTED_ERROR  then
627 		ROLLBACK  TO lock_contract_option_pub;
628 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
629                              FND_MSG_PUB.count_and_get (p_count => x_msg_count,
630                                                         p_data  => x_msg_data);
631 	When  OTHERS  then
632 		ROLLBACK  TO lock_contract_option_pub;
633 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
634 		FND_MSG_PUB.ADD_EXC_MSG( G_PKG_NAME, 'lock_contract_option_pub');
635                              FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
636                                                         p_count   => x_msg_count,
637                                                         p_data    => x_msg_data);
638   END lock_contract_option;
639 
640 -- Start of comments
641 --
642 -- Procedure Name  : LOCK_CONTRACT_OPTION
643 -- Description     : locks contract option
644 -- Business Rules  :
645 -- Parameters      :
646 -- Version         : 1.0
647 -- End of comments
648 
649   PROCEDURE lock_contract_option(
650     p_api_version                  IN NUMBER,
651     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
652     x_return_status                OUT NOCOPY VARCHAR2,
653     x_msg_count                    OUT NOCOPY NUMBER,
654     x_msg_data                     OUT NOCOPY VARCHAR2,
655     p_cspv_tbl                     IN cspv_tbl_type) IS
656     i                              NUMBER := 0;
657     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
658   BEGIN
659     x_return_status := FND_API.G_RET_STS_SUCCESS;
660     IF p_cspv_tbl.COUNT > 0 THEN
661       i := p_cspv_tbl.FIRST;
662       LOOP
663         lock_contract_option(p_api_version   => p_api_version,
664                              p_init_msg_list => p_init_msg_list,
665                              x_return_status => l_return_status,
666                              x_msg_count     => x_msg_count,
667                              x_msg_data      => x_msg_data,
668                              p_cspv_rec      => p_cspv_tbl(i));
669         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
670            IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
671               x_return_status := l_return_status;
672               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
673            ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
674               x_return_status := l_return_status;
675               RAISE FND_API.G_EXC_ERROR;
676            ELSE
677               x_return_status := l_return_status;
678               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
679            END IF;
680         END IF;
681         EXIT WHEN (i = p_cspv_tbl.LAST);
682         i := p_cspv_tbl.NEXT(i);
683       END LOOP;
684     END IF;
685   EXCEPTION
686     WHEN  FND_API.G_EXC_ERROR  THEN
687     ROLLBACK  TO lock_contract_option_pub;
688     x_return_status := FND_API.G_RET_STS_ERROR;
689     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
690                                p_data  => x_msg_data);
691     WHEN  FND_API.G_EXC_UNEXPECTED_ERROR  THEN
692     ROLLBACK  TO lock_contract_option_pub;
693     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
694     FND_MSG_PUB.count_and_get (p_count => x_msg_count,
695                                p_data  => x_msg_data);
696     WHEN  OTHERS  then
697     ROLLBACK  TO lock_contract_option_pub;
698     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
699     FND_MSG_PUB.ADD_EXC_MSG(G_PKG_NAME, 'lock_contract_option_pub');
700     FND_MSG_PUB.count_and_get (p_encoded => FND_API.G_FALSE,
701                                p_count   => x_msg_count,
702                                p_data    => x_msg_data);
703   END lock_contract_option;
704 END OKL_CONTRACT_PROD_OPTNS_PUB;