DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SYS_ACCT_OPTS_PUB

Source


1 PACKAGE BODY OKL_SYS_ACCT_OPTS_PUB AS
2 /* $Header: OKLPSAOB.pls 120.3 2007/04/26 09:13:05 rgooty ship $ */
3 
4   PROCEDURE add_language IS
5   BEGIN
6 --    okl_sao_pvt.add_language;
7     NULL;
8   END add_language;
9 
10 
11   PROCEDURE insert_sys_acct_opts(
12                          p_api_version                  IN  NUMBER
13                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
14                         ,x_return_status                OUT NOCOPY VARCHAR2
15                         ,x_msg_count                    OUT NOCOPY NUMBER
16                         ,x_msg_data                     OUT NOCOPY VARCHAR2
17                         ,p_saov_rec                     IN  saov_rec_type
18                         ,x_saov_rec                     OUT NOCOPY saov_rec_type
19                         ) IS
20     l_saov_rec                        saov_rec_type;
21     l_data                            VARCHAR2(100);
22     l_api_name                        CONSTANT VARCHAR2(30)  := 'insert_sys_acct_opts';
23     l_count                           NUMBER ;
24     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
25   BEGIN
26     x_return_status := FND_API.G_RET_STS_SUCCESS;
27     SAVEPOINT insert_sys_acct_opts;
28     l_saov_rec := p_saov_rec;
29 
30     -- Bug 6014587: Start
31     -- When user tries to setup the Account Derivation Option as AMB,
32     --  the following code make sure that there is no value stored in
33     --  the Accounting Line Rounding Difference attribute
34     IF l_saov_rec.account_derivation = 'AMB'
35     THEN
36       l_saov_rec.ael_apply_rounding_difference := NULL;
37     END IF;
38     -- Bug 6014587: End
39 
40     okl_sao_pvt.insert_row(
41                                p_api_version   => p_api_version
42                               ,p_init_msg_list => p_init_msg_list
43                               ,x_return_status => l_return_status
44                               ,x_msg_count     => x_msg_count
45                               ,x_msg_data      => x_msg_data
46                               ,p_saov_rec      => l_saov_rec
47                               ,x_saov_rec      => x_saov_rec
48                               );
49 
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 
56     /* re-assign local record structure using output record from pvt api */
57     l_saov_rec := x_saov_rec;
58 
59 
60 
61 
62   EXCEPTION
63     WHEN FND_API.G_EXC_ERROR THEN
64       ROLLBACK TO insert_sys_acct_opts;
65       x_return_status := FND_API.G_RET_STS_ERROR;
66 
67       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
68                                ,p_count   => x_msg_count
69                                ,p_data    => x_msg_data);
70 
71     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
72       ROLLBACK TO insert_sys_acct_opts;
73       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
74       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
75                                ,p_count   => x_msg_count
76                                ,p_data    => x_msg_data);
77 
78     WHEN OTHERS THEN
79       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','insert_sys_acct_opts');
80       -- store SQL error message on message stack for caller
81       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
82                                ,p_count   => x_msg_count
83                                ,p_data    => x_msg_data);
84       -- notify caller of an UNEXPECTED error
85       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
86   END insert_sys_acct_opts;
87 
88 
89   PROCEDURE insert_sys_acct_opts(
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_saov_tbl                     IN  saov_tbl_type
96                         ,x_saov_tbl                     OUT NOCOPY saov_tbl_type
97                         ) IS
98     l_saov_tbl                        saov_tbl_type;
99     l_data                            VARCHAR2(100);
100     l_count                           NUMBER ;
101     l_api_name                        CONSTANT VARCHAR2(30)  := 'insert_sys_acct_opts';
102     l_return_status                   VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
103     l_overall_status			  VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
104     i                        NUMBER;
105 
106   BEGIN
107     x_return_status := FND_API.G_RET_STS_SUCCESS;
108     SAVEPOINT insert_sys_acct_opts;
109     l_saov_tbl :=  p_saov_tbl;
110 
111 
112 
113     IF (p_saov_tbl.COUNT > 0) THEN
114       i := p_saov_tbl.FIRST;
115 
116       LOOP
117         insert_sys_acct_opts (
118                            p_api_version   => p_api_version
119                           ,p_init_msg_list => p_init_msg_list
120                           ,x_return_status => x_return_status
121                           ,x_msg_count     => x_msg_count
122                           ,x_msg_data      => x_msg_data
123                           ,p_saov_rec      => p_saov_tbl(i)
124                           ,x_saov_rec      => x_saov_tbl(i)
125                           );
126 
127 		  -- store the highest degree of error
128 		  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
129 		  	 IF l_overall_status <> FND_API.G_RET_STS_UNEXP_ERROR THEN
130 			    l_overall_status := x_return_status;
131 			 END IF;
132 		  END IF;
133           EXIT WHEN (i = p_saov_tbl.LAST);
134 
135           i := p_saov_tbl.NEXT(i);
136 
137        END LOOP;
138 
139 	   -- return overall status
140 	   x_return_status := l_overall_status;
141      END IF;
142 
143      l_return_status := x_return_status;
144 
145      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
146         RAISE FND_API.G_EXC_ERROR;
147      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
148         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
149      END IF;
150 
151     /* re-assign local table structure using output table from pvt api */
152     l_saov_tbl := x_saov_tbl;
153 
154 
155 
156   EXCEPTION
157     WHEN FND_API.G_EXC_ERROR THEN
158       ROLLBACK TO insert_sys_acct_opts;
159       x_return_status := FND_API.G_RET_STS_ERROR;
160 
161       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
162                                ,p_count   => x_msg_count
163                                ,p_data    => x_msg_data);
164 
165     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
166       ROLLBACK TO insert_sys_acct_opts;
167       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
168       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
169                                ,p_count   => x_msg_count
170                                ,p_data    => x_msg_data);
171 
172     WHEN OTHERS THEN
173       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','insert_sys_acct_opts');
174       -- store SQL error message on message stack for caller
175       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
176                                ,p_count   => x_msg_count
177                                ,p_data    => x_msg_data);
178       -- notify caller of an UNEXPECTED error
179       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
180   END insert_sys_acct_opts;
181 
182   PROCEDURE lock_sys_acct_opts(
183                          p_api_version                  IN  NUMBER
184                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
185                         ,x_return_status                OUT NOCOPY VARCHAR2
186                         ,x_msg_count                    OUT NOCOPY NUMBER
187                         ,x_msg_data                     OUT NOCOPY VARCHAR2
188                         ,p_saov_rec                     IN  saov_rec_type
189                         ) IS
190 
191     l_saov_rec                        saov_rec_type;
192     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
193 
194   BEGIN
195     x_return_status := FND_API.G_RET_STS_SUCCESS;
196     SAVEPOINT lock_sys_acct_opts;
197     l_saov_rec := p_saov_rec;
198 
199     okl_sao_pvt.lock_row(
200                                p_api_version   => p_api_version
201                               ,p_init_msg_list => p_init_msg_list
202                               ,x_return_status => l_return_status
203                               ,x_msg_count     => x_msg_count
204                               ,x_msg_data      => x_msg_data
205                               ,p_saov_rec      => l_saov_rec
206                               );
207 
208      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
209         RAISE FND_API.G_EXC_ERROR;
210      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
211         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
212      END IF;
213 
214   EXCEPTION
215     WHEN FND_API.G_EXC_ERROR THEN
216       ROLLBACK TO lock_sys_acct_opts;
217       x_return_status := FND_API.G_RET_STS_ERROR;
218 
219       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
220                                ,p_count   => x_msg_count
221                                ,p_data    => x_msg_data);
222 
223     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
224       ROLLBACK TO lock_sys_acct_opts;
225       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
226       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
227                                ,p_count   => x_msg_count
228                                ,p_data    => x_msg_data);
229 
230     WHEN OTHERS THEN
231       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','lock_sys_acct_opts');
232       -- store SQL error message on message stack for caller
233       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
234                                ,p_count   => x_msg_count
235                                ,p_data    => x_msg_data);
236       -- notify caller of an UNEXPECTED error
237       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
238   END lock_sys_acct_opts;
239 
240   PROCEDURE lock_sys_acct_opts(
241                          p_api_version                  IN  NUMBER
242                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
243                         ,x_return_status                OUT NOCOPY VARCHAR2
244                         ,x_msg_count                    OUT NOCOPY NUMBER
245                         ,x_msg_data                     OUT NOCOPY VARCHAR2
246                         ,p_saov_tbl                     IN  saov_tbl_type
247                         ) IS
248 
249     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
250     l_overall_status			  VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
251     i                                 NUMBER;
252 
253   BEGIN
254     x_return_status := FND_API.G_RET_STS_SUCCESS;
255     SAVEPOINT lock_sys_acct_opts;
256 
257     IF (p_saov_tbl.COUNT > 0) THEN
258       i := p_saov_tbl.FIRST;
259 
260       LOOP
261         lock_sys_acct_opts (
262                            p_api_version   => p_api_version
263                           ,p_init_msg_list => p_init_msg_list
264                           ,x_return_status => x_return_status
265                           ,x_msg_count     => x_msg_count
266                           ,x_msg_data      => x_msg_data
267                           ,p_saov_rec      => p_saov_tbl(i)
268                           );
269 
270 		  -- store the highest degree of error
271 		  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
272 		  	 IF l_overall_status <> FND_API.G_RET_STS_UNEXP_ERROR THEN
273  		 	    l_overall_status := x_return_status;
274 			 END IF;
275 		  END IF;
276           EXIT WHEN (i = p_saov_tbl.LAST);
277 
278           i := p_saov_tbl.NEXT(i);
279 
280        END LOOP;
281 
282 	   -- return overall status
283 	   x_return_status := l_overall_status;
284      END IF;
285 
286      l_return_status := x_return_status;
287 
288      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
289         RAISE FND_API.G_EXC_ERROR;
290      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
291         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
292      END IF;
293 
294   EXCEPTION
295     WHEN FND_API.G_EXC_ERROR THEN
296       ROLLBACK TO lock_sys_acct_opts;
297       x_return_status := FND_API.G_RET_STS_ERROR;
298 
299       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
300                                ,p_count   => x_msg_count
301                                ,p_data    => x_msg_data);
302 
303     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
304       ROLLBACK TO lock_sys_acct_opts;
305       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
306       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
307                                ,p_count   => x_msg_count
308                                ,p_data    => x_msg_data);
309 
310     WHEN OTHERS THEN
311       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','lock_sys_acct_opts');
312       -- store SQL error message on message stack for caller
313       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
314                                ,p_count   => x_msg_count
315                                ,p_data    => x_msg_data);
316       -- notify caller of an UNEXPECTED error
317       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
318   END lock_sys_acct_opts;
319 
320   PROCEDURE update_sys_acct_opts(
321                          p_api_version                  IN  NUMBER
322                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
323                         ,x_return_status                OUT NOCOPY VARCHAR2
324                         ,x_msg_count                    OUT NOCOPY NUMBER
325                         ,x_msg_data                     OUT NOCOPY VARCHAR2
326                         ,p_saov_rec                     IN  saov_rec_type
327                         ,x_saov_rec                     OUT NOCOPY saov_rec_type
328                         ) IS
329     l_saov_rec                        saov_rec_type;
330     l_data                            VARCHAR2(100);
331     l_count                           NUMBER ;
332     l_api_name                        CONSTANT VARCHAR2(30)  := 'update_sys_acct_opts';
333     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
334   BEGIN
335     x_return_status := FND_API.G_RET_STS_SUCCESS;
336     SAVEPOINT update_sys_acct_opts;
337     l_saov_rec := p_saov_rec;
338 
339 
340 
341     okl_sao_pvt.update_row(
342                                p_api_version   => p_api_version
343                               ,p_init_msg_list => p_init_msg_list
344                               ,x_return_status => l_return_status
345                               ,x_msg_count     => x_msg_count
346                               ,x_msg_data      => x_msg_data
347                               ,p_saov_rec      => l_saov_rec
348                               ,x_saov_rec      => x_saov_rec
349                               );
350 
351      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
352         RAISE FND_API.G_EXC_ERROR;
353      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
354         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
355      END IF;
356 
357     /* re-assign local record structure using output record from pvt api */
358     l_saov_rec := x_saov_rec;
359 
360 
361 
362   EXCEPTION
363     WHEN FND_API.G_EXC_ERROR THEN
364       ROLLBACK TO update_sys_acct_opts;
365       x_return_status := FND_API.G_RET_STS_ERROR;
366 
367       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
368                                ,p_count   => x_msg_count
369                                ,p_data    => x_msg_data);
370 
371     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
372       ROLLBACK TO update_sys_acct_opts;
373       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
374       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
375                                ,p_count   => x_msg_count
376                                ,p_data    => x_msg_data);
377 
378     WHEN OTHERS THEN
379       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','update_sys_acct_opts');
380       -- store SQL error message on message stack for caller
381       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
382                                ,p_count   => x_msg_count
383                                ,p_data    => x_msg_data);
384       -- notify caller of an UNEXPECTED error
385       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
386   END update_sys_acct_opts;
387 
388 
389   PROCEDURE update_sys_acct_opts(
390                          p_api_version                  IN  NUMBER
391                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
392                         ,x_return_status                OUT NOCOPY VARCHAR2
393                         ,x_msg_count                    OUT NOCOPY NUMBER
394                         ,x_msg_data                     OUT NOCOPY VARCHAR2
395                         ,p_saov_tbl                     IN  saov_tbl_type
396                         ,x_saov_tbl                     OUT NOCOPY saov_tbl_type
397                         ) IS
398     l_saov_tbl                        saov_tbl_type;
399     l_data                            VARCHAR2(100);
400     l_count                           NUMBER;
401     l_api_name                        CONSTANT VARCHAR2(30)  := 'update_sys_acct_opts';
402     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
403     l_overall_status			  VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
404     i                                 NUMBER;
405 
406   BEGIN
407     x_return_status := FND_API.G_RET_STS_SUCCESS;
408     SAVEPOINT update_sys_acct_opts;
409     l_saov_tbl :=  p_saov_tbl;
410 
411 
412 
413     IF (p_saov_tbl.COUNT > 0) THEN
414       i := p_saov_tbl.FIRST;
415 
416       LOOP
417         update_sys_acct_opts (
418                            p_api_version   => p_api_version
419                           ,p_init_msg_list => p_init_msg_list
420                           ,x_return_status => x_return_status
421                           ,x_msg_count     => x_msg_count
422                           ,x_msg_data      => x_msg_data
423                           ,p_saov_rec      => p_saov_tbl(i)
424                           ,x_saov_rec      => x_saov_tbl(i)
425                           );
426 
427 		  -- store the highest degree of error
428 		  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
429 		  	 IF l_overall_status <> FND_API.G_RET_STS_UNEXP_ERROR THEN
430 			    l_overall_status := x_return_status;
431 			 END IF;
432 		  END IF;
433           EXIT WHEN (i = p_saov_tbl.LAST);
434 
435           i := p_saov_tbl.NEXT(i);
436 
437        END LOOP;
438 
439 	   -- return overall status
440 	   x_return_status := l_overall_status;
441      END IF;
442 
443      l_return_status := x_return_status;
444 
445      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
446         RAISE FND_API.G_EXC_ERROR;
447      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
448         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
449      END IF;
450 
451     /* re-assign local table structure using output table from pvt api */
452     l_saov_tbl := x_saov_tbl;
453 
454 
455 
456   EXCEPTION
457     WHEN FND_API.G_EXC_ERROR THEN
458       ROLLBACK TO update_sys_acct_opts;
459       x_return_status := FND_API.G_RET_STS_ERROR;
460 
461       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
462                                ,p_count   => x_msg_count
463                                ,p_data    => x_msg_data);
464 
465     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
466       ROLLBACK TO update_sys_acct_opts;
467       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
469                                ,p_count   => x_msg_count
470                                ,p_data    => x_msg_data);
471 
472     WHEN OTHERS THEN
473       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','update_sys_acct_opts');
474       -- store SQL error message on message stack for caller
475       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
476                                ,p_count   => x_msg_count
477                                ,p_data    => x_msg_data);
478       -- notify caller of an UNEXPECTED error
479       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
480   END update_sys_acct_opts;
481 
482   PROCEDURE delete_sys_acct_opts(
483                          p_api_version                  IN  NUMBER
484                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
485                         ,x_return_status                OUT NOCOPY VARCHAR2
486                         ,x_msg_count                    OUT NOCOPY NUMBER
487                         ,x_msg_data                     OUT NOCOPY VARCHAR2
488                         ,p_saov_rec                     IN  saov_rec_type
489                         ) IS
490     l_saov_rec                        saov_rec_type;
491     l_data                            VARCHAR2(100);
492     l_count                           NUMBER ;
493     l_api_name                        CONSTANT VARCHAR2(30)  := 'delete_sys_acct_opts';
494     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
495   BEGIN
496     x_return_status := FND_API.G_RET_STS_SUCCESS;
497     SAVEPOINT delete_sys_acct_opts;
498     l_saov_rec := p_saov_rec;
499 
500 
501 
502     okl_sao_pvt.delete_row(
503                                p_api_version   => p_api_version
504                               ,p_init_msg_list => p_init_msg_list
505                               ,x_return_status => l_return_status
506                               ,x_msg_count     => x_msg_count
507                               ,x_msg_data      => x_msg_data
508                               ,p_saov_rec      => l_saov_rec
509                               );
510 
511      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
512         RAISE FND_API.G_EXC_ERROR;
513      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
514         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
515      END IF;
516 
517 
518 
519   EXCEPTION
520     WHEN FND_API.G_EXC_ERROR THEN
521       ROLLBACK TO delete_sys_acct_opts;
522       x_return_status := FND_API.G_RET_STS_ERROR;
523 
524       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
525                                ,p_count   => x_msg_count
526                                ,p_data    => x_msg_data);
527 
528     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
529       ROLLBACK TO delete_sys_acct_opts;
530       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
531       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
532                                ,p_count   => x_msg_count
533                                ,p_data    => x_msg_data);
534 
535     WHEN OTHERS THEN
536       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','delete_sys_acct_opts');
537       -- store SQL error message on message stack for caller
538       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
539                                ,p_count   => x_msg_count
540                                ,p_data    => x_msg_data);
541       -- notify caller of an UNEXPECTED error
542       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
543   END delete_sys_acct_opts;
544 
545 
546   PROCEDURE delete_sys_acct_opts(
547                          p_api_version                  IN  NUMBER
548                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
549                         ,x_return_status                OUT NOCOPY VARCHAR2
550                         ,x_msg_count                    OUT NOCOPY NUMBER
551                         ,x_msg_data                     OUT NOCOPY VARCHAR2
552                         ,p_saov_tbl                     IN  saov_tbl_type
553                         ) IS
554     l_saov_tbl                        saov_tbl_type;
555     l_data                            VARCHAR2(100);
556     l_count                           NUMBER ;
557     l_api_name                        CONSTANT VARCHAR2(30)  := 'delete_sys_acct_opts';
558     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
559     l_overall_status			  VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
560     i                                 NUMBER;
561 
562   BEGIN
563     x_return_status := FND_API.G_RET_STS_SUCCESS;
564     SAVEPOINT delete_sys_acct_opts;
565     l_saov_tbl :=  p_saov_tbl;
566 
567 
568 
569     IF (p_saov_tbl.COUNT > 0) THEN
570       i := p_saov_tbl.FIRST;
571 
572       LOOP
573         delete_sys_acct_opts (
574                            p_api_version   => p_api_version
575                           ,p_init_msg_list => p_init_msg_list
576                           ,x_return_status => x_return_status
577                           ,x_msg_count     => x_msg_count
578                           ,x_msg_data      => x_msg_data
579                           ,p_saov_rec      => p_saov_tbl(i)
580                           );
581 
582 		  -- store the highest degree of error
583 		  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
584 		  	 IF l_overall_status <> FND_API.G_RET_STS_UNEXP_ERROR THEN
585 			    l_overall_status := x_return_status;
586 			 END IF;
587 		  END IF;
588           EXIT WHEN (i = p_saov_tbl.LAST);
589 
590           i := p_saov_tbl.NEXT(i);
591 
592        END LOOP;
593 
594 	   -- return overall status
595 	   x_return_status := l_overall_status;
596      END IF;
597 
598      l_return_status := x_return_status;
599 
600      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
601         RAISE FND_API.G_EXC_ERROR;
602      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
603         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
604      END IF;
605 
606 
607 
608   EXCEPTION
609     WHEN FND_API.G_EXC_ERROR THEN
610       ROLLBACK TO delete_sys_acct_opts;
611       x_return_status := FND_API.G_RET_STS_ERROR;
612 
613       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
614                                ,p_count   => x_msg_count
615                                ,p_data    => x_msg_data);
616 
617     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
618       ROLLBACK TO delete_sys_acct_opts;
619       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
620       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
621                                ,p_count   => x_msg_count
622                                ,p_data    => x_msg_data);
623 
624     WHEN OTHERS THEN
625       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','delete_sys_acct_opts');
626       -- store SQL error message on message stack for caller
627       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
628                                ,p_count   => x_msg_count
629                                ,p_data    => x_msg_data);
630       -- notify caller of an UNEXPECTED error
631       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
632   END delete_sys_acct_opts;
633 
634   PROCEDURE validate_sys_acct_opts(
635                          p_api_version                  IN  NUMBER
636                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE
637                         ,x_return_status                OUT NOCOPY VARCHAR2
638                         ,x_msg_count                    OUT NOCOPY NUMBER
639                         ,x_msg_data                     OUT NOCOPY VARCHAR2
640                         ,p_saov_rec                     IN  saov_rec_type
641                         ) IS
642     l_saov_rec                        saov_rec_type;
643     l_data                            VARCHAR2(100);
644     l_count                           NUMBER;
645     l_api_name                        CONSTANT VARCHAR2(30)  := 'validate_sys_acct_opts';
646     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
647   BEGIN
648     x_return_status := FND_API.G_RET_STS_SUCCESS;
649     SAVEPOINT validate_sys_acct_opts;
650     l_saov_rec := p_saov_rec;
651 
652 
653 
654     okl_sao_pvt.validate_row(
655                                p_api_version   => p_api_version
656                               ,p_init_msg_list => p_init_msg_list
657                               ,x_return_status => l_return_status
658                               ,x_msg_count     => x_msg_count
659                               ,x_msg_data      => x_msg_data
660                               ,p_saov_rec      => l_saov_rec
661                               );
662 
663      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
664         RAISE FND_API.G_EXC_ERROR;
665      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
666         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
667      END IF;
668 
669 
670 
671   EXCEPTION
672     WHEN FND_API.G_EXC_ERROR THEN
673       ROLLBACK TO validate_sys_acct_opts;
674       x_return_status := FND_API.G_RET_STS_ERROR;
675 
676       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
677                                ,p_count   => x_msg_count
678                                ,p_data    => x_msg_data);
679 
680     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
681       ROLLBACK TO validate_sys_acct_opts;
682       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
683       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
684                                ,p_count   => x_msg_count
685                                ,p_data    => x_msg_data);
686 
687     WHEN OTHERS THEN
688       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','validate_sys_acct_opts');
689       -- store SQL error message on message stack for caller
690       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
691                                ,p_count   => x_msg_count
692                                ,p_data    => x_msg_data);
693       -- notify caller of an UNEXPECTED error
694       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
695   END validate_sys_acct_opts;
696 
697 
698   PROCEDURE validate_sys_acct_opts(
699                          p_api_version                  IN  NUMBER
700                         ,p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_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_saov_tbl                     IN  saov_tbl_type
705                         ) IS
706     l_saov_tbl                        saov_tbl_type;
707     l_data                            VARCHAR2(100);
708     l_count                           NUMBER;
709     l_api_name                        CONSTANT VARCHAR2(30)  := 'validate_sys_acct_opts';
710     l_return_status                   VARCHAR2(1)    := FND_API.G_RET_STS_SUCCESS;
711     l_overall_status			  VARCHAR2(1)   := FND_API.G_RET_STS_SUCCESS;
712     i                                 NUMBER;
713 
714   BEGIN
715     x_return_status := FND_API.G_RET_STS_SUCCESS;
716     SAVEPOINT validate_sys_acct_opts;
717     l_saov_tbl :=  p_saov_tbl;
718 
719 
720 
721     IF (p_saov_tbl.COUNT > 0) THEN
722       i := p_saov_tbl.FIRST;
723 
724       LOOP
725         validate_sys_acct_opts (
726                            p_api_version   => p_api_version
727                           ,p_init_msg_list => p_init_msg_list
728                           ,x_return_status => x_return_status
729                           ,x_msg_count     => x_msg_count
730                           ,x_msg_data      => x_msg_data
731                           ,p_saov_rec      => p_saov_tbl(i)
732                           );
733 
734 		  -- store the highest degree of error
735 		  IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
736 		  	 IF l_overall_status <> FND_API.G_RET_STS_UNEXP_ERROR THEN
737 			    l_overall_status := x_return_status;
738 			 END IF;
739 		  END IF;
740           EXIT WHEN (i = p_saov_tbl.LAST);
741 
742           i := p_saov_tbl.NEXT(i);
743 
744        END LOOP;
745 
746 	   -- return overall status
747 	   x_return_status := l_overall_status;
748      END IF;
749 
750      l_return_status := x_return_status;
751 
752      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
753         RAISE FND_API.G_EXC_ERROR;
754      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
755         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
756      END IF;
757 
758 
759 
760 
761   EXCEPTION
762     WHEN FND_API.G_EXC_ERROR THEN
763       ROLLBACK TO validate_sys_acct_opts;
764       x_return_status := FND_API.G_RET_STS_ERROR;
765 
766       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
767                                ,p_count   => x_msg_count
768                                ,p_data    => x_msg_data);
769 
770     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
771       ROLLBACK TO validate_sys_acct_opts;
772       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
773       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
774                                ,p_count   => x_msg_count
775                                ,p_data    => x_msg_data);
776 
777     WHEN OTHERS THEN
778       FND_MSG_PUB.ADD_EXC_MSG('OKL_SYS_ACCT_OPTS_PUB','validate_sys_acct_opts');
779       -- store SQL error message on message stack for caller
780       FND_MSG_PUB.Count_and_get(p_encoded => OKC_API.G_FALSE
781                                ,p_count   => x_msg_count
782                                ,p_data    => x_msg_data);
783       -- notify caller of an UNEXPECTED error
784       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
785   END validate_sys_acct_opts;
786 
787 
788 END OKL_SYS_ACCT_OPTS_PUB;