DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_ATL_PVT

Source


1 PACKAGE BODY OKL_ATL_PVT AS
2 /* $Header: OKLSATLB.pls 120.5 2007/02/15 08:14:44 zrehman noship $ */
3 
4     G_EXCEPTION_HALT_VALIDATION EXCEPTION;
5     G_ITEM_NOT_FOUND_ERROR EXCEPTION;
6 
7   ---------------------------------------------------------------------------
8   -- PROCEDURE validate_avl_id
9   ---------------------------------------------------------------------------
10     PROCEDURE validate_avl_id(
11       x_return_status OUT NOCOPY VARCHAR2,
12       p_atlv_rec IN  atlv_rec_type
13     ) IS
14 
15     CURSOR okl_atlv_tmpl_pk_csr (v_avl_id IN NUMBER) IS
16     SELECT  '1'
17     FROM OKL_AE_TEMPLATES
18     WHERE id = v_avl_id;
19 
20     l_dummy VARCHAR2(1);
21     l_row_notfound   		BOOLEAN := TRUE;
22 
23     BEGIN
24 
25     x_return_status := OKC_API.G_RET_STS_SUCCESS;
26 
27     IF (p_atlv_rec.avl_id IS NULL) OR (p_atlv_rec.avl_id = OKC_API.G_MISS_NUM) THEN
28          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
29                              p_msg_name => g_required_value,
30                              p_token1   => g_col_name_token,
31                              p_token1_value => 'AVL_ID');
32 
33           x_return_status := OKC_API.G_RET_STS_ERROR;
34           RAISE G_EXCEPTION_HALT_VALIDATION;
35         ELSE
36           x_return_status := OKC_API.G_RET_STS_SUCCESS;
37     END IF;
38 
39     OPEN okl_atlv_tmpl_pk_csr(p_atlv_rec.AVL_ID);
40     FETCH okl_atlv_tmpl_pk_csr INTO l_dummy;
41     l_row_notfound := okl_atlv_tmpl_pk_csr%NOTFOUND;
42     CLOSE okl_atlv_tmpl_pk_csr;
43     IF (l_row_notfound) THEN
44         OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'AVL_ID');
45         RAISE g_item_not_found_error;
46     END IF;
47 
48       EXCEPTION
49        WHEN G_EXCEPTION_HALT_VALIDATION THEN
50           NULL;
51        WHEN g_item_not_found_error THEN
52         x_return_status := OKC_API.G_RET_STS_ERROR;
53        WHEN OTHERS THEN
54          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
55                              p_msg_name => g_required_value,
56                              p_token1   => g_sqlcode_token,
57                              p_token1_value => SQLCODE,
58                              p_token2       => g_sqlerrm_token,
59                              p_token2_value => SQLERRM);
60          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
61     END validate_avl_id;
62 
63   ---------------------------------------------------------------------------
64   -- PROCEDURE validate_ae_line_type
65   -- 04/27/2001 Inserted by Robin Edwin for not null validation
66   -- 12/12/2002 Changed by Kanti Jinger to remove the mandatory validation. Now the
67   --            line type is validated only when its values is not null
68   ---------------------------------------------------------------------------
69     PROCEDURE validate_ae_line_type(
70       x_return_status OUT NOCOPY VARCHAR2,
71       p_atlv_rec IN  atlv_rec_type
72     ) IS
73 
74     l_lookup_code    		VARCHAR2(1);
75     l_row_notfound   		BOOLEAN := TRUE;
76     l_dummy VARCHAR2(1);
77 
78     BEGIN
79     x_return_status := OKC_API.G_RET_STS_SUCCESS;
80 
81     IF (p_atlv_rec.ae_line_type IS NOT NULL)  AND
82        (p_atlv_rec.ae_line_type <> OKC_API.G_MISS_CHAR) THEN
83           l_dummy :=
84                   OKL_ACCOUNTING_UTIL.VALIDATE_LOOKUP_CODE
85                               (p_lookup_type => 'OKL_AE_LINE_TYPE',
86                                p_lookup_code => p_atlv_rec.ae_line_type);
87 
88           IF (l_dummy = OKL_API.G_FALSE) THEN
89                OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'AE_LINE_TYPE');
90                x_return_status := OKC_API.G_RET_STS_ERROR;
91                RAISE G_EXCEPTION_HALT_VALIDATION;
92           END IF;
93 
94     END IF;
95 
96       EXCEPTION
97        WHEN G_EXCEPTION_HALT_VALIDATION THEN
98           NULL;
99        WHEN OTHERS THEN
100          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
101                              p_msg_name => g_required_value,
102                              p_token1   => g_sqlcode_token,
103                              p_token1_value => SQLCODE,
104                              p_token2       => g_sqlerrm_token,
105                              p_token2_value => SQLERRM);
106          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
107     END validate_ae_line_type;
108 
109   ---------------------------------------------------------------------------
110   -- PROCEDURE validate_crd_code
111   -- 04/27/2001 Inserted by Robin Edwin for not null validation
112   ---------------------------------------------------------------------------
113     PROCEDURE validate_crd_code(
114       x_return_status OUT NOCOPY VARCHAR2,
115       p_atlv_rec IN  atlv_rec_type
116     ) IS
117 
118     l_lookup_code    		VARCHAR2(1);
119     l_row_notfound   		BOOLEAN := TRUE;
120     l_app_id                    NUMBER := 101;
121     l_view_app_id               NUMBER := 101;
122     l_dummy                     VARCHAR2(1);
123 
124     BEGIN
125     x_return_status := OKC_API.G_RET_STS_SUCCESS;
126 
127     IF (p_atlv_rec.crd_code IS NULL) OR (p_atlv_rec.crd_code = OKC_API.G_MISS_CHAR) THEN
128          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
129                              p_msg_name => g_required_value,
130                              p_token1   => g_col_name_token,
131                              p_token1_value => 'CRD_CODE');
132           x_return_status := OKC_API.G_RET_STS_ERROR;
133           RAISE G_EXCEPTION_HALT_VALIDATION;
134         ELSE
135           l_dummy :=
136                   OKL_ACCOUNTING_UTIL.VALIDATE_LOOKUP_CODE(p_lookup_type => 'CR_DR',
137                                                            p_lookup_code => p_atlv_rec.crd_code,
138                                                            p_app_id => l_app_id,
139                                                            p_view_app_id => l_view_app_id);
140          IF (l_dummy = OKL_API.G_FALSE) THEN
141             OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'CRD_CODE');
142             x_return_status := OKC_API.G_RET_STS_ERROR;
143             RAISE G_EXCEPTION_HALT_VALIDATION;
144          END IF;
145 
146 
147     END IF;
148 
149 
150       EXCEPTION
151        WHEN G_EXCEPTION_HALT_VALIDATION THEN
152           NULL;
153        WHEN g_item_not_found_error THEN
154         x_return_status := OKC_API.G_RET_STS_ERROR;
155        WHEN OTHERS THEN
156          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
157                              p_msg_name => g_required_value,
158                              p_token1   => g_sqlcode_token,
159                              p_token1_value => SQLCODE,
160                              p_token2       => g_sqlerrm_token,
161                              p_token2_value => SQLERRM);
162          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
163     END validate_crd_code;
164 
165 -- Commented by zrehman for Bug #5686162 15-Feb-2007 start
166 /*
167   ---------------------------------------------------------------------------
168   -- PROCEDURE validate_percentage
169   ---------------------------------------------------------------------------
170     PROCEDURE validate_percentage(
171       x_return_status OUT NOCOPY VARCHAR2,
172       p_atlv_rec IN  atlv_rec_type
173     ) IS
174     l_dummy VARCHAR2(1);
175     l_app_id NUMBER := 0;
176     l_view_App_id NUMBER := 0;
177 
178     BEGIN
179     x_return_status := OKC_API.G_RET_STS_SUCCESS;
180 
181     IF (p_atlv_rec.percentage IS NULL) OR
182        (p_atlv_rec.percentage = OKC_API.G_MISS_NUM) THEN
183          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
184                              p_msg_name => g_required_value,
185                              p_token1   => g_col_name_token,
186                              p_token1_value => 'PERCENTAGE');
187 
188           x_return_status := OKC_API.G_RET_STS_ERROR;
189           RAISE G_EXCEPTION_HALT_VALIDATION;
190 
191     ELSE
192 
193        IF (p_atlv_rec.PERCENTAGE > 100) OR (p_atlv_rec.PERCENTAGE < 0)  THEN
194 
195           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'PERCENTAGE');
196           x_return_status := OKC_API.G_RET_STS_ERROR;
197           RAISE G_EXCEPTION_HALT_VALIDATION;
198 
199        END IF;
200 
201     END IF;
202 
203       EXCEPTION
204        WHEN G_EXCEPTION_HALT_VALIDATION THEN
205           NULL;
206        WHEN OTHERS THEN
207          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
208                              p_msg_name => g_required_value,
209                              p_token1   => g_sqlcode_token,
210                              p_token1_value => SQLCODE,
211                              p_token2       => g_sqlerrm_token,
212                              p_token2_value => SQLERRM);
213          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
214 
215     END validate_percentage;
216     */
217 -- Commented by zrehman for Bug #5686162 15-Feb-2007 end
218 
219 
220   ---------------------------------------------------------------------------
221   -- PROCEDURE validate_account_builder_yn
222   -- 04/27/2001 Inserted by Robin Edwin for not null validation
223   ---------------------------------------------------------------------------
224     PROCEDURE validate_account_builder_yn(
225       x_return_status OUT NOCOPY VARCHAR2,
226       p_atlv_rec IN  atlv_rec_type
227     ) IS
228     l_dummy VARCHAR2(1);
229     l_app_id NUMBER := 0;
230     l_view_App_id NUMBER := 0;
231 
232     BEGIN
233     x_return_status := OKC_API.G_RET_STS_SUCCESS;
234 
235     IF (p_atlv_rec.account_builder_yn IS NULL) OR
236        (p_atlv_rec.account_builder_yn = OKC_API.G_MISS_CHAR) THEN
237          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
238                              p_msg_name => g_required_value,
239                              p_token1   => g_col_name_token,
240                              p_token1_value => 'ACCOUNT_BUILDER_YN');
241 
242           x_return_status := OKC_API.G_RET_STS_ERROR;
243           RAISE G_EXCEPTION_HALT_VALIDATION;
244     ELSE
245          l_dummy :=
246          OKL_ACCOUNTING_UTIL.VALIDATE_LOOKUP_CODE(p_lookup_type => 'YES_NO',
247                                                   p_lookup_code => p_atlv_rec.account_builder_yn,
248                                                   p_app_id => l_app_id,
249                                                   p_view_app_id => l_view_app_id);
250          IF (l_dummy = OKL_API.G_FALSE) THEN
251             OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'ACCOUNT_BUILDER_YN');
252             x_return_status := OKC_API.G_RET_STS_ERROR;
253             RAISE G_EXCEPTION_HALT_VALIDATION;
254          END IF;
255 
256     END IF;
257       EXCEPTION
258        WHEN G_EXCEPTION_HALT_VALIDATION THEN
259           NULL;
260        WHEN OTHERS THEN
261          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
262                              p_msg_name => g_required_value,
263                              p_token1   => g_sqlcode_token,
264                              p_token1_value => SQLCODE,
265                              p_token2       => g_sqlerrm_token,
266                              p_token2_value => SQLERRM);
267          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
268     END validate_account_builder_yn;
269 
270   ---------------------------------------------------------------------------
271   -- PROCEDURE validate_code_combination_id
272   -- 04/27/2001 Inserted by Robin Edwin for not null validation
273   ---------------------------------------------------------------------------
274     PROCEDURE validate_code_combination_id(
275       x_return_status OUT NOCOPY VARCHAR2,
276       p_atlv_rec IN  atlv_rec_type
277     ) IS
278     l_fetch_flag			      VARCHAR2(1) := okl_api.g_true;
279 
280     BEGIN
281 
282     x_return_status := OKC_API.G_RET_STS_SUCCESS;
283     IF (p_atlv_rec.CODE_COMBINATION_ID IS NOT NULL)  AND
284        (p_atlv_rec.CODE_COMBINATION_ID <> OKC_API.G_MISS_NUM) THEN
285 
286         l_fetch_flag := OKL_ACCOUNTING_UTIL.VALIDATE_GL_CCID (p_atlv_rec.code_combination_id);
287         IF l_fetch_flag = okl_api.g_false THEN
288 		Okc_Api.SET_MESSAGE(p_app_name     => g_app_name,
289                         	    p_msg_name     => g_invalid_value,
290                         	    p_token1       => g_col_name_token,
291                         	    p_token1_value => 'CODE_COMBINATION_ID');
292           	x_return_status := Okc_Api.G_RET_STS_ERROR;
293 		RAISE G_EXCEPTION_HALT_VALIDATION;
294         END IF;
295     END IF;
296 
297     EXCEPTION
298        WHEN G_EXCEPTION_HALT_VALIDATION THEN
299           NULL;
300        WHEN OTHERS THEN
301          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
302                              p_msg_name => g_required_value,
303                              p_token1   => g_sqlcode_token,
304                              p_token1_value => SQLCODE,
305                              p_token2       => g_sqlerrm_token,
306                              p_token2_value => SQLERRM);
307          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
308     END validate_code_combination_id;
309 
310   ---------------------------------------------------------------------------
311   -- PROCEDURE validate_CCID_BUILDER
312   ---------------------------------------------------------------------------
313   PROCEDURE Validate_CCID_BUILDER(x_return_status OUT NOCOPY     VARCHAR2,
314 				  p_atlv_rec      IN      atlv_rec_type)
315   IS
316 
317   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
318   l_unq_tbl               OKC_UTIL.unq_tbl_type;
319   l_atlv_status           VARCHAR2(1);
320   l_row_found             BOOLEAN := FALSE;
321 
322   BEGIN
323 
324     -- initialize return status
325     x_return_status := OKC_API.G_RET_STS_SUCCESS;
326 
327 -- If CCID is NULL and Account_Builder_YN is N then raise Error
328 
329     IF ((p_atlv_rec.CODE_COMBINATION_ID IS NULL) OR
330         (p_atlv_rec.CODE_COMBINATION_ID = OKC_API.G_MISS_NUM))
331             AND
332         (p_atlv_rec.ACCOUNT_BUILDER_YN  = 'N')
333         THEN
334 	OKL_API.SET_MESSAGE(p_app_name     =>  OKL_API.G_APP_NAME,
335                             p_msg_name     => 'OKL_CCID_OR_BUILDER_REQD');
336 	x_return_status := OKC_API.G_RET_STS_ERROR;
337         RAISE G_EXCEPTION_HALT_VALIDATION;
338 
339     END IF;
340 
341 -- Removed the validation by santonyr on 22-Sep-2004
342 -- to fix bug 3901209
343 
344 /*
345 
346 -- If CCID is given then Account Builder YN cannot be 'Y'
347 
348     IF ((p_atlv_rec.CODE_COMBINATION_ID IS NOT NULL) AND
349         (p_atlv_rec.CODE_COMBINATION_ID <> OKC_API.G_MISS_NUM))
350             AND
351         (p_atlv_rec.ACCOUNT_BUILDER_YN  = 'Y' )
352         THEN
353 	OKL_API.SET_MESSAGE(p_app_name     =>  OKL_API.G_APP_NAME,
354                             p_msg_name     => 'OKL_GIVE_CCID_OR_BUILDER');
355 	x_return_status := OKC_API.G_RET_STS_ERROR;
356         RAISE G_EXCEPTION_HALT_VALIDATION;
357 
358     END IF;
359 
360 */
361 
362 
363 -- If CCID is given then percentage should also be given
364 
365     IF ((p_atlv_rec.CODE_COMBINATION_ID IS NOT NULL) AND
366         (p_atlv_rec.CODE_COMBINATION_ID <> OKC_API.G_MISS_NUM))
367          AND
368         ((p_atlv_rec.PERCENTAGE IS NULL) OR (p_atlv_rec.PERCENTAGE = OKC_API.G_MISS_NUM)) THEN
369 
370 	OKL_API.SET_MESSAGE(p_app_name     =>  OKL_API.G_APP_NAME,
371                             p_msg_name     => 'OKL_GIVE_PERCENT_FOR_CCID');
372 	x_return_status := OKC_API.G_RET_STS_ERROR;
373 
374         RAISE G_EXCEPTION_HALT_VALIDATION;
375 
376     END IF;
377 
378 
379 
380   EXCEPTION
381     WHEN G_EXCEPTION_HALT_VALIDATION THEN
382     -- no processing necessary;  validation can continue
383     -- with the next column
384     NULL;
385 
386     WHEN OTHERS THEN
387      -- store SQL error message on message stack for caller
388       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
389                           p_msg_name     => g_unexpected_error,
390                           p_token1       => g_sqlcode_token,
391                           p_token1_value => SQLCODE,
392                           p_token2       => g_sqlerrm_token,
393                           p_token2_value => SQLERRM);
394 
395       -- notify caller of an UNEXPECTED error
396       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
397 
398   END Validate_CCID_BUILDER;
399 
400   ---------------------------------------------------------------------------
401   -- FUNCTION get_seq_id
402   ---------------------------------------------------------------------------
403   FUNCTION get_seq_id RETURN NUMBER IS
404   BEGIN
405     RETURN(okc_p_util.raw_to_number(sys_guid()));
406   END get_seq_id;
407 
408   ---------------------------------------------------------------------------
409   -- PROCEDURE qc
410   ---------------------------------------------------------------------------
411   PROCEDURE qc IS
412   BEGIN
413     NULL;
414   END qc;
415 
416   ---------------------------------------------------------------------------
417   -- PROCEDURE change_version
418   ---------------------------------------------------------------------------
419   PROCEDURE change_version IS
420   BEGIN
421     NULL;
422   END change_version;
423 
424   ---------------------------------------------------------------------------
425   -- PROCEDURE api_copy
426   ---------------------------------------------------------------------------
427   PROCEDURE api_copy IS
428   BEGIN
429     NULL;
430   END api_copy;
431 
432   ---------------------------------------------------------------------------
433   -- FUNCTION get_rec for: OKL_AE_TMPT_LNES
434   ---------------------------------------------------------------------------
435   FUNCTION get_rec (
436     p_atl_rec                      IN atl_rec_type,
437     x_no_data_found                OUT NOCOPY BOOLEAN
438   ) RETURN atl_rec_type IS
439     CURSOR okl_ae_tmpt_lnes_pk_csr (p_id                 IN NUMBER) IS
440     SELECT
441             ID,
442             SEQUENCE_NUMBER,
443             AVL_ID,
444             CODE_COMBINATION_ID,
445             AE_LINE_TYPE,
446             CRD_CODE,
447             ACCOUNT_BUILDER_YN,
448             OBJECT_VERSION_NUMBER,
449             DESCRIPTION,
450             PERCENTAGE,
451             ORG_ID,
452             ATTRIBUTE_CATEGORY,
453             ATTRIBUTE1,
454             ATTRIBUTE2,
455             ATTRIBUTE3,
456             ATTRIBUTE4,
457             ATTRIBUTE5,
458             ATTRIBUTE6,
459             ATTRIBUTE7,
460             ATTRIBUTE8,
461             ATTRIBUTE9,
462             ATTRIBUTE10,
463             ATTRIBUTE11,
464             ATTRIBUTE12,
465             ATTRIBUTE13,
466             ATTRIBUTE14,
467             ATTRIBUTE15,
468             CREATED_BY,
469             CREATION_DATE,
470             LAST_UPDATED_BY,
471             LAST_UPDATE_DATE,
472             LAST_UPDATE_LOGIN
473       FROM Okl_Ae_Tmpt_Lnes
474      WHERE okl_ae_tmpt_lnes.id  = p_id;
475     l_okl_ae_tmpt_lnes_pk          okl_ae_tmpt_lnes_pk_csr%ROWTYPE;
476     l_atl_rec                      atl_rec_type;
477   BEGIN
478     x_no_data_found := TRUE;
479     -- Get current database values
480     OPEN okl_ae_tmpt_lnes_pk_csr (p_atl_rec.id);
481     FETCH okl_ae_tmpt_lnes_pk_csr INTO
482               l_atl_rec.ID,
483               l_atl_rec.SEQUENCE_NUMBER,
484               l_atl_rec.AVL_ID,
485               l_atl_rec.CODE_COMBINATION_ID,
486               l_atl_rec.AE_LINE_TYPE,
487               l_atl_rec.CRD_CODE,
488               l_atl_rec.ACCOUNT_BUILDER_YN,
489               l_atl_rec.OBJECT_VERSION_NUMBER,
490               l_atl_rec.DESCRIPTION,
491               l_atl_rec.PERCENTAGE,
492               l_atl_rec.ORG_ID,
493               l_atl_rec.ATTRIBUTE_CATEGORY,
494               l_atl_rec.ATTRIBUTE1,
495               l_atl_rec.ATTRIBUTE2,
496               l_atl_rec.ATTRIBUTE3,
497               l_atl_rec.ATTRIBUTE4,
498               l_atl_rec.ATTRIBUTE5,
499               l_atl_rec.ATTRIBUTE6,
500               l_atl_rec.ATTRIBUTE7,
501               l_atl_rec.ATTRIBUTE8,
502               l_atl_rec.ATTRIBUTE9,
503               l_atl_rec.ATTRIBUTE10,
504               l_atl_rec.ATTRIBUTE11,
505               l_atl_rec.ATTRIBUTE12,
506               l_atl_rec.ATTRIBUTE13,
507               l_atl_rec.ATTRIBUTE14,
508               l_atl_rec.ATTRIBUTE15,
509               l_atl_rec.CREATED_BY,
510               l_atl_rec.CREATION_DATE,
511               l_atl_rec.LAST_UPDATED_BY,
512               l_atl_rec.LAST_UPDATE_DATE,
513               l_atl_rec.LAST_UPDATE_LOGIN;
514     x_no_data_found := okl_ae_tmpt_lnes_pk_csr%NOTFOUND;
515     CLOSE okl_ae_tmpt_lnes_pk_csr;
516     RETURN(l_atl_rec);
517   END get_rec;
518 
519   FUNCTION get_rec (
520     p_atl_rec                      IN atl_rec_type
521   ) RETURN atl_rec_type IS
522     l_row_notfound                 BOOLEAN := TRUE;
523   BEGIN
524     RETURN(get_rec(p_atl_rec, l_row_notfound));
525   END get_rec;
526   ---------------------------------------------------------------------------
527   -- FUNCTION get_rec for: OKL_AE_TMPT_LNES_V
528   ---------------------------------------------------------------------------
529   FUNCTION get_rec (
530     p_atlv_rec                     IN atlv_rec_type,
531     x_no_data_found                OUT NOCOPY BOOLEAN
532   ) RETURN atlv_rec_type IS
533     CURSOR okl_atlv_pk_csr (p_id                 IN NUMBER) IS
534     SELECT
535             ID,
536             OBJECT_VERSION_NUMBER,
537             AVL_ID,
538             CRD_CODE,
539             CODE_COMBINATION_ID,
540             AE_LINE_TYPE,
541             SEQUENCE_NUMBER,
542             DESCRIPTION,
543             PERCENTAGE,
544             ACCOUNT_BUILDER_YN,
545             ATTRIBUTE_CATEGORY,
546             ATTRIBUTE1,
547             ATTRIBUTE2,
548             ATTRIBUTE3,
549             ATTRIBUTE4,
550             ATTRIBUTE5,
551             ATTRIBUTE6,
552             ATTRIBUTE7,
553             ATTRIBUTE8,
554             ATTRIBUTE9,
555             ATTRIBUTE10,
556             ATTRIBUTE11,
557             ATTRIBUTE12,
558             ATTRIBUTE13,
559             ATTRIBUTE14,
560             ATTRIBUTE15,
561             ORG_ID,
562             CREATED_BY,
563             CREATION_DATE,
564             LAST_UPDATED_BY,
565             LAST_UPDATE_DATE,
566             LAST_UPDATE_LOGIN
567       FROM OKL_AE_TMPT_LNES
568      WHERE OKL_AE_TMPT_LNES.id = p_id;
569     l_okl_atlv_pk                  okl_atlv_pk_csr%ROWTYPE;
570     l_atlv_rec                     atlv_rec_type;
571   BEGIN
572     x_no_data_found := TRUE;
573     -- Get current database values
574     OPEN okl_atlv_pk_csr (p_atlv_rec.id);
575     FETCH okl_atlv_pk_csr INTO
576               l_atlv_rec.ID,
577               l_atlv_rec.OBJECT_VERSION_NUMBER,
578               l_atlv_rec.AVL_ID,
579               l_atlv_rec.CRD_CODE,
580               l_atlv_rec.CODE_COMBINATION_ID,
581               l_atlv_rec.AE_LINE_TYPE,
582               l_atlv_rec.SEQUENCE_NUMBER,
583               l_atlv_rec.DESCRIPTION,
584               l_atlv_rec.PERCENTAGE,
585               l_atlv_rec.ACCOUNT_BUILDER_YN,
586               l_atlv_rec.ATTRIBUTE_CATEGORY,
587               l_atlv_rec.ATTRIBUTE1,
588               l_atlv_rec.ATTRIBUTE2,
589               l_atlv_rec.ATTRIBUTE3,
590               l_atlv_rec.ATTRIBUTE4,
591               l_atlv_rec.ATTRIBUTE5,
592               l_atlv_rec.ATTRIBUTE6,
593               l_atlv_rec.ATTRIBUTE7,
594               l_atlv_rec.ATTRIBUTE8,
595               l_atlv_rec.ATTRIBUTE9,
596               l_atlv_rec.ATTRIBUTE10,
597               l_atlv_rec.ATTRIBUTE11,
598               l_atlv_rec.ATTRIBUTE12,
599               l_atlv_rec.ATTRIBUTE13,
600               l_atlv_rec.ATTRIBUTE14,
601               l_atlv_rec.ATTRIBUTE15,
602               l_atlv_rec.ORG_ID,
603               l_atlv_rec.CREATED_BY,
604               l_atlv_rec.CREATION_DATE,
605               l_atlv_rec.LAST_UPDATED_BY,
606               l_atlv_rec.LAST_UPDATE_DATE,
607               l_atlv_rec.LAST_UPDATE_LOGIN;
608     x_no_data_found := okl_atlv_pk_csr%NOTFOUND;
609     CLOSE okl_atlv_pk_csr;
610     RETURN(l_atlv_rec);
611   END get_rec;
612 
613   FUNCTION get_rec (
614     p_atlv_rec                     IN atlv_rec_type
615   ) RETURN atlv_rec_type IS
616     l_row_notfound                 BOOLEAN := TRUE;
617   BEGIN
618     RETURN(get_rec(p_atlv_rec, l_row_notfound));
619   END get_rec;
620 
621   --------------------------------------------------------
622   -- FUNCTION null_out_defaults for: OKL_AE_TMPT_LNES_V --
623   --------------------------------------------------------
624   FUNCTION null_out_defaults (
625     p_atlv_rec	IN atlv_rec_type
626   ) RETURN atlv_rec_type IS
627     l_atlv_rec	atlv_rec_type := p_atlv_rec;
628   BEGIN
629     IF (l_atlv_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
630       l_atlv_rec.object_version_number := NULL;
631     END IF;
632     IF (l_atlv_rec.avl_id = OKC_API.G_MISS_NUM) THEN
633       l_atlv_rec.avl_id := NULL;
634     END IF;
635     IF (l_atlv_rec.crd_code = OKC_API.G_MISS_CHAR) THEN
636       l_atlv_rec.crd_code := NULL;
637     END IF;
638     IF (l_atlv_rec.code_combination_id = OKC_API.G_MISS_NUM) THEN
639       l_atlv_rec.code_combination_id := NULL;
640     END IF;
641     IF (l_atlv_rec.ae_line_type = OKC_API.G_MISS_CHAR) THEN
642       l_atlv_rec.ae_line_type := NULL;
643     END IF;
644     IF (l_atlv_rec.sequence_number = OKC_API.G_MISS_NUM) THEN
645       l_atlv_rec.sequence_number := NULL;
646     END IF;
647     IF (l_atlv_rec.description = OKC_API.G_MISS_CHAR) THEN
648       l_atlv_rec.description := NULL;
649     END IF;
650     IF (l_atlv_rec.percentage = OKC_API.G_MISS_NUM) THEN
651       l_atlv_rec.percentage := NULL;
652     END IF;
653     IF (l_atlv_rec.account_builder_yn = OKC_API.G_MISS_CHAR) THEN
654       l_atlv_rec.account_builder_yn := NULL;
655     END IF;
656     IF (l_atlv_rec.attribute_category = OKC_API.G_MISS_CHAR) THEN
657       l_atlv_rec.attribute_category := NULL;
658     END IF;
659     IF (l_atlv_rec.attribute1 = OKC_API.G_MISS_CHAR) THEN
660       l_atlv_rec.attribute1 := NULL;
661     END IF;
662     IF (l_atlv_rec.attribute2 = OKC_API.G_MISS_CHAR) THEN
663       l_atlv_rec.attribute2 := NULL;
664     END IF;
665     IF (l_atlv_rec.attribute3 = OKC_API.G_MISS_CHAR) THEN
666       l_atlv_rec.attribute3 := NULL;
667     END IF;
668     IF (l_atlv_rec.attribute4 = OKC_API.G_MISS_CHAR) THEN
669       l_atlv_rec.attribute4 := NULL;
670     END IF;
671     IF (l_atlv_rec.attribute5 = OKC_API.G_MISS_CHAR) THEN
672       l_atlv_rec.attribute5 := NULL;
673     END IF;
674     IF (l_atlv_rec.attribute6 = OKC_API.G_MISS_CHAR) THEN
675       l_atlv_rec.attribute6 := NULL;
676     END IF;
677     IF (l_atlv_rec.attribute7 = OKC_API.G_MISS_CHAR) THEN
678       l_atlv_rec.attribute7 := NULL;
679     END IF;
680     IF (l_atlv_rec.attribute8 = OKC_API.G_MISS_CHAR) THEN
681       l_atlv_rec.attribute8 := NULL;
682     END IF;
683     IF (l_atlv_rec.attribute9 = OKC_API.G_MISS_CHAR) THEN
684       l_atlv_rec.attribute9 := NULL;
685     END IF;
686     IF (l_atlv_rec.attribute10 = OKC_API.G_MISS_CHAR) THEN
687       l_atlv_rec.attribute10 := NULL;
688     END IF;
689     IF (l_atlv_rec.attribute11 = OKC_API.G_MISS_CHAR) THEN
690       l_atlv_rec.attribute11 := NULL;
691     END IF;
692     IF (l_atlv_rec.attribute12 = OKC_API.G_MISS_CHAR) THEN
693       l_atlv_rec.attribute12 := NULL;
694     END IF;
695     IF (l_atlv_rec.attribute13 = OKC_API.G_MISS_CHAR) THEN
696       l_atlv_rec.attribute13 := NULL;
697     END IF;
698     IF (l_atlv_rec.attribute14 = OKC_API.G_MISS_CHAR) THEN
699       l_atlv_rec.attribute14 := NULL;
700     END IF;
701     IF (l_atlv_rec.attribute15 = OKC_API.G_MISS_CHAR) THEN
702       l_atlv_rec.attribute15 := NULL;
703     END IF;
704     IF (l_atlv_rec.org_id = OKC_API.G_MISS_NUM) THEN
705       l_atlv_rec.org_id := NULL;
706     END IF;
707     IF (l_atlv_rec.created_by = OKC_API.G_MISS_NUM) THEN
708       l_atlv_rec.created_by := NULL;
709     END IF;
710     IF (l_atlv_rec.creation_date = OKC_API.G_MISS_DATE) THEN
711       l_atlv_rec.creation_date := NULL;
712     END IF;
713     IF (l_atlv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
714       l_atlv_rec.last_updated_by := NULL;
715     END IF;
716     IF (l_atlv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
717       l_atlv_rec.last_update_date := NULL;
718     END IF;
719     IF (l_atlv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
720       l_atlv_rec.last_update_login := NULL;
721     END IF;
722     RETURN(l_atlv_rec);
723   END null_out_defaults;
724   ---------------------------------------------------------------------------
725   -- PROCEDURE Validate_Attributes
726   ---------------------------------------------------------------------------
727   ------------------------------------------------
728   -- Validate_Attributes for:OKL_AE_TMPT_LNES_V --
729   ------------------------------------------------
730   FUNCTION Validate_Attributes (
731     p_atlv_rec IN  atlv_rec_type
732   ) RETURN VARCHAR2 IS
733     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
734     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
735   BEGIN
736 
737 
738     IF (p_atlv_rec.id = OKC_API.G_MISS_NUM) OR
739        (p_atlv_rec.id IS NULL)
740     THEN
741       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
742       l_return_status := OKC_API.G_RET_STS_ERROR;
743       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
744           x_return_status := l_return_status;
745       END IF;
746     END IF;
747 
748     IF (p_atlv_rec.object_version_number = OKC_API.G_MISS_NUM) OR
749        (p_atlv_rec.object_version_number IS NULL)
750     THEN
751       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
752       l_return_status := OKC_API.G_RET_STS_ERROR;
753       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
754           x_return_status := l_return_status;
755       END IF;
756     END IF;
757 
758     IF (p_atlv_rec.sequence_number = OKC_API.G_MISS_NUM) OR
759        (p_atlv_rec.sequence_number IS NULL)
760     THEN
761       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'sequence_number');
762       l_return_status := OKC_API.G_RET_STS_ERROR;
763       IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
764           x_return_status := l_return_status;
765       END IF;
766     END IF;
767 
768     validate_avl_id(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
769     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
770        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
771            x_return_status := l_return_status;
772        END IF;
773     END IF;
774 
775     validate_ae_line_type(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
776     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
777        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
778            x_return_status := l_return_status;
779        END IF;
780     END IF;
781 
782     validate_crd_code(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
783     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
784        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
785            x_return_status := l_return_status;
786        END IF;
787     END IF;
788    -- Commented by zrehman for Bug #5686162 15-Feb-2007
789    /*
790     validate_percentage(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
791     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
792        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
793            x_return_status := l_return_status;
794        END IF;
795     END IF;
796     */
797    -- Commented by zrehman for Bug #5686162 15-Feb-2007
798 
799     validate_account_builder_yn(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
800     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
801        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
802            x_return_status := l_return_status;
803        END IF;
804     END IF;
805 
806     validate_code_combination_id(x_return_status => l_return_status, p_atlv_rec => p_atlv_rec);
807     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
808        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
809            x_return_status := l_return_status;
810        END IF;
811     END IF;
812 
813 
814     RETURN(x_return_status);
815 
816     EXCEPTION
817       WHEN OTHERS THEN
818         -- store SQL error message on message stack for caller
819         OKC_API.SET_MESSAGE(p_app_name    => g_app_name,
820                             p_msg_name     => g_unexpected_error,
821                             p_token1       => g_sqlcode_token,
822                             p_token1_value => SQLCODE,
823                             p_token2       => g_sqlerrm_token,
824                             p_token2_value => SQLERRM);
825 
826         --notify caller of an UNEXPECTED error
827         x_return_status  := OKC_API.G_RET_STS_UNEXP_ERROR;
828 
829         --return status to caller
830         RETURN x_return_status;
831 
832   END Validate_Attributes;
833 
834   ---------------------------------------------------------------------------
835   -- PROCEDURE Validate_Record
836   ---------------------------------------------------------------------------
837   --------------------------------------------
838   -- Validate_Record for:OKL_AE_TMPT_LNES_V --
839   --------------------------------------------
840   FUNCTION Validate_Record (
841     p_atlv_rec IN atlv_rec_type
842   ) RETURN VARCHAR2 IS
843     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
844     x_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
845 
846   BEGIN
847 
848     -- Validate_CCID_BUILDER
849     Validate_CCID_Builder(x_return_status, p_atlv_rec);
850     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
851        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
852           -- need to leave
853           l_return_status := x_return_status;
854           RAISE G_EXCEPTION_HALT_VALIDATION;
855        ELSE
856           -- record that there was an error
857           l_return_status := x_return_status;
858        END IF;
859     END IF;
860 
861     RETURN(l_return_status);
862 
863   EXCEPTION
864     WHEN G_EXCEPTION_HALT_VALIDATION THEN
865        -- exit with return status
866        NULL;
867        RETURN (l_return_status);
868 
869     WHEN OTHERS THEN
870        -- store SQL error message on message stack for caller
871        OKC_API.SET_MESSAGE(p_app_name         => g_app_name,
872                            p_msg_name         => g_unexpected_error,
873                            p_token1           => g_sqlcode_token,
874                            p_token1_value     => SQLCODE,
875                            p_token2           => g_sqlerrm_token,
876                            p_token2_value     => SQLERRM);
877        -- notify caller of an UNEXPECTED error
878        l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
879        RETURN(l_return_status);
880   END Validate_Record;
881 
882   ---------------------------------------------------------------------------
883   -- PROCEDURE Migrate
884   ---------------------------------------------------------------------------
885   PROCEDURE migrate (
886     p_from	IN atlv_rec_type,
887     p_to	IN OUT NOCOPY atl_rec_type
888   ) IS
889   BEGIN
890     p_to.id := p_from.id;
891     p_to.sequence_number := p_from.sequence_number;
892     p_to.avl_id := p_from.avl_id;
893     p_to.code_combination_id := p_from.code_combination_id;
894     p_to.ae_line_type := p_from.ae_line_type;
895     p_to.crd_code := p_from.crd_code;
896     p_to.account_builder_yn := p_from.account_builder_yn;
897     p_to.object_version_number := p_from.object_version_number;
898     p_to.description := p_from.description;
899     p_to.percentage := p_from.percentage;
900     p_to.org_id := p_from.org_id;
901     p_to.attribute_category := p_from.attribute_category;
902     p_to.attribute1 := p_from.attribute1;
903     p_to.attribute2 := p_from.attribute2;
904     p_to.attribute3 := p_from.attribute3;
905     p_to.attribute4 := p_from.attribute4;
906     p_to.attribute5 := p_from.attribute5;
907     p_to.attribute6 := p_from.attribute6;
908     p_to.attribute7 := p_from.attribute7;
909     p_to.attribute8 := p_from.attribute8;
910     p_to.attribute9 := p_from.attribute9;
911     p_to.attribute10 := p_from.attribute10;
912     p_to.attribute11 := p_from.attribute11;
913     p_to.attribute12 := p_from.attribute12;
914     p_to.attribute13 := p_from.attribute13;
915     p_to.attribute14 := p_from.attribute14;
916     p_to.attribute15 := p_from.attribute15;
917     p_to.created_by := p_from.created_by;
918     p_to.creation_date := p_from.creation_date;
919     p_to.last_updated_by := p_from.last_updated_by;
920     p_to.last_update_date := p_from.last_update_date;
921     p_to.last_update_login := p_from.last_update_login;
922   END migrate;
923   PROCEDURE migrate (
924     p_from	IN atl_rec_type,
925     p_to	OUT NOCOPY atlv_rec_type
926   ) IS
927   BEGIN
928     p_to.id := p_from.id;
929     p_to.sequence_number := p_from.sequence_number;
930     p_to.avl_id := p_from.avl_id;
931     p_to.code_combination_id := p_from.code_combination_id;
932     p_to.ae_line_type := p_from.ae_line_type;
933     p_to.crd_code := p_from.crd_code;
934     p_to.account_builder_yn := p_from.account_builder_yn;
935     p_to.object_version_number := p_from.object_version_number;
936     p_to.description := p_from.description;
937     p_to.percentage := p_from.percentage;
938     p_to.org_id := p_from.org_id;
939     p_to.attribute_category := p_from.attribute_category;
940     p_to.attribute1 := p_from.attribute1;
941     p_to.attribute2 := p_from.attribute2;
942     p_to.attribute3 := p_from.attribute3;
943     p_to.attribute4 := p_from.attribute4;
944     p_to.attribute5 := p_from.attribute5;
945     p_to.attribute6 := p_from.attribute6;
946     p_to.attribute7 := p_from.attribute7;
947     p_to.attribute8 := p_from.attribute8;
948     p_to.attribute9 := p_from.attribute9;
949     p_to.attribute10 := p_from.attribute10;
950     p_to.attribute11 := p_from.attribute11;
951     p_to.attribute12 := p_from.attribute12;
952     p_to.attribute13 := p_from.attribute13;
953     p_to.attribute14 := p_from.attribute14;
954     p_to.attribute15 := p_from.attribute15;
955     p_to.created_by := p_from.created_by;
956     p_to.creation_date := p_from.creation_date;
957     p_to.last_updated_by := p_from.last_updated_by;
958     p_to.last_update_date := p_from.last_update_date;
959     p_to.last_update_login := p_from.last_update_login;
960   END migrate;
961 
962   ---------------------------------------------------------------------------
963   -- PROCEDURE validate_row
964   ---------------------------------------------------------------------------
965   -----------------------------------------
966   -- validate_row for:OKL_AE_TMPT_LNES_V --
967   -----------------------------------------
968   PROCEDURE validate_row(
969     p_api_version                  IN NUMBER,
970     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
971     x_return_status                OUT NOCOPY VARCHAR2,
972     x_msg_count                    OUT NOCOPY NUMBER,
973     x_msg_data                     OUT NOCOPY VARCHAR2,
974     p_atlv_rec                     IN atlv_rec_type) IS
975 
976     l_api_version                 CONSTANT NUMBER := 1;
977     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
978     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
979     l_atlv_rec                     atlv_rec_type := p_atlv_rec;
980     l_atl_rec                      atl_rec_type;
981   BEGIN
982     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
983                                               G_PKG_NAME,
984                                               p_init_msg_list,
985                                               l_api_version,
986                                               p_api_version,
987                                               '_PVT',
988                                               x_return_status);
989     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
990       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
991     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
992       RAISE OKC_API.G_EXCEPTION_ERROR;
993     END IF;
994     --- Validate all non-missing attributes (Item Level Validation)
995     l_return_status := Validate_Attributes(l_atlv_rec);
996     --- If any errors happen abort API
997     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
998       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
999     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1000       RAISE OKC_API.G_EXCEPTION_ERROR;
1001     END IF;
1002     l_return_status := Validate_Record(l_atlv_rec);
1003     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1004       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1005     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1006       RAISE OKC_API.G_EXCEPTION_ERROR;
1007     END IF;
1008     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1009   EXCEPTION
1010     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1011       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1012       (
1013         l_api_name,
1014         G_PKG_NAME,
1015         'OKC_API.G_RET_STS_ERROR',
1016         x_msg_count,
1017         x_msg_data,
1018         '_PVT'
1019       );
1020     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1021       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1022       (
1023         l_api_name,
1024         G_PKG_NAME,
1025         'OKC_API.G_RET_STS_UNEXP_ERROR',
1026         x_msg_count,
1027         x_msg_data,
1028         '_PVT'
1029       );
1030     WHEN OTHERS THEN
1031       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1032       (
1033         l_api_name,
1034         G_PKG_NAME,
1035         'OTHERS',
1036         x_msg_count,
1037         x_msg_data,
1038         '_PVT'
1039       );
1040   END validate_row;
1041   ------------------------------------------
1042   -- PL/SQL TBL validate_row for:ATLV_TBL --
1043   ------------------------------------------
1044   PROCEDURE validate_row(
1045     p_api_version                  IN NUMBER,
1046     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1047     x_return_status                OUT NOCOPY VARCHAR2,
1048     x_msg_count                    OUT NOCOPY NUMBER,
1049     x_msg_data                     OUT NOCOPY VARCHAR2,
1050     p_atlv_tbl                     IN atlv_tbl_type) IS
1051 
1052     l_api_version                 CONSTANT NUMBER := 1;
1053     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1054     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1055     l_overall_status		     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1056     i                              NUMBER := 0;
1057   BEGIN
1058     OKC_API.init_msg_list(p_init_msg_list);
1059     -- Make sure PL/SQL table has records in it before passing
1060     IF (p_atlv_tbl.COUNT > 0) THEN
1061       i := p_atlv_tbl.FIRST;
1062       LOOP
1063         validate_row (
1064           p_api_version                  => p_api_version,
1065           p_init_msg_list                => OKC_API.G_FALSE,
1066           x_return_status                => x_return_status,
1067           x_msg_count                    => x_msg_count,
1068           x_msg_data                     => x_msg_data,
1069           p_atlv_rec                     => p_atlv_tbl(i));
1070 
1071 	  IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
1072 	     IF l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR THEN
1073 		  l_overall_status := x_return_status;
1074 	     END IF;
1075 	  END IF;
1076 
1077         EXIT WHEN (i = p_atlv_tbl.LAST);
1078         i := p_atlv_tbl.NEXT(i);
1079       END LOOP;
1080 	x_return_status := l_overall_status;
1081 
1082     END IF;
1083   EXCEPTION
1084     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1085       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1086       (
1087         l_api_name,
1088         G_PKG_NAME,
1089         'OKC_API.G_RET_STS_ERROR',
1090         x_msg_count,
1091         x_msg_data,
1092         '_PVT'
1093       );
1094     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1095       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1096       (
1097         l_api_name,
1098         G_PKG_NAME,
1099         'OKC_API.G_RET_STS_UNEXP_ERROR',
1100         x_msg_count,
1101         x_msg_data,
1102         '_PVT'
1103       );
1104     WHEN OTHERS THEN
1105       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1106       (
1107         l_api_name,
1108         G_PKG_NAME,
1109         'OTHERS',
1110         x_msg_count,
1111         x_msg_data,
1112         '_PVT'
1113       );
1114   END validate_row;
1115 
1116   ---------------------------------------------------------------------------
1117   -- PROCEDURE insert_row
1118   ---------------------------------------------------------------------------
1119   -------------------------------------
1120   -- insert_row for:OKL_AE_TMPT_LNES --
1121   -------------------------------------
1122   PROCEDURE insert_row(
1123     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1124     x_return_status                OUT NOCOPY VARCHAR2,
1125     x_msg_count                    OUT NOCOPY NUMBER,
1126     x_msg_data                     OUT NOCOPY VARCHAR2,
1127     p_atl_rec                      IN atl_rec_type,
1128     x_atl_rec                      OUT NOCOPY atl_rec_type) IS
1129 
1130     l_api_version                 CONSTANT NUMBER := 1;
1131     l_api_name                     CONSTANT VARCHAR2(30) := 'LNES_insert_row';
1132     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1133     l_atl_rec                      atl_rec_type := p_atl_rec;
1134     l_def_atl_rec                  atl_rec_type;
1135     l_org_id 				VARCHAR2(10);
1136 
1137     -----------------------------------------
1138     -- Set_Attributes for:OKL_AE_TMPT_LNES --
1139     -----------------------------------------
1140     FUNCTION Set_Attributes (
1141       p_atl_rec IN  atl_rec_type,
1142       x_atl_rec OUT NOCOPY atl_rec_type
1143     ) RETURN VARCHAR2 IS
1144       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1145     BEGIN
1146       x_atl_rec := p_atl_rec;
1147       RETURN(l_return_status);
1148     END Set_Attributes;
1149   BEGIN
1150     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1151                                               p_init_msg_list,
1152                                               '_PVT',
1153                                               x_return_status);
1154     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1155       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1156     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1157       RAISE OKC_API.G_EXCEPTION_ERROR;
1158     END IF;
1159 
1160 
1161     --- Setting item attributes
1162     l_return_status := Set_Attributes(
1163       p_atl_rec,                         -- IN
1164       l_atl_rec);                        -- OUT
1165     --- If any errors happen abort API
1166     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1167       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1168     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1169       RAISE OKC_API.G_EXCEPTION_ERROR;
1170     END IF;
1171 
1172     -- Added by zrehman for Bug #5686162 15-Feb-2007 start
1173     -- This was as per directive from management in the SLA Uptake solution design review.
1174       l_atl_rec.percentage := 100;
1175     -- Added by zrehman for Bug #5686162 15-Feb-2007 end
1176 
1177     INSERT INTO OKL_AE_TMPT_LNES(
1178         id,
1179         sequence_number,
1180         avl_id,
1181         code_combination_id,
1182         ae_line_type,
1183         crd_code,
1184         account_builder_yn,
1185         object_version_number,
1186         description,
1187         percentage,
1188         org_id,
1189         attribute_category,
1190         attribute1,
1191         attribute2,
1192         attribute3,
1193         attribute4,
1194         attribute5,
1195         attribute6,
1196         attribute7,
1197         attribute8,
1198         attribute9,
1199         attribute10,
1200         attribute11,
1201         attribute12,
1202         attribute13,
1203         attribute14,
1204         attribute15,
1205         created_by,
1206         creation_date,
1207         last_updated_by,
1208         last_update_date,
1209         last_update_login)
1210       VALUES (
1211         l_atl_rec.id,
1212         l_atl_rec.sequence_number,
1213         l_atl_rec.avl_id,
1214         l_atl_rec.code_combination_id,
1215         l_atl_rec.ae_line_type,
1216         l_atl_rec.crd_code,
1217         l_atl_rec.account_builder_yn,
1218         l_atl_rec.object_version_number,
1219         l_atl_rec.description,
1220         l_atl_rec.percentage,
1221 	  l_org_id,
1222         l_atl_rec.attribute_category,
1223         l_atl_rec.attribute1,
1224         l_atl_rec.attribute2,
1225         l_atl_rec.attribute3,
1226         l_atl_rec.attribute4,
1227         l_atl_rec.attribute5,
1228         l_atl_rec.attribute6,
1229         l_atl_rec.attribute7,
1230         l_atl_rec.attribute8,
1231         l_atl_rec.attribute9,
1232         l_atl_rec.attribute10,
1233         l_atl_rec.attribute11,
1234         l_atl_rec.attribute12,
1235         l_atl_rec.attribute13,
1236         l_atl_rec.attribute14,
1237         l_atl_rec.attribute15,
1238         l_atl_rec.created_by,
1239         l_atl_rec.creation_date,
1240         l_atl_rec.last_updated_by,
1241         l_atl_rec.last_update_date,
1242         l_atl_rec.last_update_login);
1243     -- Set OUT values
1244     x_atl_rec := l_atl_rec;
1245     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1246   EXCEPTION
1247     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1248       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1249       (
1250         l_api_name,
1251         G_PKG_NAME,
1252         'OKC_API.G_RET_STS_ERROR',
1253         x_msg_count,
1254         x_msg_data,
1255         '_PVT'
1256       );
1257     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1258       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1259       (
1260         l_api_name,
1261         G_PKG_NAME,
1262         'OKC_API.G_RET_STS_UNEXP_ERROR',
1263         x_msg_count,
1264         x_msg_data,
1265         '_PVT'
1266       );
1267     WHEN OTHERS THEN
1268       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1269       (
1270         l_api_name,
1271         G_PKG_NAME,
1272         'OTHERS',
1273         x_msg_count,
1274         x_msg_data,
1275         '_PVT'
1276       );
1277   END insert_row;
1278   ---------------------------------------
1279   -- insert_row for:OKL_AE_TMPT_LNES_V --
1280   ---------------------------------------
1281   PROCEDURE insert_row(
1282     p_api_version                  IN NUMBER,
1283     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1284     x_return_status                OUT NOCOPY VARCHAR2,
1285     x_msg_count                    OUT NOCOPY NUMBER,
1286     x_msg_data                     OUT NOCOPY VARCHAR2,
1287     p_atlv_rec                     IN atlv_rec_type,
1288     x_atlv_rec                     OUT NOCOPY atlv_rec_type) IS
1289 
1290     l_api_version                 CONSTANT NUMBER := 1;
1291     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1292     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1293     l_atlv_rec                     atlv_rec_type;
1294     l_def_atlv_rec                 atlv_rec_type;
1295     l_atl_rec                      atl_rec_type;
1296     lx_atl_rec                     atl_rec_type;
1297     -------------------------------
1298     -- FUNCTION fill_who_columns --
1299     -------------------------------
1300     FUNCTION fill_who_columns (
1301       p_atlv_rec	IN atlv_rec_type
1302     ) RETURN atlv_rec_type IS
1303       l_atlv_rec	atlv_rec_type := p_atlv_rec;
1304     BEGIN
1305       l_atlv_rec.CREATION_DATE := SYSDATE;
1306       l_atlv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1307       l_atlv_rec.LAST_UPDATE_DATE := SYSDATE;
1308       l_atlv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1309       l_atlv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1310       RETURN(l_atlv_rec);
1311     END fill_who_columns;
1312     -------------------------------------------
1313     -- Set_Attributes for:OKL_AE_TMPT_LNES_V --
1314     -------------------------------------------
1315     FUNCTION Set_Attributes (
1316       p_atlv_rec IN  atlv_rec_type,
1317       x_atlv_rec OUT NOCOPY atlv_rec_type
1318     ) RETURN VARCHAR2 IS
1319       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1320       l_max_seq                      NUMBER;
1321 
1322       CURSOR atl_csr(v_avl_id NUMBER) IS
1323       SELECT nvl(MAX(sequence_number),0)
1324       FROM OKL_AE_TMPT_LNES
1325       WHERE AVL_ID = v_avl_id;
1326 
1327 
1328     BEGIN
1329 
1330       x_atlv_rec := p_atlv_rec;
1331       x_atlv_rec.OBJECT_VERSION_NUMBER := 1;
1332       x_atlv_rec.ORG_ID := MO_GLOBAL.GET_CURRENT_ORG_ID();
1333 
1334       OPEN atl_csr(x_atlv_rec.AVL_ID);
1335       FETCH atl_csr INTO l_max_seq;
1336       CLOSE atl_csr;
1337 
1338       IF (l_max_seq) = 0 THEN
1339          x_atlv_rec.sequence_number := 1;
1340       ELSE
1341          x_atlv_rec.sequence_number := l_max_seq + 1;
1342       END IF;
1343 
1344       RETURN(l_return_status);
1345     END Set_Attributes;
1346   BEGIN
1347     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1348                                               G_PKG_NAME,
1349                                               p_init_msg_list,
1350                                               l_api_version,
1351                                               p_api_version,
1352                                               '_PVT',
1353                                               x_return_status);
1354     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1355       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1356     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1357       RAISE OKC_API.G_EXCEPTION_ERROR;
1358     END IF;
1359     l_atlv_rec := null_out_defaults(p_atlv_rec);
1360     -- Set primary key value
1361     l_atlv_rec.ID := get_seq_id;
1362     --- Setting item attributes
1363     l_return_status := Set_Attributes(
1364       l_atlv_rec,                        -- IN
1365       l_def_atlv_rec);                   -- OUT
1366     --- If any errors happen abort API
1367     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1368       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1369     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1370       RAISE OKC_API.G_EXCEPTION_ERROR;
1371     END IF;
1372     l_def_atlv_rec := fill_who_columns(l_def_atlv_rec);
1373     --- Validate all non-missing attributes (Item Level Validation)
1374     l_return_status := Validate_Attributes(l_def_atlv_rec);
1375     --- If any errors happen abort API
1376     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1377       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1378     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1379       RAISE OKC_API.G_EXCEPTION_ERROR;
1380     END IF;
1381     l_return_status := Validate_Record(l_def_atlv_rec);
1382     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1383       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1384     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1385       RAISE OKC_API.G_EXCEPTION_ERROR;
1386     END IF;
1387     --------------------------------------
1388     -- Move VIEW record to "Child" records
1389     --------------------------------------
1390     migrate(l_def_atlv_rec, l_atl_rec);
1391     --------------------------------------------
1392     -- Call the INSERT_ROW for each child record
1393     --------------------------------------------
1394     insert_row(
1395       p_init_msg_list,
1396       x_return_status,
1397       x_msg_count,
1398       x_msg_data,
1399       l_atl_rec,
1400       lx_atl_rec
1401     );
1402     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1403       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1404     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1405       RAISE OKC_API.G_EXCEPTION_ERROR;
1406     END IF;
1407     migrate(lx_atl_rec, l_def_atlv_rec);
1408     -- Set OUT values
1409     x_atlv_rec := l_def_atlv_rec;
1410     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1411   EXCEPTION
1412     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1413       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1414       (
1415         l_api_name,
1416         G_PKG_NAME,
1417         'OKC_API.G_RET_STS_ERROR',
1418         x_msg_count,
1419         x_msg_data,
1420         '_PVT'
1421       );
1422     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1423       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1424       (
1425         l_api_name,
1426         G_PKG_NAME,
1427         'OKC_API.G_RET_STS_UNEXP_ERROR',
1428         x_msg_count,
1429         x_msg_data,
1430         '_PVT'
1431       );
1432     WHEN OTHERS THEN
1433       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1434       (
1435         l_api_name,
1436         G_PKG_NAME,
1437         'OTHERS',
1438         x_msg_count,
1439         x_msg_data,
1440         '_PVT'
1441       );
1442   END insert_row;
1443   ----------------------------------------
1444   -- PL/SQL TBL insert_row for:ATLV_TBL --
1445   ----------------------------------------
1446   PROCEDURE insert_row(
1447     p_api_version                  IN NUMBER,
1448     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1449     x_return_status                OUT NOCOPY VARCHAR2,
1450     x_msg_count                    OUT NOCOPY NUMBER,
1451     x_msg_data                     OUT NOCOPY VARCHAR2,
1452     p_atlv_tbl                     IN atlv_tbl_type,
1453     x_atlv_tbl                     OUT NOCOPY atlv_tbl_type) IS
1454 
1455     l_api_version                 CONSTANT NUMBER := 1;
1456     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1457     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1458     l_overall_status		     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1459     i                              NUMBER := 0;
1460   BEGIN
1461     OKC_API.init_msg_list(p_init_msg_list);
1462     -- Make sure PL/SQL table has records in it before passing
1463     IF (p_atlv_tbl.COUNT > 0) THEN
1464       i := p_atlv_tbl.FIRST;
1465       LOOP
1466         insert_row (
1467           p_api_version                  => p_api_version,
1468           p_init_msg_list                => OKC_API.G_FALSE,
1469           x_return_status                => x_return_status,
1470           x_msg_count                    => x_msg_count,
1471           x_msg_data                     => x_msg_data,
1472           p_atlv_rec                     => p_atlv_tbl(i),
1473           x_atlv_rec                     => x_atlv_tbl(i));
1474 
1475 	  IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
1476 	     IF l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR THEN
1477 		  l_overall_status := x_return_status;
1478 	     END IF;
1479 	  END IF;
1480 
1481         EXIT WHEN (i = p_atlv_tbl.LAST);
1482         i := p_atlv_tbl.NEXT(i);
1483       END LOOP;
1484 	x_return_status := l_overall_status;
1485     END IF;
1486   EXCEPTION
1487     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1488       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1489       (
1490         l_api_name,
1491         G_PKG_NAME,
1492         'OKC_API.G_RET_STS_ERROR',
1493         x_msg_count,
1494         x_msg_data,
1495         '_PVT'
1496       );
1497     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1498       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1499       (
1500         l_api_name,
1501         G_PKG_NAME,
1502         'OKC_API.G_RET_STS_UNEXP_ERROR',
1503         x_msg_count,
1504         x_msg_data,
1505         '_PVT'
1506       );
1507     WHEN OTHERS THEN
1508       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1509       (
1510         l_api_name,
1511         G_PKG_NAME,
1512         'OTHERS',
1513         x_msg_count,
1514         x_msg_data,
1515         '_PVT'
1516       );
1517   END insert_row;
1518 
1519   ---------------------------------------------------------------------------
1520   -- PROCEDURE lock_row
1521   ---------------------------------------------------------------------------
1522   -----------------------------------
1523   -- lock_row for:OKL_AE_TMPT_LNES --
1524   -----------------------------------
1525   PROCEDURE lock_row(
1526     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1527     x_return_status                OUT NOCOPY VARCHAR2,
1528     x_msg_count                    OUT NOCOPY NUMBER,
1529     x_msg_data                     OUT NOCOPY VARCHAR2,
1530     p_atl_rec                      IN atl_rec_type) IS
1531 
1532     E_Resource_Busy               EXCEPTION;
1533     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1534     CURSOR lock_csr (p_atl_rec IN atl_rec_type) IS
1535     SELECT OBJECT_VERSION_NUMBER
1536       FROM OKL_AE_TMPT_LNES
1537      WHERE ID = p_atl_rec.id
1538        AND OBJECT_VERSION_NUMBER = p_atl_rec.object_version_number
1539     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1540 
1541     CURSOR  lchk_csr (p_atl_rec IN atl_rec_type) IS
1542     SELECT OBJECT_VERSION_NUMBER
1543       FROM OKL_AE_TMPT_LNES
1544     WHERE ID = p_atl_rec.id;
1545     l_api_version                 CONSTANT NUMBER := 1;
1546     l_api_name                     CONSTANT VARCHAR2(30) := 'LNES_lock_row';
1547     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1548     l_object_version_number       OKL_AE_TMPT_LNES.OBJECT_VERSION_NUMBER%TYPE;
1549     lc_object_version_number      OKL_AE_TMPT_LNES.OBJECT_VERSION_NUMBER%TYPE;
1550     l_row_notfound                BOOLEAN := FALSE;
1551     lc_row_notfound               BOOLEAN := FALSE;
1552   BEGIN
1553     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1554                                               p_init_msg_list,
1555                                               '_PVT',
1556                                               x_return_status);
1557     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1558       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1559     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1560       RAISE OKC_API.G_EXCEPTION_ERROR;
1561     END IF;
1562     BEGIN
1563       OPEN lock_csr(p_atl_rec);
1564       FETCH lock_csr INTO l_object_version_number;
1565       l_row_notfound := lock_csr%NOTFOUND;
1566       CLOSE lock_csr;
1567     EXCEPTION
1568       WHEN E_Resource_Busy THEN
1569         IF (lock_csr%ISOPEN) THEN
1570           CLOSE lock_csr;
1571         END IF;
1572         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1573         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1574     END;
1575 
1576     IF ( l_row_notfound ) THEN
1577       OPEN lchk_csr(p_atl_rec);
1578       FETCH lchk_csr INTO lc_object_version_number;
1579       lc_row_notfound := lchk_csr%NOTFOUND;
1580       CLOSE lchk_csr;
1581     END IF;
1582     IF (lc_row_notfound) THEN
1583       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1584       RAISE OKC_API.G_EXCEPTION_ERROR;
1585     ELSIF lc_object_version_number > p_atl_rec.object_version_number THEN
1586       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1587       RAISE OKC_API.G_EXCEPTION_ERROR;
1588     ELSIF lc_object_version_number <> p_atl_rec.object_version_number THEN
1589       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1590       RAISE OKC_API.G_EXCEPTION_ERROR;
1591     ELSIF lc_object_version_number = -1 THEN
1592       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1593       RAISE OKC_API.G_EXCEPTION_ERROR;
1594     END IF;
1595     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1596   EXCEPTION
1597     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1598       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1599       (
1600         l_api_name,
1601         G_PKG_NAME,
1602         'OKC_API.G_RET_STS_ERROR',
1603         x_msg_count,
1604         x_msg_data,
1605         '_PVT'
1606       );
1607     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1608       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1609       (
1610         l_api_name,
1611         G_PKG_NAME,
1612         'OKC_API.G_RET_STS_UNEXP_ERROR',
1613         x_msg_count,
1614         x_msg_data,
1615         '_PVT'
1616       );
1617     WHEN OTHERS THEN
1618       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1619       (
1620         l_api_name,
1621         G_PKG_NAME,
1622         'OTHERS',
1623         x_msg_count,
1624         x_msg_data,
1625         '_PVT'
1626       );
1627   END lock_row;
1628   -------------------------------------
1629   -- lock_row for:OKL_AE_TMPT_LNES_V --
1630   -------------------------------------
1631   PROCEDURE lock_row(
1632     p_api_version                  IN NUMBER,
1633     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1634     x_return_status                OUT NOCOPY VARCHAR2,
1635     x_msg_count                    OUT NOCOPY NUMBER,
1636     x_msg_data                     OUT NOCOPY VARCHAR2,
1637     p_atlv_rec                     IN atlv_rec_type) IS
1638 
1639     l_api_version                 CONSTANT NUMBER := 1;
1640     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1641     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1642     l_atl_rec                      atl_rec_type;
1643   BEGIN
1644     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1645                                               G_PKG_NAME,
1646                                               p_init_msg_list,
1647                                               l_api_version,
1648                                               p_api_version,
1649                                               '_PVT',
1650                                               x_return_status);
1651     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1652       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1653     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1654       RAISE OKC_API.G_EXCEPTION_ERROR;
1655     END IF;
1656     --------------------------------------
1657     -- Move VIEW record to "Child" records
1658     --------------------------------------
1659     migrate(p_atlv_rec, l_atl_rec);
1660     --------------------------------------------
1661     -- Call the LOCK_ROW for each child record
1662     --------------------------------------------
1663     lock_row(
1664       p_init_msg_list,
1665       x_return_status,
1666       x_msg_count,
1667       x_msg_data,
1668       l_atl_rec
1669     );
1670     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1671       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1672     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1673       RAISE OKC_API.G_EXCEPTION_ERROR;
1674     END IF;
1675     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1676   EXCEPTION
1677     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1678       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1679       (
1680         l_api_name,
1681         G_PKG_NAME,
1682         'OKC_API.G_RET_STS_ERROR',
1683         x_msg_count,
1684         x_msg_data,
1685         '_PVT'
1686       );
1687     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1688       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1689       (
1690         l_api_name,
1691         G_PKG_NAME,
1692         'OKC_API.G_RET_STS_UNEXP_ERROR',
1693         x_msg_count,
1694         x_msg_data,
1695         '_PVT'
1696       );
1697     WHEN OTHERS THEN
1698       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1699       (
1700         l_api_name,
1701         G_PKG_NAME,
1702         'OTHERS',
1703         x_msg_count,
1704         x_msg_data,
1705         '_PVT'
1706       );
1707   END lock_row;
1708   --------------------------------------
1709   -- PL/SQL TBL lock_row for:ATLV_TBL --
1710   --------------------------------------
1711   PROCEDURE lock_row(
1712     p_api_version                  IN NUMBER,
1713     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1714     x_return_status                OUT NOCOPY VARCHAR2,
1715     x_msg_count                    OUT NOCOPY NUMBER,
1716     x_msg_data                     OUT NOCOPY VARCHAR2,
1717     p_atlv_tbl                     IN atlv_tbl_type) IS
1718 
1719     l_api_version                 CONSTANT NUMBER := 1;
1720     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1721     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1722     l_overall_status		     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1723     i                              NUMBER := 0;
1724   BEGIN
1725     OKC_API.init_msg_list(p_init_msg_list);
1726     -- Make sure PL/SQL table has records in it before passing
1727     IF (p_atlv_tbl.COUNT > 0) THEN
1728       i := p_atlv_tbl.FIRST;
1729       LOOP
1730         lock_row (
1731           p_api_version                  => p_api_version,
1732           p_init_msg_list                => OKC_API.G_FALSE,
1733           x_return_status                => x_return_status,
1734           x_msg_count                    => x_msg_count,
1735           x_msg_data                     => x_msg_data,
1736           p_atlv_rec                     => p_atlv_tbl(i));
1737 	  IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
1738 	     IF l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR THEN
1739 		  l_overall_status := x_return_status;
1740 	     END IF;
1741 	  END IF;
1742         EXIT WHEN (i = p_atlv_tbl.LAST);
1743         i := p_atlv_tbl.NEXT(i);
1744       END LOOP;
1745 	x_return_status := l_overall_status;
1746     END IF;
1747   EXCEPTION
1748     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1749       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1750       (
1751         l_api_name,
1752         G_PKG_NAME,
1753         'OKC_API.G_RET_STS_ERROR',
1754         x_msg_count,
1755         x_msg_data,
1756         '_PVT'
1757       );
1758     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1759       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1760       (
1761         l_api_name,
1762         G_PKG_NAME,
1763         'OKC_API.G_RET_STS_UNEXP_ERROR',
1764         x_msg_count,
1765         x_msg_data,
1766         '_PVT'
1767       );
1768     WHEN OTHERS THEN
1769       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1770       (
1771         l_api_name,
1772         G_PKG_NAME,
1773         'OTHERS',
1774         x_msg_count,
1775         x_msg_data,
1776         '_PVT'
1777       );
1778   END lock_row;
1779 
1780   ---------------------------------------------------------------------------
1781   -- PROCEDURE update_row
1782   ---------------------------------------------------------------------------
1783   -------------------------------------
1784   -- update_row for:OKL_AE_TMPT_LNES --
1785   -------------------------------------
1786   PROCEDURE update_row(
1787     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1788     x_return_status                OUT NOCOPY VARCHAR2,
1789     x_msg_count                    OUT NOCOPY NUMBER,
1790     x_msg_data                     OUT NOCOPY VARCHAR2,
1791     p_atl_rec                      IN atl_rec_type,
1792     x_atl_rec                      OUT NOCOPY atl_rec_type) IS
1793 
1794     l_api_version                 CONSTANT NUMBER := 1;
1795     l_api_name                     CONSTANT VARCHAR2(30) := 'LNES_update_row';
1796     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1797     l_atl_rec                      atl_rec_type := p_atl_rec;
1798     l_def_atl_rec                  atl_rec_type;
1799     l_row_notfound                 BOOLEAN := TRUE;
1800     ----------------------------------
1801     -- FUNCTION populate_new_record --
1802     ----------------------------------
1803     FUNCTION populate_new_record (
1804       p_atl_rec	IN atl_rec_type,
1805       x_atl_rec	OUT NOCOPY atl_rec_type
1806     ) RETURN VARCHAR2 IS
1807       l_atl_rec                      atl_rec_type;
1808       l_row_notfound                 BOOLEAN := TRUE;
1809       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1810     BEGIN
1811       x_atl_rec := p_atl_rec;
1812       -- Get current database values
1813       l_atl_rec := get_rec(p_atl_rec, l_row_notfound);
1814       IF (l_row_notfound) THEN
1815         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1816       END IF;
1817       IF (x_atl_rec.id = OKC_API.G_MISS_NUM)
1818       THEN
1819         x_atl_rec.id := l_atl_rec.id;
1820       END IF;
1821       IF (x_atl_rec.sequence_number = OKC_API.G_MISS_NUM)
1822       THEN
1823         x_atl_rec.sequence_number := l_atl_rec.sequence_number;
1824       END IF;
1825       IF (x_atl_rec.avl_id = OKC_API.G_MISS_NUM)
1826       THEN
1827         x_atl_rec.avl_id := l_atl_rec.avl_id;
1828       END IF;
1829       IF (x_atl_rec.code_combination_id = OKC_API.G_MISS_NUM)
1830       THEN
1831         x_atl_rec.code_combination_id := l_atl_rec.code_combination_id;
1832       END IF;
1833       IF (x_atl_rec.ae_line_type = OKC_API.G_MISS_CHAR)
1834       THEN
1835         x_atl_rec.ae_line_type := l_atl_rec.ae_line_type;
1836       END IF;
1837       IF (x_atl_rec.crd_code = OKC_API.G_MISS_CHAR)
1838       THEN
1839         x_atl_rec.crd_code := l_atl_rec.crd_code;
1840       END IF;
1841       IF (x_atl_rec.account_builder_yn = OKC_API.G_MISS_CHAR)
1842       THEN
1843         x_atl_rec.account_builder_yn := l_atl_rec.account_builder_yn;
1844       END IF;
1845       IF (x_atl_rec.object_version_number = OKC_API.G_MISS_NUM)
1846       THEN
1847         x_atl_rec.object_version_number := l_atl_rec.object_version_number;
1848       END IF;
1849       IF (x_atl_rec.description = OKC_API.G_MISS_CHAR)
1850       THEN
1851         x_atl_rec.description := l_atl_rec.description;
1852       END IF;
1853       IF (x_atl_rec.percentage = OKC_API.G_MISS_NUM)
1854       THEN
1855         x_atl_rec.percentage := l_atl_rec.percentage;
1856       END IF;
1857       IF (x_atl_rec.org_id = OKC_API.G_MISS_NUM)
1858       THEN
1859         x_atl_rec.org_id := l_atl_rec.org_id;
1860       END IF;
1861       IF (x_atl_rec.attribute_category = OKC_API.G_MISS_CHAR)
1862       THEN
1863         x_atl_rec.attribute_category := l_atl_rec.attribute_category;
1864       END IF;
1865       IF (x_atl_rec.attribute1 = OKC_API.G_MISS_CHAR)
1866       THEN
1867         x_atl_rec.attribute1 := l_atl_rec.attribute1;
1868       END IF;
1869       IF (x_atl_rec.attribute2 = OKC_API.G_MISS_CHAR)
1870       THEN
1871         x_atl_rec.attribute2 := l_atl_rec.attribute2;
1872       END IF;
1873       IF (x_atl_rec.attribute3 = OKC_API.G_MISS_CHAR)
1874       THEN
1875         x_atl_rec.attribute3 := l_atl_rec.attribute3;
1876       END IF;
1877       IF (x_atl_rec.attribute4 = OKC_API.G_MISS_CHAR)
1878       THEN
1879         x_atl_rec.attribute4 := l_atl_rec.attribute4;
1880       END IF;
1881       IF (x_atl_rec.attribute5 = OKC_API.G_MISS_CHAR)
1882       THEN
1883         x_atl_rec.attribute5 := l_atl_rec.attribute5;
1884       END IF;
1885       IF (x_atl_rec.attribute6 = OKC_API.G_MISS_CHAR)
1886       THEN
1887         x_atl_rec.attribute6 := l_atl_rec.attribute6;
1888       END IF;
1889       IF (x_atl_rec.attribute7 = OKC_API.G_MISS_CHAR)
1890       THEN
1891         x_atl_rec.attribute7 := l_atl_rec.attribute7;
1892       END IF;
1893       IF (x_atl_rec.attribute8 = OKC_API.G_MISS_CHAR)
1894       THEN
1895         x_atl_rec.attribute8 := l_atl_rec.attribute8;
1896       END IF;
1897       IF (x_atl_rec.attribute9 = OKC_API.G_MISS_CHAR)
1898       THEN
1899         x_atl_rec.attribute9 := l_atl_rec.attribute9;
1900       END IF;
1901       IF (x_atl_rec.attribute10 = OKC_API.G_MISS_CHAR)
1902       THEN
1903         x_atl_rec.attribute10 := l_atl_rec.attribute10;
1904       END IF;
1905       IF (x_atl_rec.attribute11 = OKC_API.G_MISS_CHAR)
1906       THEN
1907         x_atl_rec.attribute11 := l_atl_rec.attribute11;
1908       END IF;
1909       IF (x_atl_rec.attribute12 = OKC_API.G_MISS_CHAR)
1910       THEN
1911         x_atl_rec.attribute12 := l_atl_rec.attribute12;
1912       END IF;
1913       IF (x_atl_rec.attribute13 = OKC_API.G_MISS_CHAR)
1914       THEN
1915         x_atl_rec.attribute13 := l_atl_rec.attribute13;
1916       END IF;
1917       IF (x_atl_rec.attribute14 = OKC_API.G_MISS_CHAR)
1918       THEN
1919         x_atl_rec.attribute14 := l_atl_rec.attribute14;
1920       END IF;
1921       IF (x_atl_rec.attribute15 = OKC_API.G_MISS_CHAR)
1922       THEN
1923         x_atl_rec.attribute15 := l_atl_rec.attribute15;
1924       END IF;
1925       IF (x_atl_rec.created_by = OKC_API.G_MISS_NUM)
1926       THEN
1927         x_atl_rec.created_by := l_atl_rec.created_by;
1928       END IF;
1929       IF (x_atl_rec.creation_date = OKC_API.G_MISS_DATE)
1930       THEN
1931         x_atl_rec.creation_date := l_atl_rec.creation_date;
1932       END IF;
1933       IF (x_atl_rec.last_updated_by = OKC_API.G_MISS_NUM)
1934       THEN
1935         x_atl_rec.last_updated_by := l_atl_rec.last_updated_by;
1936       END IF;
1937       IF (x_atl_rec.last_update_date = OKC_API.G_MISS_DATE)
1938       THEN
1939         x_atl_rec.last_update_date := l_atl_rec.last_update_date;
1940       END IF;
1941       IF (x_atl_rec.last_update_login = OKC_API.G_MISS_NUM)
1942       THEN
1943         x_atl_rec.last_update_login := l_atl_rec.last_update_login;
1944       END IF;
1945       RETURN(l_return_status);
1946     END populate_new_record;
1947     -----------------------------------------
1948     -- Set_Attributes for:OKL_AE_TMPT_LNES --
1949     -----------------------------------------
1950     FUNCTION Set_Attributes (
1951       p_atl_rec IN  atl_rec_type,
1952       x_atl_rec OUT NOCOPY atl_rec_type
1953     ) RETURN VARCHAR2 IS
1954       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1955     BEGIN
1956       x_atl_rec := p_atl_rec;
1957       RETURN(l_return_status);
1958     END Set_Attributes;
1959   BEGIN
1960     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1961                                               p_init_msg_list,
1962                                               '_PVT',
1963                                               x_return_status);
1964     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1965       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1966     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1967       RAISE OKC_API.G_EXCEPTION_ERROR;
1968     END IF;
1969     --- Setting item attributes
1970     l_return_status := Set_Attributes(
1971       p_atl_rec,                         -- IN
1972       l_atl_rec);                        -- OUT
1973     --- If any errors happen abort API
1974     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1975       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1976     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1977       RAISE OKC_API.G_EXCEPTION_ERROR;
1978     END IF;
1979     l_return_status := populate_new_record(l_atl_rec, l_def_atl_rec);
1980     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1981       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1982     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1983       RAISE OKC_API.G_EXCEPTION_ERROR;
1984     END IF;
1985     UPDATE  OKL_AE_TMPT_LNES
1986     SET SEQUENCE_NUMBER = l_def_atl_rec.sequence_number,
1987         AVL_ID = l_def_atl_rec.avl_id,
1988         CODE_COMBINATION_ID = l_def_atl_rec.code_combination_id,
1989         AE_LINE_TYPE = l_def_atl_rec.ae_line_type,
1990         CRD_CODE = l_def_atl_rec.crd_code,
1991         ACCOUNT_BUILDER_YN = l_def_atl_rec.account_builder_yn,
1992         OBJECT_VERSION_NUMBER = l_def_atl_rec.object_version_number,
1993         DESCRIPTION = l_def_atl_rec.description,
1994         PERCENTAGE = l_def_atl_rec.percentage,
1995         ORG_ID = l_def_atl_rec.org_id,
1996         ATTRIBUTE_CATEGORY = l_def_atl_rec.attribute_category,
1997         ATTRIBUTE1 = l_def_atl_rec.attribute1,
1998         ATTRIBUTE2 = l_def_atl_rec.attribute2,
1999         ATTRIBUTE3 = l_def_atl_rec.attribute3,
2000         ATTRIBUTE4 = l_def_atl_rec.attribute4,
2001         ATTRIBUTE5 = l_def_atl_rec.attribute5,
2002         ATTRIBUTE6 = l_def_atl_rec.attribute6,
2003         ATTRIBUTE7 = l_def_atl_rec.attribute7,
2004         ATTRIBUTE8 = l_def_atl_rec.attribute8,
2005         ATTRIBUTE9 = l_def_atl_rec.attribute9,
2006         ATTRIBUTE10 = l_def_atl_rec.attribute10,
2007         ATTRIBUTE11 = l_def_atl_rec.attribute11,
2008         ATTRIBUTE12 = l_def_atl_rec.attribute12,
2009         ATTRIBUTE13 = l_def_atl_rec.attribute13,
2010         ATTRIBUTE14 = l_def_atl_rec.attribute14,
2011         ATTRIBUTE15 = l_def_atl_rec.attribute15,
2012         CREATED_BY = l_def_atl_rec.created_by,
2013         CREATION_DATE = l_def_atl_rec.creation_date,
2014         LAST_UPDATED_BY = l_def_atl_rec.last_updated_by,
2015         LAST_UPDATE_DATE = l_def_atl_rec.last_update_date,
2016         LAST_UPDATE_LOGIN = l_def_atl_rec.last_update_login
2017     WHERE ID = l_def_atl_rec.id;
2018 
2019     x_atl_rec := l_def_atl_rec;
2020     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2021   EXCEPTION
2022     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2023       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2024       (
2025         l_api_name,
2026         G_PKG_NAME,
2027         'OKC_API.G_RET_STS_ERROR',
2028         x_msg_count,
2029         x_msg_data,
2030         '_PVT'
2031       );
2032     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2033       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2034       (
2035         l_api_name,
2036         G_PKG_NAME,
2037         'OKC_API.G_RET_STS_UNEXP_ERROR',
2038         x_msg_count,
2039         x_msg_data,
2040         '_PVT'
2041       );
2042     WHEN OTHERS THEN
2043       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2044       (
2045         l_api_name,
2046         G_PKG_NAME,
2047         'OTHERS',
2048         x_msg_count,
2049         x_msg_data,
2050         '_PVT'
2051       );
2052   END update_row;
2053   ---------------------------------------
2054   -- update_row for:OKL_AE_TMPT_LNES_V --
2055   ---------------------------------------
2056   PROCEDURE update_row(
2057     p_api_version                  IN NUMBER,
2058     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2059     x_return_status                OUT NOCOPY VARCHAR2,
2060     x_msg_count                    OUT NOCOPY NUMBER,
2061     x_msg_data                     OUT NOCOPY VARCHAR2,
2062     p_atlv_rec                     IN atlv_rec_type,
2063     x_atlv_rec                     OUT NOCOPY atlv_rec_type) IS
2064 
2065     l_api_version                 CONSTANT NUMBER := 1;
2066     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2067     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2068     l_atlv_rec                     atlv_rec_type := p_atlv_rec;
2069     l_def_atlv_rec                 atlv_rec_type;
2070     l_atl_rec                      atl_rec_type;
2071     lx_atl_rec                     atl_rec_type;
2072     -------------------------------
2073     -- FUNCTION fill_who_columns --
2074     -------------------------------
2075     FUNCTION fill_who_columns (
2076       p_atlv_rec	IN atlv_rec_type
2077     ) RETURN atlv_rec_type IS
2078       l_atlv_rec	atlv_rec_type := p_atlv_rec;
2079     BEGIN
2080       l_atlv_rec.LAST_UPDATE_DATE := SYSDATE;
2081       l_atlv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2082       l_atlv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2083       RETURN(l_atlv_rec);
2084     END fill_who_columns;
2085     ----------------------------------
2086     -- FUNCTION populate_new_record --
2087     ----------------------------------
2088     FUNCTION populate_new_record (
2089       p_atlv_rec	IN atlv_rec_type,
2090       x_atlv_rec	OUT NOCOPY atlv_rec_type
2091     ) RETURN VARCHAR2 IS
2092       l_atlv_rec                     atlv_rec_type;
2093       l_row_notfound                 BOOLEAN := TRUE;
2094       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2095     BEGIN
2096       x_atlv_rec := p_atlv_rec;
2097       -- Get current database values
2098       l_atlv_rec := get_rec(p_atlv_rec, l_row_notfound);
2099       IF (l_row_notfound) THEN
2100         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2101       END IF;
2102       IF (x_atlv_rec.id = OKC_API.G_MISS_NUM)
2103       THEN
2104         x_atlv_rec.id := l_atlv_rec.id;
2105       END IF;
2106       IF (x_atlv_rec.object_version_number = OKC_API.G_MISS_NUM)
2107       THEN
2108         x_atlv_rec.object_version_number := l_atlv_rec.object_version_number;
2109       END IF;
2110       IF (x_atlv_rec.avl_id = OKC_API.G_MISS_NUM)
2111       THEN
2112         x_atlv_rec.avl_id := l_atlv_rec.avl_id;
2113       END IF;
2114       IF (x_atlv_rec.crd_code = OKC_API.G_MISS_CHAR)
2115       THEN
2116         x_atlv_rec.crd_code := l_atlv_rec.crd_code;
2117       END IF;
2118       IF (x_atlv_rec.code_combination_id = OKC_API.G_MISS_NUM)
2119       THEN
2120         x_atlv_rec.code_combination_id := l_atlv_rec.code_combination_id;
2121       END IF;
2122       IF (x_atlv_rec.ae_line_type = OKC_API.G_MISS_CHAR)
2123       THEN
2124         x_atlv_rec.ae_line_type := l_atlv_rec.ae_line_type;
2125       END IF;
2126       IF (x_atlv_rec.sequence_number = OKC_API.G_MISS_NUM)
2127       THEN
2128         x_atlv_rec.sequence_number := l_atlv_rec.sequence_number;
2129       END IF;
2130       IF (x_atlv_rec.description = OKC_API.G_MISS_CHAR)
2131       THEN
2132         x_atlv_rec.description := l_atlv_rec.description;
2133       END IF;
2134       IF (x_atlv_rec.percentage = OKC_API.G_MISS_NUM)
2135       THEN
2136         x_atlv_rec.percentage := l_atlv_rec.percentage;
2137       END IF;
2138       IF (x_atlv_rec.account_builder_yn = OKC_API.G_MISS_CHAR)
2139       THEN
2140         x_atlv_rec.account_builder_yn := l_atlv_rec.account_builder_yn;
2141       END IF;
2142       IF (x_atlv_rec.attribute_category = OKC_API.G_MISS_CHAR)
2143       THEN
2144         x_atlv_rec.attribute_category := l_atlv_rec.attribute_category;
2145       END IF;
2146       IF (x_atlv_rec.attribute1 = OKC_API.G_MISS_CHAR)
2147       THEN
2148         x_atlv_rec.attribute1 := l_atlv_rec.attribute1;
2149       END IF;
2150       IF (x_atlv_rec.attribute2 = OKC_API.G_MISS_CHAR)
2151       THEN
2152         x_atlv_rec.attribute2 := l_atlv_rec.attribute2;
2153       END IF;
2154       IF (x_atlv_rec.attribute3 = OKC_API.G_MISS_CHAR)
2155       THEN
2156         x_atlv_rec.attribute3 := l_atlv_rec.attribute3;
2157       END IF;
2158       IF (x_atlv_rec.attribute4 = OKC_API.G_MISS_CHAR)
2159       THEN
2160         x_atlv_rec.attribute4 := l_atlv_rec.attribute4;
2161       END IF;
2162       IF (x_atlv_rec.attribute5 = OKC_API.G_MISS_CHAR)
2163       THEN
2164         x_atlv_rec.attribute5 := l_atlv_rec.attribute5;
2165       END IF;
2166       IF (x_atlv_rec.attribute6 = OKC_API.G_MISS_CHAR)
2167       THEN
2168         x_atlv_rec.attribute6 := l_atlv_rec.attribute6;
2169       END IF;
2170       IF (x_atlv_rec.attribute7 = OKC_API.G_MISS_CHAR)
2171       THEN
2172         x_atlv_rec.attribute7 := l_atlv_rec.attribute7;
2173       END IF;
2174       IF (x_atlv_rec.attribute8 = OKC_API.G_MISS_CHAR)
2175       THEN
2176         x_atlv_rec.attribute8 := l_atlv_rec.attribute8;
2177       END IF;
2178       IF (x_atlv_rec.attribute9 = OKC_API.G_MISS_CHAR)
2179       THEN
2180         x_atlv_rec.attribute9 := l_atlv_rec.attribute9;
2181       END IF;
2182       IF (x_atlv_rec.attribute10 = OKC_API.G_MISS_CHAR)
2183       THEN
2184         x_atlv_rec.attribute10 := l_atlv_rec.attribute10;
2185       END IF;
2186       IF (x_atlv_rec.attribute11 = OKC_API.G_MISS_CHAR)
2187       THEN
2188         x_atlv_rec.attribute11 := l_atlv_rec.attribute11;
2189       END IF;
2190       IF (x_atlv_rec.attribute12 = OKC_API.G_MISS_CHAR)
2191       THEN
2192         x_atlv_rec.attribute12 := l_atlv_rec.attribute12;
2193       END IF;
2194       IF (x_atlv_rec.attribute13 = OKC_API.G_MISS_CHAR)
2195       THEN
2196         x_atlv_rec.attribute13 := l_atlv_rec.attribute13;
2197       END IF;
2198       IF (x_atlv_rec.attribute14 = OKC_API.G_MISS_CHAR)
2199       THEN
2200         x_atlv_rec.attribute14 := l_atlv_rec.attribute14;
2201       END IF;
2202       IF (x_atlv_rec.attribute15 = OKC_API.G_MISS_CHAR)
2203       THEN
2204         x_atlv_rec.attribute15 := l_atlv_rec.attribute15;
2205       END IF;
2206       IF (x_atlv_rec.org_id = OKC_API.G_MISS_NUM)
2207       THEN
2208         x_atlv_rec.org_id := l_atlv_rec.org_id;
2209       END IF;
2210       IF (x_atlv_rec.created_by = OKC_API.G_MISS_NUM)
2211       THEN
2212         x_atlv_rec.created_by := l_atlv_rec.created_by;
2213       END IF;
2214       IF (x_atlv_rec.creation_date = OKC_API.G_MISS_DATE)
2215       THEN
2216         x_atlv_rec.creation_date := l_atlv_rec.creation_date;
2217       END IF;
2218       IF (x_atlv_rec.last_updated_by = OKC_API.G_MISS_NUM)
2219       THEN
2220         x_atlv_rec.last_updated_by := l_atlv_rec.last_updated_by;
2221       END IF;
2222       IF (x_atlv_rec.last_update_date = OKC_API.G_MISS_DATE)
2223       THEN
2224         x_atlv_rec.last_update_date := l_atlv_rec.last_update_date;
2225       END IF;
2226       IF (x_atlv_rec.last_update_login = OKC_API.G_MISS_NUM)
2227       THEN
2228         x_atlv_rec.last_update_login := l_atlv_rec.last_update_login;
2229       END IF;
2230       RETURN(l_return_status);
2231     END populate_new_record;
2232     -------------------------------------------
2233     -- Set_Attributes for:OKL_AE_TMPT_LNES_V --
2234     -------------------------------------------
2235     FUNCTION Set_Attributes (
2236       p_atlv_rec IN  atlv_rec_type,
2237       x_atlv_rec OUT NOCOPY atlv_rec_type
2238     ) RETURN VARCHAR2 IS
2239       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2240     BEGIN
2241       x_atlv_rec := p_atlv_rec;
2242       RETURN(l_return_status);
2243     END Set_Attributes;
2244   BEGIN
2245     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2246                                               G_PKG_NAME,
2247                                               p_init_msg_list,
2248                                               l_api_version,
2249                                               p_api_version,
2250                                               '_PVT',
2251                                               x_return_status);
2252     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2253       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2254     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2255       RAISE OKC_API.G_EXCEPTION_ERROR;
2256     END IF;
2257     --- Setting item attributes
2258     l_return_status := Set_Attributes(
2259       p_atlv_rec,                        -- IN
2260       l_atlv_rec);                       -- OUT
2261     --- If any errors happen abort API
2262     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2263       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2264     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2265       RAISE OKC_API.G_EXCEPTION_ERROR;
2266     END IF;
2267     l_return_status := populate_new_record(l_atlv_rec, l_def_atlv_rec);
2268     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2269       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2270     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2271       RAISE OKC_API.G_EXCEPTION_ERROR;
2272     END IF;
2273     l_def_atlv_rec := fill_who_columns(l_def_atlv_rec);
2274     --- Validate all non-missing attributes (Item Level Validation)
2275     l_return_status := Validate_Attributes(l_def_atlv_rec);
2276     --- If any errors happen abort API
2277     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2278       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2279     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2280       RAISE OKC_API.G_EXCEPTION_ERROR;
2281     END IF;
2282     l_return_status := Validate_Record(l_def_atlv_rec);
2283     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2284       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2285     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2286       RAISE OKC_API.G_EXCEPTION_ERROR;
2287     END IF;
2288 
2289     --------------------------------------
2290     -- Move VIEW record to "Child" records
2291     --------------------------------------
2292     migrate(l_def_atlv_rec, l_atl_rec);
2293     --------------------------------------------
2294     -- Call the UPDATE_ROW for each child record
2295     --------------------------------------------
2296     update_row(
2297       p_init_msg_list,
2298       x_return_status,
2299       x_msg_count,
2300       x_msg_data,
2301       l_atl_rec,
2302       lx_atl_rec
2303     );
2304     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2305       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2306     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2307       RAISE OKC_API.G_EXCEPTION_ERROR;
2308     END IF;
2309     migrate(lx_atl_rec, l_def_atlv_rec);
2310     x_atlv_rec := l_def_atlv_rec;
2311     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2312   EXCEPTION
2313     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2314       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2315       (
2316         l_api_name,
2317         G_PKG_NAME,
2318         'OKC_API.G_RET_STS_ERROR',
2319         x_msg_count,
2320         x_msg_data,
2321         '_PVT'
2322       );
2323     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2324       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2325       (
2326         l_api_name,
2327         G_PKG_NAME,
2328         'OKC_API.G_RET_STS_UNEXP_ERROR',
2329         x_msg_count,
2330         x_msg_data,
2331         '_PVT'
2332       );
2333     WHEN OTHERS THEN
2334       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2335       (
2336         l_api_name,
2337         G_PKG_NAME,
2338         'OTHERS',
2339         x_msg_count,
2340         x_msg_data,
2341         '_PVT'
2342       );
2343   END update_row;
2344   ----------------------------------------
2345   -- PL/SQL TBL update_row for:ATLV_TBL --
2346   ----------------------------------------
2347   PROCEDURE update_row(
2348     p_api_version                  IN NUMBER,
2349     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2350     x_return_status                OUT NOCOPY VARCHAR2,
2351     x_msg_count                    OUT NOCOPY NUMBER,
2352     x_msg_data                     OUT NOCOPY VARCHAR2,
2353     p_atlv_tbl                     IN atlv_tbl_type,
2354     x_atlv_tbl                     OUT NOCOPY atlv_tbl_type) IS
2355 
2356     l_api_version                 CONSTANT NUMBER := 1;
2357     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2358     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2359     l_overall_status		     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2360     i                              NUMBER := 0;
2361   BEGIN
2362     OKC_API.init_msg_list(p_init_msg_list);
2363     -- Make sure PL/SQL table has records in it before passing
2364     IF (p_atlv_tbl.COUNT > 0) THEN
2365       i := p_atlv_tbl.FIRST;
2366       LOOP
2367         update_row (
2368           p_api_version                  => p_api_version,
2369           p_init_msg_list                => OKC_API.G_FALSE,
2370           x_return_status                => x_return_status,
2371           x_msg_count                    => x_msg_count,
2372           x_msg_data                     => x_msg_data,
2373           p_atlv_rec                     => p_atlv_tbl(i),
2374           x_atlv_rec                     => x_atlv_tbl(i));
2375 	  IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
2376 	     IF l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR THEN
2377 		  l_overall_status := x_return_status;
2378 	     END IF;
2379 	  END IF;
2380         EXIT WHEN (i = p_atlv_tbl.LAST);
2381         i := p_atlv_tbl.NEXT(i);
2382       END LOOP;
2383 	x_return_status := l_overall_status;
2384     END IF;
2385   EXCEPTION
2386     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2387       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2388       (
2389         l_api_name,
2390         G_PKG_NAME,
2391         'OKC_API.G_RET_STS_ERROR',
2392         x_msg_count,
2393         x_msg_data,
2394         '_PVT'
2395       );
2396     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2397       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2398       (
2399         l_api_name,
2400         G_PKG_NAME,
2401         'OKC_API.G_RET_STS_UNEXP_ERROR',
2402         x_msg_count,
2403         x_msg_data,
2404         '_PVT'
2405       );
2406     WHEN OTHERS THEN
2407       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2408       (
2409         l_api_name,
2410         G_PKG_NAME,
2411         'OTHERS',
2412         x_msg_count,
2413         x_msg_data,
2414         '_PVT'
2415       );
2416   END update_row;
2417 
2418   ---------------------------------------------------------------------------
2419   -- PROCEDURE delete_row
2420   ---------------------------------------------------------------------------
2421   -------------------------------------
2422   -- delete_row for:OKL_AE_TMPT_LNES --
2423   -------------------------------------
2424   PROCEDURE delete_row(
2425     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2426     x_return_status                OUT NOCOPY VARCHAR2,
2427     x_msg_count                    OUT NOCOPY NUMBER,
2428     x_msg_data                     OUT NOCOPY VARCHAR2,
2429     p_atl_rec                      IN atl_rec_type) IS
2430 
2431     l_api_version                 CONSTANT NUMBER := 1;
2432     l_api_name                     CONSTANT VARCHAR2(30) := 'LNES_delete_row';
2433     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2434     l_atl_rec                      atl_rec_type:= p_atl_rec;
2435     l_row_notfound                 BOOLEAN := TRUE;
2436   BEGIN
2437     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2438                                               p_init_msg_list,
2439                                               '_PVT',
2440                                               x_return_status);
2441     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2442       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2443     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2444       RAISE OKC_API.G_EXCEPTION_ERROR;
2445     END IF;
2446     DELETE FROM OKL_AE_TMPT_LNES
2447      WHERE ID = l_atl_rec.id;
2448 
2449     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2450   EXCEPTION
2451     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2452       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2453       (
2454         l_api_name,
2455         G_PKG_NAME,
2456         'OKC_API.G_RET_STS_ERROR',
2457         x_msg_count,
2458         x_msg_data,
2459         '_PVT'
2460       );
2461     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2462       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2463       (
2464         l_api_name,
2465         G_PKG_NAME,
2466         'OKC_API.G_RET_STS_UNEXP_ERROR',
2467         x_msg_count,
2468         x_msg_data,
2469         '_PVT'
2470       );
2471     WHEN OTHERS THEN
2472       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2473       (
2474         l_api_name,
2475         G_PKG_NAME,
2476         'OTHERS',
2477         x_msg_count,
2478         x_msg_data,
2479         '_PVT'
2480       );
2481   END delete_row;
2482   ---------------------------------------
2483   -- delete_row for:OKL_AE_TMPT_LNES_V --
2484   ---------------------------------------
2485   PROCEDURE delete_row(
2486     p_api_version                  IN NUMBER,
2487     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2488     x_return_status                OUT NOCOPY VARCHAR2,
2489     x_msg_count                    OUT NOCOPY NUMBER,
2490     x_msg_data                     OUT NOCOPY VARCHAR2,
2491     p_atlv_rec                     IN atlv_rec_type) IS
2492 
2493     l_api_version                 CONSTANT NUMBER := 1;
2494     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2495     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2496     l_atlv_rec                     atlv_rec_type := p_atlv_rec;
2497     l_atl_rec                      atl_rec_type;
2498   BEGIN
2499     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2500                                               G_PKG_NAME,
2501                                               p_init_msg_list,
2502                                               l_api_version,
2503                                               p_api_version,
2504                                               '_PVT',
2505                                               x_return_status);
2506     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2507       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2508     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2509       RAISE OKC_API.G_EXCEPTION_ERROR;
2510     END IF;
2511     --------------------------------------
2512     -- Move VIEW record to "Child" records
2513     --------------------------------------
2514     migrate(l_atlv_rec, l_atl_rec);
2515     --------------------------------------------
2516     -- Call the DELETE_ROW for each child record
2517     --------------------------------------------
2518     delete_row(
2519       p_init_msg_list,
2520       x_return_status,
2521       x_msg_count,
2522       x_msg_data,
2523       l_atl_rec
2524     );
2525     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2526       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2527     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2528       RAISE OKC_API.G_EXCEPTION_ERROR;
2529     END IF;
2530     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2531   EXCEPTION
2532     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2533       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2534       (
2535         l_api_name,
2536         G_PKG_NAME,
2537         'OKC_API.G_RET_STS_ERROR',
2538         x_msg_count,
2539         x_msg_data,
2540         '_PVT'
2541       );
2542     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2543       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2544       (
2545         l_api_name,
2546         G_PKG_NAME,
2547         'OKC_API.G_RET_STS_UNEXP_ERROR',
2548         x_msg_count,
2549         x_msg_data,
2550         '_PVT'
2551       );
2552     WHEN OTHERS THEN
2553       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2554       (
2555         l_api_name,
2556         G_PKG_NAME,
2557         'OTHERS',
2558         x_msg_count,
2559         x_msg_data,
2560         '_PVT'
2561       );
2562   END delete_row;
2563   ----------------------------------------
2564   -- PL/SQL TBL delete_row for:ATLV_TBL --
2565   ----------------------------------------
2566   PROCEDURE delete_row(
2567     p_api_version                  IN NUMBER,
2568     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2569     x_return_status                OUT NOCOPY VARCHAR2,
2570     x_msg_count                    OUT NOCOPY NUMBER,
2571     x_msg_data                     OUT NOCOPY VARCHAR2,
2572     p_atlv_tbl                     IN atlv_tbl_type) IS
2573 
2574     l_api_version                 CONSTANT NUMBER := 1;
2575     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2576     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2577     l_overall_status		     VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2578     i                              NUMBER := 0;
2579   BEGIN
2580     OKC_API.init_msg_list(p_init_msg_list);
2581     -- Make sure PL/SQL table has records in it before passing
2582     IF (p_atlv_tbl.COUNT > 0) THEN
2583       i := p_atlv_tbl.FIRST;
2584       LOOP
2585         delete_row (
2586           p_api_version                  => p_api_version,
2587           p_init_msg_list                => OKC_API.G_FALSE,
2588           x_return_status                => x_return_status,
2589           x_msg_count                    => x_msg_count,
2590           x_msg_data                     => x_msg_data,
2591           p_atlv_rec                     => p_atlv_tbl(i));
2592 	  IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
2593 	     IF l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR THEN
2594 		  l_overall_status := x_return_status;
2595 	     END IF;
2596 	  END IF;
2597         EXIT WHEN (i = p_atlv_tbl.LAST);
2598         i := p_atlv_tbl.NEXT(i);
2599       END LOOP;
2600 	x_return_status := l_overall_status;
2601     END IF;
2602   EXCEPTION
2603     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2604       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2605       (
2606         l_api_name,
2607         G_PKG_NAME,
2608         'OKC_API.G_RET_STS_ERROR',
2609         x_msg_count,
2610         x_msg_data,
2611         '_PVT'
2612       );
2613     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2614       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2615       (
2616         l_api_name,
2617         G_PKG_NAME,
2618         'OKC_API.G_RET_STS_UNEXP_ERROR',
2619         x_msg_count,
2620         x_msg_data,
2621         '_PVT'
2622       );
2623     WHEN OTHERS THEN
2624       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2625       (
2626         l_api_name,
2627         G_PKG_NAME,
2628         'OTHERS',
2629         x_msg_count,
2630         x_msg_data,
2631         '_PVT'
2632       );
2633   END delete_row;
2634 END OKL_ATL_PVT;