DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PAM_PVT

Source


1 PACKAGE BODY okl_pam_pvt AS
2 /* $Header: OKLSPAMB.pls 120.5 2006/07/13 12:59:32 adagur noship $ */
3 
4   -- The lock_row and the validate_row procedures are not available.
5 
6   g_no_parent_record   CONSTANT VARCHAR2(200) := 'OKC_NO_PARENT_RECORD';
7   g_unexpected_error   CONSTANT VARCHAR2(200) := 'OKC_CONTRACTS_UNEXPECTED_ERROR';
8   g_sqlerrm_token      CONSTANT VARCHAR2(200) := 'SQLerrm';
9   g_sqlcode_token      CONSTANT VARCHAR2(200) := 'SQLcode';
10   g_exception_halt_validation EXCEPTION;
11 
12   PROCEDURE api_copy IS
13 
14   BEGIN
15     NULL;
16   END api_copy;
17 
18   PROCEDURE change_version IS
19 
20   BEGIN
21     NULL;
22   END change_version;
23 
24   ---------------------------------------------------------------------------
25   -- PROCEDURE add_language
26   ---------------------------------------------------------------------------
27 
28   PROCEDURE add_language IS
29 
30   BEGIN
31 
32     DELETE FROM OKL_FE_ADJ_MAT_ALL_TL t
33     WHERE       NOT EXISTS(SELECT NULL
34                            FROM   OKL_FE_ADJ_MAT_ALL_B b
35                            WHERE  b.adj_mat_id = t.adj_mat_id);
36 
37     UPDATE OKL_FE_ADJ_MAT_ALL_TL t
38     SET(adj_mat_desc) = (SELECT
39                                     -- LANGUAGE,
40 
41                                     -- B.LANGUAGE,
42 
43                                      b.adj_mat_desc
44                               FROM   OKL_FE_ADJ_MAT_ALL_TL b
45                               WHERE  b.adj_mat_id = t.adj_mat_id
46                                  AND b.language = t.source_lang)
47     WHERE  (t.adj_mat_id, t.language) IN(SELECT subt.adj_mat_id ,subt.language
48            FROM   OKL_FE_ADJ_MAT_ALL_TL subb ,OKL_FE_ADJ_MAT_ALL_TL subt
49            WHERE  subb.adj_mat_id = subt.adj_mat_id AND subb.language = subt.language AND (  -- SUBB.LANGUAGE <> SUBT.LANGUAGE OR
50              subb.adj_mat_desc <> subt.adj_mat_desc OR (subb.language IS NOT NULL
51        AND subt.language IS NULL)
52             OR (subb.adj_mat_desc IS NULL AND subt.adj_mat_desc IS NOT NULL)));
53 
54     INSERT INTO OKL_FE_ADJ_MAT_ALL_TL
55                (adj_mat_id
56                ,language
57                ,source_lang
58                ,sfwt_flag
59                ,adj_mat_desc)
60                 SELECT b.adj_mat_id
61                       ,l.language_code
62                       ,b.source_lang
63                       ,b.sfwt_flag
64                       ,b.adj_mat_desc
65                 FROM   OKL_FE_ADJ_MAT_ALL_TL b
66                       ,fnd_languages l
67                 WHERE  l.installed_flag IN('I', 'B')
68                    AND b.language = userenv('LANG')
69                    AND NOT EXISTS(SELECT NULL
70                                       FROM   OKL_FE_ADJ_MAT_ALL_TL t
71                                       WHERE  t.adj_mat_id = b.adj_mat_id AND t.language = l.language_code);
72 
73   END add_language;
74 
75 
76   --------------------------------------------------------------------------------
77   -- Procedure get_rec for OKL_FE_ADJ_MAT_ALL_B
78   --------------------------------------------------------------------------------
79 
80   FUNCTION get_rec(p_pamb_rec      IN            okl_pamb_rec
81                   ,x_no_data_found    OUT NOCOPY BOOLEAN) RETURN okl_pamb_rec IS
82 
83     CURSOR pamb_pk_csr(p_id IN NUMBER) IS
84       SELECT adj_mat_id
85             ,adj_mat_name
86             ,object_version_number
87             ,org_id
88             ,currency_code
89             ,adj_mat_type_code
90             ,orig_adj_mat_id
91             ,sts_code
92             ,effective_from_date
93             ,effective_to_date
94             ,attribute_category
95             ,attribute1
96             ,attribute2
97             ,attribute3
98             ,attribute4
99             ,attribute5
100             ,attribute6
101             ,attribute7
102             ,attribute8
103             ,attribute9
104             ,attribute10
105             ,attribute11
106             ,attribute12
107             ,attribute13
108             ,attribute14
109             ,attribute15
110             ,created_by
111             ,creation_date
112             ,last_updated_by
113             ,last_update_date
114             ,last_update_login
115       FROM   okl_fe_adj_mat_all_b
116       WHERE  okl_fe_adj_mat_all_b.adj_mat_id = p_id;
117     l_pamb_pk                    pamb_pk_csr%ROWTYPE;
118     l_pamb_rec                   okl_pamb_rec;
119 
120   BEGIN
121     x_no_data_found := true;
122 
123     --Get current data base values
124 
125     OPEN pamb_pk_csr(p_pamb_rec.adj_mat_id);
126     FETCH pamb_pk_csr INTO l_pamb_rec.adj_mat_id
127                           ,l_pamb_rec.adj_mat_name
128                           ,l_pamb_rec.object_version_number
129                           ,l_pamb_rec.org_id
130                           ,l_pamb_rec.currency_code
131                           ,l_pamb_rec.adj_mat_type_code
132                           ,l_pamb_rec.orig_adj_mat_id
133                           ,l_pamb_rec.sts_code
134                           ,l_pamb_rec.effective_from_date
135                           ,l_pamb_rec.effective_to_date
136                           ,l_pamb_rec.attribute_category
137                           ,l_pamb_rec.attribute1
138                           ,l_pamb_rec.attribute2
139                           ,l_pamb_rec.attribute3
140                           ,l_pamb_rec.attribute4
141                           ,l_pamb_rec.attribute5
142                           ,l_pamb_rec.attribute6
143                           ,l_pamb_rec.attribute7
144                           ,l_pamb_rec.attribute8
145                           ,l_pamb_rec.attribute9
146                           ,l_pamb_rec.attribute10
147                           ,l_pamb_rec.attribute11
148                           ,l_pamb_rec.attribute12
149                           ,l_pamb_rec.attribute13
150                           ,l_pamb_rec.attribute14
151                           ,l_pamb_rec.attribute15
152                           ,l_pamb_rec.created_by
153                           ,l_pamb_rec.creation_date
154                           ,l_pamb_rec.last_updated_by
155                           ,l_pamb_rec.last_update_date
156                           ,l_pamb_rec.last_update_login ;
157     x_no_data_found := pamb_pk_csr%NOTFOUND;
158     CLOSE pamb_pk_csr;
159     RETURN(l_pamb_rec);
160   END get_rec;
161 
162   FUNCTION get_rec(p_pamb_rec IN okl_pamb_rec) RETURN okl_pamb_rec IS
163     l_row_notfound               BOOLEAN := true;
164 
165   BEGIN
166     RETURN(get_rec(p_pamb_rec
167                   ,l_row_notfound));
168   END get_rec;
169 
170   --------------------------------------------------------------------------------
171   -- Procedure get_rec forOKL_FE_ADJ_MAT_ALL_TL
172   --------------------------------------------------------------------------------
173 
174   FUNCTION get_rec(p_pamtl_rec     IN            okl_pamtl_rec
175                   ,x_no_data_found    OUT NOCOPY BOOLEAN) RETURN okl_pamtl_rec IS
176 
177     CURSOR pamtl_pk_csr(p_id       IN NUMBER
178                        ,p_language IN VARCHAR2) IS
179       SELECT adj_mat_id
180             ,adj_mat_desc
181             ,language
182             ,source_lang
183             ,sfwt_flag
184             ,created_by
185             ,creation_date
186             ,last_updated_by
187             ,last_update_date
188             ,last_update_login
189       FROM   okl_fe_adj_mat_all_tl
190       WHERE  okl_fe_adj_mat_all_tl.adj_mat_id = p_id
191          AND okl_fe_adj_mat_all_tl.language = p_language;
192     l_pamtl_pk                   pamtl_pk_csr%ROWTYPE;
193     l_pamtl_rec                  okl_pamtl_rec;
194 
195   BEGIN
196     x_no_data_found := true;
197 
198     --Get current data base values
199 
200     OPEN pamtl_pk_csr(p_pamtl_rec.adj_mat_id
201                      ,p_pamtl_rec.language);
202     FETCH pamtl_pk_csr INTO l_pamtl_rec.adj_mat_id
203                            ,l_pamtl_rec.adj_mat_desc
204                            ,l_pamtl_rec.language
205                            ,l_pamtl_rec.source_lang
206                            ,l_pamtl_rec.sfwt_flag
207                            ,l_pamtl_rec.created_by
208                            ,l_pamtl_rec.creation_date
209                            ,l_pamtl_rec.last_updated_by
210                            ,l_pamtl_rec.last_update_date
211                            ,l_pamtl_rec.last_update_login ;
212     x_no_data_found := pamtl_pk_csr%NOTFOUND;
213     CLOSE pamtl_pk_csr;
214     RETURN(l_pamtl_rec);
215   END get_rec;
216 
217   FUNCTION get_rec(p_pamtl_rec IN okl_pamtl_rec) RETURN okl_pamtl_rec IS
218     l_row_notfound               BOOLEAN := true;
219 
220   BEGIN
221     RETURN(get_rec(p_pamtl_rec
222                   ,l_row_notfound));
223   END get_rec;
224 
225   --------------------------------------------------------------------------------
226   -- Procedure get_rec for OKL_FE_ADJ_MAT_V
227   --------------------------------------------------------------------------------
228 
229   FUNCTION get_rec(p_pamv_rec      IN            okl_pamv_rec
230                   ,x_no_data_found    OUT NOCOPY BOOLEAN) RETURN okl_pamv_rec IS
231 
232     CURSOR pamv_pk_csr(p_id IN NUMBER) IS
233       SELECT adj_mat_id
234             ,object_version_number
235             ,org_id
236             ,currency_code
237             ,adj_mat_type_code
238             ,orig_adj_mat_id
239             ,sts_code
240             ,effective_from_date
241             ,effective_to_date
242             ,attribute_category
243             ,attribute1
244             ,attribute2
245             ,attribute3
246             ,attribute4
247             ,attribute5
248             ,attribute6
249             ,attribute7
250             ,attribute8
251             ,attribute9
252             ,attribute10
253             ,attribute11
254             ,attribute12
255             ,attribute13
256             ,attribute14
257             ,attribute15
258             ,created_by
259             ,creation_date
260             ,last_updated_by
261             ,last_update_date
262             ,last_update_login
263             ,adj_mat_name
264             ,adj_mat_desc
265       FROM   okl_fe_adj_mat_v
266       WHERE  okl_fe_adj_mat_v.adj_mat_id = p_id;
267     l_pamv_pk                    pamv_pk_csr%ROWTYPE;
268     l_pamv_rec                   okl_pamv_rec;
269 
270   BEGIN
271     x_no_data_found := true;
272 
273     --Get current data base values
274 
275     OPEN pamv_pk_csr(p_pamv_rec.adj_mat_id);
276     FETCH pamv_pk_csr INTO l_pamv_rec.adj_mat_id
277                           ,l_pamv_rec.object_version_number
278                           ,l_pamv_rec.org_id
279                           ,l_pamv_rec.currency_code
280                           ,l_pamv_rec.adj_mat_type_code
281                           ,l_pamv_rec.orig_adj_mat_id
282                           ,l_pamv_rec.sts_code
283                           ,l_pamv_rec.effective_from_date
284                           ,l_pamv_rec.effective_to_date
285                           ,l_pamv_rec.attribute_category
286                           ,l_pamv_rec.attribute1
287                           ,l_pamv_rec.attribute2
288                           ,l_pamv_rec.attribute3
289                           ,l_pamv_rec.attribute4
290                           ,l_pamv_rec.attribute5
291                           ,l_pamv_rec.attribute6
292                           ,l_pamv_rec.attribute7
293                           ,l_pamv_rec.attribute8
294                           ,l_pamv_rec.attribute9
295                           ,l_pamv_rec.attribute10
296                           ,l_pamv_rec.attribute11
297                           ,l_pamv_rec.attribute12
298                           ,l_pamv_rec.attribute13
299                           ,l_pamv_rec.attribute14
300                           ,l_pamv_rec.attribute15
301                           ,l_pamv_rec.created_by
302                           ,l_pamv_rec.creation_date
303                           ,l_pamv_rec.last_updated_by
304                           ,l_pamv_rec.last_update_date
305                           ,l_pamv_rec.last_update_login
306                           ,l_pamv_rec.adj_mat_name
307                           ,l_pamv_rec.adj_mat_desc ;
308     x_no_data_found := pamv_pk_csr%NOTFOUND;
309     CLOSE pamv_pk_csr;
310     RETURN(l_pamv_rec);
311   END get_rec;
312 
313   FUNCTION get_rec(p_pamv_rec IN okl_pamv_rec) RETURN okl_pamv_rec IS
314     l_row_notfound               BOOLEAN := true;
315 
316   BEGIN
317     RETURN(get_rec(p_pamv_rec
318                   ,l_row_notfound));
319   END get_rec;
320 
321   --------------------------------------------------------------------------------
322   -- Procedure migrate
323   --------------------------------------------------------------------------------
324 
325   PROCEDURE migrate(p_from IN            okl_pamv_rec
326                    ,p_to   IN OUT NOCOPY okl_pamb_rec) IS
327 
328   BEGIN
329     p_to.adj_mat_id := p_from.adj_mat_id;
330     p_to.adj_mat_name := p_from.adj_mat_name;
331     p_to.object_version_number := p_from.object_version_number;
332     p_to.org_id := p_from.org_id;
333     p_to.currency_code := p_from.currency_code;
334     p_to.adj_mat_type_code := p_from.adj_mat_type_code;
335     p_to.orig_adj_mat_id := p_from.orig_adj_mat_id;
336     p_to.sts_code := p_from.sts_code;
337     p_to.effective_from_date := p_from.effective_from_date;
338     p_to.effective_to_date := p_from.effective_to_date;
339     p_to.attribute_category := p_from.attribute_category;
340     p_to.attribute1 := p_from.attribute1;
341     p_to.attribute2 := p_from.attribute2;
342     p_to.attribute3 := p_from.attribute3;
343     p_to.attribute4 := p_from.attribute4;
344     p_to.attribute5 := p_from.attribute5;
345     p_to.attribute6 := p_from.attribute6;
346     p_to.attribute7 := p_from.attribute7;
347     p_to.attribute8 := p_from.attribute8;
348     p_to.attribute9 := p_from.attribute9;
349     p_to.attribute10 := p_from.attribute10;
350     p_to.attribute11 := p_from.attribute11;
351     p_to.attribute12 := p_from.attribute12;
352     p_to.attribute13 := p_from.attribute13;
353     p_to.attribute14 := p_from.attribute14;
354     p_to.attribute15 := p_from.attribute15;
355     p_to.created_by := p_from.created_by;
356     p_to.creation_date := p_from.creation_date;
357     p_to.last_updated_by := p_from.last_updated_by;
358     p_to.last_update_date := p_from.last_update_date;
359     p_to.last_update_login := p_from.last_update_login;
360   END migrate;
361 
362   PROCEDURE migrate(p_from IN            okl_pamb_rec
363                    ,p_to   IN OUT NOCOPY okl_pamv_rec) IS
364 
365   BEGIN
366     p_to.adj_mat_id := p_from.adj_mat_id;
367     p_to.adj_mat_name := p_from.adj_mat_name;
368     p_to.object_version_number := p_from.object_version_number;
369     p_to.org_id := p_from.org_id;
370     p_to.currency_code := p_from.currency_code;
371     p_to.adj_mat_type_code := p_from.adj_mat_type_code;
372     p_to.orig_adj_mat_id := p_from.orig_adj_mat_id;
373     p_to.sts_code := p_from.sts_code;
374     p_to.effective_from_date := p_from.effective_from_date;
375     p_to.effective_to_date := p_from.effective_to_date;
376     p_to.attribute_category := p_from.attribute_category;
377     p_to.attribute1 := p_from.attribute1;
378     p_to.attribute2 := p_from.attribute2;
379     p_to.attribute3 := p_from.attribute3;
380     p_to.attribute4 := p_from.attribute4;
381     p_to.attribute5 := p_from.attribute5;
382     p_to.attribute6 := p_from.attribute6;
383     p_to.attribute7 := p_from.attribute7;
384     p_to.attribute8 := p_from.attribute8;
385     p_to.attribute9 := p_from.attribute9;
386     p_to.attribute10 := p_from.attribute10;
387     p_to.attribute11 := p_from.attribute11;
388     p_to.attribute12 := p_from.attribute12;
389     p_to.attribute13 := p_from.attribute13;
390     p_to.attribute14 := p_from.attribute14;
391     p_to.attribute15 := p_from.attribute15;
392     p_to.created_by := p_from.created_by;
393     p_to.creation_date := p_from.creation_date;
394     p_to.last_updated_by := p_from.last_updated_by;
395     p_to.last_update_date := p_from.last_update_date;
396     p_to.last_update_login := p_from.last_update_login;
397   END migrate;
398 
399   PROCEDURE migrate(p_from IN            okl_pamv_rec
400                    ,p_to   IN OUT NOCOPY okl_pamtl_rec) IS
401 
402   BEGIN
403     p_to.adj_mat_id := p_from.adj_mat_id;
404     p_to.adj_mat_desc := p_from.adj_mat_desc;
405     p_to.created_by := p_from.created_by;
406     p_to.creation_date := p_from.creation_date;
407     p_to.last_updated_by := p_from.last_updated_by;
408     p_to.last_update_date := p_from.last_update_date;
409     p_to.last_update_login := p_from.last_update_login;
410   END migrate;
411 
412   PROCEDURE migrate(p_from IN            okl_pamtl_rec
413                    ,p_to   IN OUT NOCOPY okl_pamv_rec) IS
414 
415   BEGIN
416     p_to.adj_mat_id := p_from.adj_mat_id;
417     p_to.adj_mat_desc := p_from.adj_mat_desc;
418     p_to.created_by := p_from.created_by;
419     p_to.creation_date := p_from.creation_date;
420     p_to.last_updated_by := p_from.last_updated_by;
421     p_to.last_update_date := p_from.last_update_date;
422     p_to.last_update_login := p_from.last_update_login;
423   END migrate;
424 
425   FUNCTION null_out_defaults(p_pamv_rec IN okl_pamv_rec) RETURN okl_pamv_rec IS
426     l_pamv_rec                   okl_pamv_rec := p_pamv_rec;
427 
428   BEGIN
429 
430     IF (l_pamv_rec.adj_mat_id = okl_api.g_miss_num) THEN
431       l_pamv_rec.adj_mat_id := NULL;
432     END IF;
433 
434     IF (l_pamv_rec.adj_mat_name = okl_api.g_miss_char) THEN
435       l_pamv_rec.adj_mat_name := NULL;
436     END IF;
437 
438     IF (l_pamv_rec.object_version_number = okl_api.g_miss_num) THEN
439       l_pamv_rec.object_version_number := NULL;
440     END IF;
441 
442     IF (l_pamv_rec.org_id = okl_api.g_miss_num) THEN
443       l_pamv_rec.org_id := NULL;
444     END IF;
445 
446     IF (l_pamv_rec.currency_code = okl_api.g_miss_char) THEN
447       l_pamv_rec.currency_code := NULL;
448     END IF;
449 
450     IF (l_pamv_rec.adj_mat_type_code = okl_api.g_miss_char) THEN
451       l_pamv_rec.adj_mat_type_code := NULL;
452     END IF;
453 
454     IF (l_pamv_rec.orig_adj_mat_id = okl_api.g_miss_num) THEN
455       l_pamv_rec.orig_adj_mat_id := NULL;
456     END IF;
457 
458     IF (l_pamv_rec.sts_code = okl_api.g_miss_char) THEN
459       l_pamv_rec.sts_code := NULL;
460     END IF;
461 
462     IF (l_pamv_rec.effective_from_date = okl_api.g_miss_date) THEN
463       l_pamv_rec.effective_from_date := NULL;
464     END IF;
465 
466     IF (l_pamv_rec.effective_to_date = okl_api.g_miss_date) THEN
467       l_pamv_rec.effective_to_date := NULL;
468     END IF;
469 
470     IF (l_pamv_rec.attribute_category = okl_api.g_miss_char) THEN
471       l_pamv_rec.attribute_category := NULL;
472     END IF;
473 
474     IF (l_pamv_rec.attribute1 = okl_api.g_miss_char) THEN
475       l_pamv_rec.attribute1 := NULL;
476     END IF;
477 
478     IF (l_pamv_rec.attribute2 = okl_api.g_miss_char) THEN
479       l_pamv_rec.attribute2 := NULL;
480     END IF;
481 
482     IF (l_pamv_rec.attribute3 = okl_api.g_miss_char) THEN
483       l_pamv_rec.attribute3 := NULL;
484     END IF;
485 
486     IF (l_pamv_rec.attribute4 = okl_api.g_miss_char) THEN
487       l_pamv_rec.attribute4 := NULL;
488     END IF;
489 
490     IF (l_pamv_rec.attribute5 = okl_api.g_miss_char) THEN
491       l_pamv_rec.attribute5 := NULL;
492     END IF;
493 
494     IF (l_pamv_rec.attribute6 = okl_api.g_miss_char) THEN
495       l_pamv_rec.attribute6 := NULL;
496     END IF;
497 
498     IF (l_pamv_rec.attribute7 = okl_api.g_miss_char) THEN
499       l_pamv_rec.attribute7 := NULL;
500     END IF;
501 
502     IF (l_pamv_rec.attribute8 = okl_api.g_miss_char) THEN
503       l_pamv_rec.attribute8 := NULL;
504     END IF;
505 
506     IF (l_pamv_rec.attribute9 = okl_api.g_miss_char) THEN
507       l_pamv_rec.attribute9 := NULL;
508     END IF;
509 
510     IF (l_pamv_rec.attribute10 = okl_api.g_miss_char) THEN
511       l_pamv_rec.attribute10 := NULL;
512     END IF;
513 
514     IF (l_pamv_rec.attribute11 = okl_api.g_miss_char) THEN
515       l_pamv_rec.attribute11 := NULL;
516     END IF;
517 
518     IF (l_pamv_rec.attribute12 = okl_api.g_miss_char) THEN
519       l_pamv_rec.attribute12 := NULL;
520     END IF;
521 
522     IF (l_pamv_rec.attribute13 = okl_api.g_miss_char) THEN
523       l_pamv_rec.attribute13 := NULL;
524     END IF;
525 
526     IF (l_pamv_rec.attribute14 = okl_api.g_miss_char) THEN
527       l_pamv_rec.attribute14 := NULL;
528     END IF;
529 
530     IF (l_pamv_rec.attribute15 = okl_api.g_miss_char) THEN
531       l_pamv_rec.attribute15 := NULL;
532     END IF;
533 
534     IF (l_pamv_rec.created_by = okl_api.g_miss_num) THEN
535       l_pamv_rec.created_by := NULL;
536     END IF;
537 
538     IF (l_pamv_rec.creation_date = okl_api.g_miss_date) THEN
539       l_pamv_rec.creation_date := NULL;
540     END IF;
541 
542     IF (l_pamv_rec.last_updated_by = okl_api.g_miss_num) THEN
543       l_pamv_rec.last_updated_by := NULL;
544     END IF;
545 
546     IF (l_pamv_rec.last_update_date = okl_api.g_miss_date) THEN
547       l_pamv_rec.last_update_date := NULL;
548     END IF;
549 
550     IF (l_pamv_rec.last_update_login = okl_api.g_miss_num) THEN
551       l_pamv_rec.last_update_login := NULL;
552     END IF;
553 
554     IF (l_pamv_rec.adj_mat_name = okl_api.g_miss_char) THEN
555       l_pamv_rec.adj_mat_name := NULL;
556     END IF;
557 
558     IF (l_pamv_rec.adj_mat_desc = okl_api.g_miss_char) THEN
559       l_pamv_rec.adj_mat_desc := NULL;
560     END IF;
561     RETURN(l_pamv_rec);
562   END null_out_defaults;
563 
564   ---------------------------------------------------------------------------
565   -- PROCEDURE lock_row
566   ---------------------------------------------------------------------------
567   ---------------------------------------
568   -- lock_row_b --
569   ---------------------------------------
570 
571   PROCEDURE lock_row(p_init_msg_list IN            VARCHAR2
572                     ,x_return_status    OUT NOCOPY VARCHAR2
573                     ,x_msg_count        OUT NOCOPY NUMBER
574                     ,x_msg_data         OUT NOCOPY VARCHAR2
575                     ,p_pamb_rec      IN            okl_pamb_rec) IS
576     e_resource_busy EXCEPTION;
577 
578     PRAGMA EXCEPTION_INIT(e_resource_busy, - 00054);
579 
580     CURSOR lock_csr(p_pamb_rec IN okl_pamb_rec) IS
581       SELECT        object_version_number
582       FROM          okl_fe_adj_mat_all_b
583       WHERE         adj_mat_id = p_pamb_rec.adj_mat_id
584                 AND object_version_number = p_pamb_rec.object_version_number
585       FOR UPDATE OF object_version_number NOWAIT;
586 
587     CURSOR lchk_csr(p_pamb_rec IN okl_pamb_rec) IS
588       SELECT object_version_number
589       FROM   okl_fe_adj_mat_all_b
590       WHERE  adj_mat_id = p_pamb_rec.adj_mat_id;
591     l_api_version            CONSTANT NUMBER                                           := 1;
592     l_api_name               CONSTANT VARCHAR2(30)                                     := 'B_lock_row';
593     l_return_status                   VARCHAR2(1)                                      := okl_api.g_ret_sts_success;
594     l_object_version_number           okl_fe_resi_cat_all_b.object_version_number%TYPE;
595     lc_object_version_number          okl_fe_resi_cat_all_b.object_version_number%TYPE;
596     l_row_notfound                    BOOLEAN                                          := false;
597     lc_row_notfound                   BOOLEAN                                          := false;
598 
599   BEGIN
600     l_return_status := okl_api.start_activity(l_api_name
601                                              ,p_init_msg_list
602                                              ,'_PVT'
603                                              ,x_return_status);
604 
605     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
606       RAISE okl_api.g_exception_unexpected_error;
607     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
608       RAISE okl_api.g_exception_error;
609     END IF;
610 
611     BEGIN
612       OPEN lock_csr(p_pamb_rec);
613       FETCH lock_csr INTO l_object_version_number ;
614       l_row_notfound := lock_csr%NOTFOUND;
615       CLOSE lock_csr;
616       EXCEPTION
617         WHEN e_resource_busy THEN
618 
619           IF (lock_csr%ISOPEN) THEN
620             CLOSE lock_csr;
621           END IF;
622           okl_api.set_message(g_fnd_app
623                              ,g_form_unable_to_reserve_rec);
624           RAISE app_exceptions.record_lock_exception;
625     END;
626 
627     IF (l_row_notfound) THEN
628       OPEN lchk_csr(p_pamb_rec);
629       FETCH lchk_csr INTO lc_object_version_number ;
630       lc_row_notfound := lchk_csr%NOTFOUND;
631       CLOSE lchk_csr;
632     END IF;
633 
634     IF (lc_row_notfound) THEN
635       okl_api.set_message(g_fnd_app
636                          ,g_form_record_deleted);
637       RAISE okl_api.g_exception_error;
638     ELSIF lc_object_version_number > p_pamb_rec.object_version_number THEN
639       okl_api.set_message(g_fnd_app
640                          ,g_form_record_changed);
641       RAISE okl_api.g_exception_error;
642     ELSIF lc_object_version_number <> p_pamb_rec.object_version_number THEN
643       okl_api.set_message(g_fnd_app
644                          ,g_form_record_changed);
645       RAISE okl_api.g_exception_error;
646     ELSIF lc_object_version_number = - 1 THEN
647       okl_api.set_message(g_app_name
648                          ,g_record_logically_deleted);
649       RAISE okl_api.g_exception_error;
650     END IF;
651     okl_api.end_activity(x_msg_count
652                         ,x_msg_data);
653     EXCEPTION
654       WHEN g_exception_halt_validation THEN
655         x_return_status := okl_api.handle_exceptions(l_api_name
656                                                     ,g_pkg_name
657                                                     ,'OKL_API.G_RET_STS_ERROR'
658                                                     ,x_msg_count
659                                                     ,x_msg_data
660                                                     ,'_PVT');
661       WHEN okl_api.g_exception_error THEN
662         x_return_status := okl_api.handle_exceptions(l_api_name
663                                                     ,g_pkg_name
664                                                     ,'OKL_API.G_RET_STS_ERROR'
665                                                     ,x_msg_count
666                                                     ,x_msg_data
667                                                     ,'_PVT');
668       WHEN okl_api.g_exception_unexpected_error THEN
669         x_return_status := okl_api.handle_exceptions(l_api_name
670                                                     ,g_pkg_name
671                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
672                                                     ,x_msg_count
673                                                     ,x_msg_data
674                                                     ,'_PVT');
675       WHEN OTHERS THEN
676         x_return_status := okl_api.handle_exceptions(l_api_name
677                                                     ,g_pkg_name
678                                                     ,'OTHERS'
679                                                     ,x_msg_count
680                                                     ,x_msg_data
681                                                     ,'_PVT');
682   END lock_row;
683 
684   ----------------------------------------
685   -- lock_row_tl --
686   ----------------------------------------
687 
688   PROCEDURE lock_row(p_init_msg_list IN            VARCHAR2
689                     ,x_return_status    OUT NOCOPY VARCHAR2
690                     ,x_msg_count        OUT NOCOPY NUMBER
691                     ,x_msg_data         OUT NOCOPY VARCHAR2
692                     ,p_pamtl_rec     IN            okl_pamtl_rec) IS
693     e_resource_busy EXCEPTION;
694 
695     PRAGMA EXCEPTION_INIT(e_resource_busy, - 00054);
696 
697     CURSOR lock_csr(p_pamtl_rec IN okl_pamtl_rec) IS
698       SELECT     *
699       FROM       okl_fe_adj_mat_all_tl
700       WHERE      adj_mat_id = p_pamtl_rec.adj_mat_id
701       FOR UPDATE NOWAIT;
702     l_api_version        CONSTANT NUMBER           := 1;
703     l_api_name           CONSTANT VARCHAR2(30)     := 'TL_lock_row';
704     l_return_status               VARCHAR2(1)      := okl_api.g_ret_sts_success;
705     l_lock_var                    lock_csr%ROWTYPE;
706     l_row_notfound                BOOLEAN          := false;
707     lc_row_notfound               BOOLEAN          := false;
708 
709   BEGIN
710     l_return_status := okl_api.start_activity(l_api_name
711                                              ,p_init_msg_list
712                                              ,'_PVT'
713                                              ,x_return_status);
714 
715     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
716       RAISE okl_api.g_exception_unexpected_error;
717     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
718       RAISE okl_api.g_exception_error;
719     END IF;
720 
721     BEGIN
722       OPEN lock_csr(p_pamtl_rec);
723       FETCH lock_csr INTO l_lock_var ;
724       l_row_notfound := lock_csr%NOTFOUND;
725       CLOSE lock_csr;
726       EXCEPTION
727         WHEN e_resource_busy THEN
728 
729           IF (lock_csr%ISOPEN) THEN
730             CLOSE lock_csr;
731           END IF;
732           okl_api.set_message(g_fnd_app
733                              ,g_form_unable_to_reserve_rec);
734           RAISE app_exceptions.record_lock_exception;
735     END;
736 
737     IF (l_row_notfound) THEN
738       okl_api.set_message(g_fnd_app
739                          ,g_form_record_deleted);
740       RAISE okl_api.g_exception_error;
741     END IF;
742     okl_api.end_activity(x_msg_count
743                         ,x_msg_data);
744     EXCEPTION
745       WHEN g_exception_halt_validation THEN
746         x_return_status := okl_api.handle_exceptions(l_api_name
747                                                     ,g_pkg_name
748                                                     ,'OKL_API.G_RET_STS_ERROR'
749                                                     ,x_msg_count
750                                                     ,x_msg_data
751                                                     ,'_PVT');
752       WHEN okl_api.g_exception_error THEN
753         x_return_status := okl_api.handle_exceptions(l_api_name
754                                                     ,g_pkg_name
755                                                     ,'OKL_API.G_RET_STS_ERROR'
756                                                     ,x_msg_count
757                                                     ,x_msg_data
758                                                     ,'_PVT');
759       WHEN okl_api.g_exception_unexpected_error THEN
760         x_return_status := okl_api.handle_exceptions(l_api_name
761                                                     ,g_pkg_name
762                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
763                                                     ,x_msg_count
764                                                     ,x_msg_data
765                                                     ,'_PVT');
766       WHEN OTHERS THEN
767         x_return_status := okl_api.handle_exceptions(l_api_name
768                                                     ,g_pkg_name
769                                                     ,'OTHERS'
770                                                     ,x_msg_count
771                                                     ,x_msg_data
772                                                     ,'_PVT');
773   END lock_row;
774 
775   ---------------------------------------
776   -- lock_row_v --
777   ---------------------------------------
778 
779   PROCEDURE lock_row(p_api_version   IN            NUMBER
780                     ,p_init_msg_list IN            VARCHAR2
781                     ,x_return_status    OUT NOCOPY VARCHAR2
782                     ,x_msg_count        OUT NOCOPY NUMBER
783                     ,x_msg_data         OUT NOCOPY VARCHAR2
784                     ,p_pamv_rec      IN            okl_pamv_rec) IS
785     l_api_version        CONSTANT NUMBER        := 1;
786     l_api_name           CONSTANT VARCHAR2(30)  := 'V_lock_row';
787     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
788     l_pamb_rec                    okl_pamb_rec;
789     l_pamtl_rec                   okl_pamtl_rec;
790 
791   BEGIN
792     l_return_status := okl_api.start_activity(l_api_name
793                                              ,g_pkg_name
794                                              ,p_init_msg_list
795                                              ,l_api_version
796                                              ,p_api_version
797                                              ,'_PVT'
798                                              ,x_return_status);
799 
800     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
801       RAISE okl_api.g_exception_unexpected_error;
802     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
803       RAISE okl_api.g_exception_error;
804     END IF;
805 
806     --------------------------------------
807     -- Move VIEW record to "Child" records
808     --------------------------------------
809 
810     migrate(p_pamv_rec
811            ,l_pamb_rec);
812     migrate(p_pamv_rec
813            ,l_pamtl_rec);
814 
815     --------------------------------------------
816     -- Call the LOCK_ROW for each child record
817     --------------------------------------------
818 
819     lock_row(p_init_msg_list
820             ,x_return_status
821             ,x_msg_count
822             ,x_msg_data
823             ,l_pamb_rec);
824 
825     IF (x_return_status = okl_api.g_ret_sts_unexp_error) THEN
826       RAISE okl_api.g_exception_unexpected_error;
827     ELSIF (x_return_status = okl_api.g_ret_sts_error) THEN
828       RAISE okl_api.g_exception_error;
829     END IF;
830     lock_row(p_init_msg_list
831             ,x_return_status
832             ,x_msg_count
833             ,x_msg_data
834             ,l_pamtl_rec);
835 
836     IF (x_return_status = okl_api.g_ret_sts_unexp_error) THEN
837       RAISE okl_api.g_exception_unexpected_error;
838     ELSIF (x_return_status = okl_api.g_ret_sts_error) THEN
839       RAISE okl_api.g_exception_error;
840     END IF;
841     okl_api.end_activity(x_msg_count
842                         ,x_msg_data);
843     EXCEPTION
844       WHEN g_exception_halt_validation THEN
845         x_return_status := okl_api.handle_exceptions(l_api_name
846                                                     ,g_pkg_name
847                                                     ,'OKL_API.G_RET_STS_ERROR'
848                                                     ,x_msg_count
849                                                     ,x_msg_data
850                                                     ,'_PVT');
851       WHEN okl_api.g_exception_error THEN
852         x_return_status := okl_api.handle_exceptions(l_api_name
853                                                     ,g_pkg_name
854                                                     ,'OKL_API.G_RET_STS_ERROR'
855                                                     ,x_msg_count
856                                                     ,x_msg_data
857                                                     ,'_PVT');
858       WHEN okl_api.g_exception_unexpected_error THEN
859         x_return_status := okl_api.handle_exceptions(l_api_name
860                                                     ,g_pkg_name
861                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
862                                                     ,x_msg_count
863                                                     ,x_msg_data
864                                                     ,'_PVT');
865       WHEN OTHERS THEN
866         x_return_status := okl_api.handle_exceptions(l_api_name
867                                                     ,g_pkg_name
868                                                     ,'OTHERS'
869                                                     ,x_msg_count
870                                                     ,x_msg_data
871                                                     ,'_PVT');
872   END lock_row;
873 
874   --------------------------------------
875   -- PL/SQL TBL lock_row_tbl --
876   --------------------------------------
877 
878   PROCEDURE lock_row(p_api_version   IN            NUMBER
879                     ,p_init_msg_list IN            VARCHAR2
880                     ,x_return_status    OUT NOCOPY VARCHAR2
881                     ,x_msg_count        OUT NOCOPY NUMBER
882                     ,x_msg_data         OUT NOCOPY VARCHAR2
883                     ,p_pamv_tbl      IN            okl_pamv_tbl) IS
884     l_api_version        CONSTANT NUMBER       := 1;
885     l_api_name           CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
886     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
887 
888     -- Begin Post-Generation Change
889     -- overall error status
890 
891     l_overall_status              VARCHAR2(1)  := okl_api.g_ret_sts_success;
892 
893     -- End Post-Generation Change
894 
895     i                             NUMBER       := 0;
896 
897   BEGIN
898     okl_api.init_msg_list(p_init_msg_list);
899 
900     -- Make sure PL/SQL table has records in it before passing
901 
902     IF (p_pamv_tbl.COUNT > 0) THEN
903       i := p_pamv_tbl.FIRST;
904 
905       LOOP
906         lock_row(p_api_version   =>            p_api_version
907                 ,p_init_msg_list =>            okl_api.g_false
908                 ,x_return_status =>            x_return_status
909                 ,x_msg_count     =>            x_msg_count
910                 ,x_msg_data      =>            x_msg_data
911                 ,p_pamv_rec      =>            p_pamv_tbl(i));
912 
913         -- Begin Post-Generation Change
914         -- store the highest degree of error
915 
916         IF x_return_status <> okl_api.g_ret_sts_success THEN
917           IF l_overall_status <> okl_api.g_ret_sts_unexp_error THEN
918             l_overall_status := x_return_status;
919           END IF;
920         END IF;
921 
922         -- End Post-Generation Change
923 
924         EXIT WHEN(i = p_pamv_tbl.LAST);
925         i := p_pamv_tbl.next(i);
926       END LOOP;
927 
928       -- Begin Post-Generation Change
929       -- return overall status
930 
931       x_return_status := l_overall_status;
932 
933     -- End Post-Generation Change
934 
935     END IF;
936 
937     EXCEPTION
938       WHEN g_exception_halt_validation THEN
939         x_return_status := okl_api.handle_exceptions(l_api_name
940                                                     ,g_pkg_name
941                                                     ,'OKL_API.G_RET_STS_ERROR'
942                                                     ,x_msg_count
943                                                     ,x_msg_data
944                                                     ,'_PVT');
945       WHEN okl_api.g_exception_error THEN
946         x_return_status := okl_api.handle_exceptions(l_api_name
947                                                     ,g_pkg_name
948                                                     ,'OKL_API.G_RET_STS_ERROR'
949                                                     ,x_msg_count
950                                                     ,x_msg_data
951                                                     ,'_PVT');
952       WHEN okl_api.g_exception_unexpected_error THEN
953         x_return_status := okl_api.handle_exceptions(l_api_name
954                                                     ,g_pkg_name
955                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
956                                                     ,x_msg_count
957                                                     ,x_msg_data
958                                                     ,'_PVT');
959       WHEN OTHERS THEN
960         x_return_status := okl_api.handle_exceptions(l_api_name
961                                                     ,g_pkg_name
962                                                     ,'OTHERS'
963                                                     ,x_msg_count
964                                                     ,x_msg_data
965                                                     ,'_PVT');
966   END lock_row;
967 
968   -- get the sequence id
969 
970   FUNCTION get_seq_id RETURN NUMBER IS
971 
972   BEGIN
973     RETURN(okc_p_util.raw_to_number(sys_guid()));
974   END get_seq_id;
975 
976   -- validation of Adjusment Matrix Id
977 
978   FUNCTION validate_adj_mat_id(p_adj_mat_id IN NUMBER) RETURN VARCHAR2 IS
979     l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
980 
981   BEGIN
982 
983     -- ADJ_MAT_ID is a required field
984 
985     IF (p_adj_mat_id IS NULL OR p_adj_mat_id = okl_api.g_miss_num) THEN
986       okl_api.set_message(p_app_name     =>             g_app_name
987                          ,p_msg_name     =>             g_required_value
988                          ,p_token1       =>             g_col_name_token
989                          ,p_token1_value =>             'ADJ_MAT_ID');
990 
991       -- notify caller of an error
992 
993       l_return_status := okl_api.g_ret_sts_error;
994 
995       -- halt further validation of this column
996 
997       RAISE g_exception_halt_validation;
998     END IF;
999     RETURN(l_return_status);
1000     EXCEPTION
1001       WHEN g_exception_halt_validation THEN
1002 
1003         -- no proccessing required. Validation can continue with the next column
1004 
1005         NULL;
1006       WHEN OTHERS THEN
1007 
1008         -- store SQL error message on message stack for caller
1009 
1010         okl_api.set_message(p_app_name     =>             g_app_name
1011                            ,p_msg_name     =>             g_unexpected_error
1012                            ,p_token1       =>             g_sqlcode_token
1013                            ,p_token1_value =>             sqlcode
1014                            ,p_token2       =>             g_sqlerrm_token
1015                            ,p_token2_value =>             sqlerrm);
1016 
1017         -- notify caller of an UNEXPECTED error
1018 
1019         l_return_status := okl_api.g_ret_sts_unexp_error;
1020         RETURN(l_return_status);
1021   END validate_adj_mat_id;
1022 
1023   -- Validation of the org Id
1024 
1025   FUNCTION validate_org_id(p_org_id IN NUMBER) RETURN VARCHAR2 IS
1026     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1027 
1028   BEGIN
1029 
1030     -- data is required
1031 
1032     IF (p_org_id IS NULL) OR (p_org_id = okl_api.g_miss_num) THEN
1033       okl_api.set_message(p_app_name     =>             g_app_name
1034                          ,p_msg_name     =>             g_required_value
1035                          ,p_token1       =>             g_col_name_token
1036                          ,p_token1_value =>             'org_id');
1037       x_return_status := okl_api.g_ret_sts_error;
1038 
1039       -- halt further validation of this column
1040 
1041       RAISE g_exception_halt_validation;
1042     END IF;
1043 
1044     -- check org id validity using the generic function okl_util.check_org_id()
1045 
1046     x_return_status := okl_util.check_org_id(TO_CHAR(p_org_id));
1047 
1048     IF (x_return_status = okl_api.g_ret_sts_error) THEN
1049       okl_api.set_message(p_app_name     =>             g_app_name
1050                          ,p_msg_name     =>             g_invalid_value
1051                          ,p_token1       =>             g_col_name_token
1052                          ,p_token1_value =>             'org_id');
1053 
1054       -- notify caller of an error
1055 
1056       RAISE g_exception_halt_validation;
1057     ELSIF (x_return_status = okl_api.g_ret_sts_unexp_error) THEN
1058 
1059       -- notify caller of an error
1060 
1061       RAISE g_exception_halt_validation;
1062     END IF;
1063     RETURN(x_return_status);
1064     EXCEPTION
1065       WHEN g_exception_halt_validation THEN
1066 
1067         -- No action necessary. Validation can continue to next attribute/column
1068 
1069         RETURN(x_return_status);
1070       WHEN OTHERS THEN
1071 
1072         -- store SQL error message on message stack for caller
1073 
1074         okl_api.set_message(p_app_name     =>             g_app_name
1075                            ,p_msg_name     =>             g_unexpected_error
1076                            ,p_token1       =>             g_sqlcode_token
1077                            ,p_token1_value =>             sqlcode
1078                            ,p_token2       =>             g_sqlerrm_token
1079                            ,p_token2_value =>             sqlerrm);
1080 
1081         -- notify caller of an UNEXPECTED error
1082 
1083         x_return_status := okl_api.g_ret_sts_unexp_error;
1084         RETURN(x_return_status);
1085   END validate_org_id;
1086 
1087   -- Validation of the currency code
1088 
1089   FUNCTION validate_currency_code(p_currency_code IN VARCHAR2) RETURN VARCHAR2 IS
1090 
1091     -- initialize the return status
1092 
1093     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1094 
1095   BEGIN
1096 
1097     -- data is required
1098 
1099     IF (p_currency_code IS NULL) OR (p_currency_code = okl_api.g_miss_char) THEN
1100       okl_api.set_message(p_app_name     =>             g_app_name
1101                          ,p_msg_name     =>             g_required_value
1102                          ,p_token1       =>             g_col_name_token
1103                          ,p_token1_value =>             'currency_code');
1104 
1105       -- halt further validation of this column
1106 
1107       RAISE g_exception_halt_validation;
1108     END IF;
1109 
1110     -- check from currency values using the generic okl_util.validate_currency_code
1111 
1112     x_return_status := okl_accounting_util.validate_currency_code(p_currency_code);
1113 
1114     IF (x_return_status <> okl_api.g_true) THEN
1115       okl_api.set_message(p_app_name     =>             g_app_name
1116                          ,p_msg_name     =>             g_invalid_value
1117                          ,p_token1       =>             g_col_name_token
1118                          ,p_token1_value =>             'currency_code');
1119 
1120       -- halt further validation of this column
1121 
1122       RAISE g_exception_halt_validation;
1123     END IF;
1124     RETURN(x_return_status);
1125     EXCEPTION
1126       WHEN g_exception_halt_validation THEN
1127         x_return_status := okl_api.g_ret_sts_error;
1128         RETURN(x_return_status);
1129       WHEN OTHERS THEN
1130 
1131         -- store SQL error message on message stack for caller
1132 
1133         okl_api.set_message(p_app_name     =>             g_app_name
1134                            ,p_msg_name     =>             g_unexpected_error
1135                            ,p_token1       =>             g_sqlcode_token
1136                            ,p_token1_value =>             sqlcode
1137                            ,p_token2       =>             g_sqlerrm_token
1138                            ,p_token2_value =>             sqlerrm);
1139 
1140         -- notify caller of an UNEXPECTED error
1141 
1142         x_return_status := okl_api.g_ret_sts_unexp_error;
1143         RETURN(x_return_status);
1144   END validate_currency_code;
1145 
1146   FUNCTION validate_adj_mat_type_code(p_adj_mat_type_code IN VARCHAR2) RETURN VARCHAR2 IS
1147     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1148 
1149   BEGIN
1150 
1151     IF (p_adj_mat_type_code IS NULL) OR (p_adj_mat_type_code = okl_api.g_miss_char) THEN
1152       okl_api.set_message(p_app_name     =>             g_app_name
1153                          ,p_msg_name     =>             g_required_value
1154                          ,p_token1       =>             g_col_name_token
1155                          ,p_token1_value =>             'ADJ_MAT_TYPE_CODE');
1156 
1157       -- notify caller of an error
1158 
1159       x_return_status := okl_api.g_ret_sts_error;
1160 
1161       -- halt further validation of this column
1162 
1163       RAISE g_exception_halt_validation;
1164     END IF;
1165 
1166     -- Lookup Code Validation
1167 
1168     x_return_status := okl_util.check_lookup_code(p_lookup_type =>              'OKL_ADJ_MAT_TYPES'
1169                                                  ,p_lookup_code =>              p_adj_mat_type_code);
1170 
1171     IF (x_return_status = okl_api.g_ret_sts_error) THEN
1172       okl_api.set_message(p_app_name     =>             g_app_name
1173                          ,p_msg_name     =>             g_invalid_value
1174                          ,p_token1       =>             g_col_name_token
1175                          ,p_token1_value =>             'ADJ_MAT_TYPE_CODE');  -- notify caller of an error
1176       RAISE g_exception_halt_validation;
1177     ELSIF (x_return_status = okl_api.g_ret_sts_unexp_error) THEN
1178 
1179       -- notify caller of an error
1180 
1181       x_return_status := okl_api.g_ret_sts_unexp_error;
1182       RAISE g_exception_halt_validation;
1183     END IF;
1184     RETURN(x_return_status);
1185     EXCEPTION
1186       WHEN g_exception_halt_validation THEN
1187 
1188         -- no processing necessary;  validation can continue
1189         -- with the next column
1190 
1191         RETURN(x_return_status);
1192       WHEN OTHERS THEN
1193 
1194         -- store SQL error message on message stack for caller
1195 
1196         okl_api.set_message(p_app_name     =>             g_app_name
1197                            ,p_msg_name     =>             g_unexpected_error
1198                            ,p_token1       =>             g_sqlcode_token
1199                            ,p_token1_value =>             sqlcode
1200                            ,p_token2       =>             g_sqlerrm_token
1201                            ,p_token2_value =>             sqlerrm);
1202 
1203         -- notify caller of an UNEXPECTED error
1204 
1205         x_return_status := okl_api.g_ret_sts_unexp_error;
1206         RETURN(x_return_status);
1207   END validate_adj_mat_type_code;
1208 
1209   FUNCTION validate_orig_adj_mat_id(p_orig_adj_mat_id IN NUMBER) RETURN VARCHAR2 IS
1210     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1211 
1212     CURSOR adj_matrix_exists_csr IS
1213       SELECT 'x'
1214       FROM   okl_fe_adj_mat_all_b
1215       WHERE  adj_mat_id = p_orig_adj_mat_id;
1216     l_dummy_var                  VARCHAR2(1) := '?';
1217 
1218   BEGIN
1219 
1220     IF (p_orig_adj_mat_id IS NOT NULL AND p_orig_adj_mat_id <> okl_api.g_miss_num) THEN
1221       OPEN adj_matrix_exists_csr;
1222       FETCH adj_matrix_exists_csr INTO l_dummy_var ;
1223       CLOSE adj_matrix_exists_csr;
1224 
1225       -- if l_dummy_var is still set to default, data was not found
1226 
1227       IF (l_dummy_var = '?') THEN
1228         okl_api.set_message(p_app_name     =>             g_app_name
1229                            ,p_msg_name     =>             g_invalid_value
1230                            ,p_token1       =>             g_col_name_token
1231                            ,p_token1_value =>             'ORIG_ADJ_MAT_ID');
1232 
1233         -- notify caller of an error
1234 
1235         x_return_status := okl_api.g_ret_sts_error;
1236         RAISE g_exception_halt_validation;
1237       END IF;
1238     END IF;
1239     RETURN x_return_status;
1240     EXCEPTION
1241       WHEN g_exception_halt_validation THEN
1242 
1243         -- no processing necessary;  validation can continue
1244         -- with the next column
1245 
1246         RETURN x_return_status;
1247       WHEN OTHERS THEN
1248 
1249         -- store SQL error message on message stack for caller
1250 
1251         okl_api.set_message(p_app_name     =>             g_app_name
1252                            ,p_msg_name     =>             g_unexpected_error
1253                            ,p_token1       =>             g_sqlcode_token
1254                            ,p_token1_value =>             sqlcode
1255                            ,p_token2       =>             g_sqlerrm_token
1256                            ,p_token2_value =>             sqlerrm);
1257 
1258         -- notify caller of an UNEXPECTED error
1259 
1260         x_return_status := okl_api.g_ret_sts_unexp_error;
1261 
1262         -- verify that cursor was closed
1263 
1264         IF adj_matrix_exists_csr%ISOPEN THEN
1265           CLOSE adj_matrix_exists_csr;
1266         END IF;
1267         RETURN x_return_status;
1268   END validate_orig_adj_mat_id;
1269 
1270   FUNCTION validate_sts_code(p_sts_code IN VARCHAR2) RETURN VARCHAR2 IS
1271 
1272     --initialize the Return Status
1273 
1274     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1275 
1276   BEGIN
1277 
1278     -- Column is mandatory
1279 
1280     IF (p_sts_code IS NULL OR p_sts_code = okl_api.g_miss_char) THEN
1281       okl_api.set_message(p_app_name     =>             g_app_name
1282                          ,p_msg_name     =>             g_required_value
1283                          ,p_token1       =>             g_col_name_token
1284                          ,p_token1_value =>             'sts_code');
1285 
1286       -- notify caller of an error
1287 
1288       x_return_status := okl_api.g_ret_sts_error;
1289       RAISE g_exception_halt_validation;
1290     END IF;
1291 
1292     -- Lookup Code Validation
1293 
1294     x_return_status := okl_util.check_lookup_code(p_lookup_type =>              'OKL_PRC_STATUS'
1295                                                  ,p_lookup_code =>              p_sts_code);
1296 
1297     IF (x_return_status = okl_api.g_ret_sts_error) THEN
1298       okl_api.set_message(p_app_name     =>             g_app_name
1299                          ,p_msg_name     =>             g_invalid_value
1300                          ,p_token1       =>             g_col_name_token
1301                          ,p_token1_value =>             'sts_code');  -- notify caller of an error
1302       RAISE g_exception_halt_validation;
1303     ELSIF (x_return_status = okl_api.g_ret_sts_unexp_error) THEN
1304 
1305       -- notify caller of an error
1306 
1307       x_return_status := okl_api.g_ret_sts_unexp_error;
1308       RAISE g_exception_halt_validation;
1309     END IF;
1310     RETURN x_return_status;
1311     EXCEPTION
1312       WHEN g_exception_halt_validation THEN
1313 
1314         -- no processing necessary;  validation can continue
1315         -- with the next column
1316 
1317         RETURN x_return_status;
1318       WHEN OTHERS THEN
1319 
1320         -- store SQL error message on message stack for caller
1321 
1322         okl_api.set_message(p_app_name     =>             g_app_name
1323                            ,p_msg_name     =>             g_unexpected_error
1324                            ,p_token1       =>             g_sqlcode_token
1325                            ,p_token1_value =>             sqlcode
1326                            ,p_token2       =>             g_sqlerrm_token
1327                            ,p_token2_value =>             sqlerrm);
1328 
1329         -- notify caller of an UNEXPECTED error
1330 
1331         x_return_status := okl_api.g_ret_sts_unexp_error;
1332         RETURN x_return_status;
1333   END validate_sts_code;
1334 
1335   FUNCTION validate_effective_from_date(p_effective_from_date IN DATE) RETURN VARCHAR2 IS
1336 
1337     -- initialize the return status
1338 
1339     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1340 
1341   BEGIN
1342 
1343     IF (p_effective_from_date IS NULL OR p_effective_from_date = okl_api.g_miss_date) THEN
1344       okl_api.set_message(p_app_name     =>             g_app_name
1345                          ,p_msg_name     =>             g_required_value
1346                          ,p_token1       =>             g_col_name_token
1347                          ,p_token1_value =>             'EFFECTIVE_FROM_DATE');
1348 
1349       -- notify caller of an error
1350 
1351       x_return_status := okl_api.g_ret_sts_error;
1352       RAISE g_exception_halt_validation;
1353     END IF;
1354     RETURN x_return_status;
1355     EXCEPTION
1356       WHEN g_exception_halt_validation THEN
1357 
1358         -- no processing necessary;  validation can continue
1359         -- with the next column
1360 
1361         RETURN x_return_status;
1362       WHEN OTHERS THEN
1363 
1364         -- store SQL error message on message stack for caller
1365 
1366         okl_api.set_message(p_app_name     =>             g_app_name
1367                            ,p_msg_name     =>             g_unexpected_error
1368                            ,p_token1       =>             g_sqlcode_token
1369                            ,p_token1_value =>             sqlcode
1370                            ,p_token2       =>             g_sqlerrm_token
1371                            ,p_token2_value =>             sqlerrm);
1372 
1373         -- notify caller of an UNEXPECTED error
1374 
1375         x_return_status := okl_api.g_ret_sts_unexp_error;
1376         RETURN x_return_status;
1377   END validate_effective_from_date;
1378 
1379   FUNCTION validate_attributes(p_pamv_rec IN okl_pamv_rec) RETURN VARCHAR2 IS
1380     l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1381     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1382 
1383   BEGIN
1384 
1385     -- validate the adjustment matrix id
1386 
1387     l_return_status := validate_adj_mat_id(p_pamv_rec.adj_mat_id);
1388 
1389     -- store the highest degree of error
1390 
1391     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1392       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1393         x_return_status := l_return_status;
1394       END IF;
1395     END IF;
1396 
1397     -- validate the org_id
1398 
1399     l_return_status := validate_org_id(p_pamv_rec.org_id);
1400 
1401     -- store the highest degree of error
1402 
1403     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1404       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1405         x_return_status := l_return_status;
1406       END IF;
1407     END IF;
1408 
1409     -- validate the currency code
1410 
1411     l_return_status := validate_currency_code(p_pamv_rec.currency_code);
1412 
1413     -- store the highest degree of error
1414 
1415     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1416       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1417         x_return_status := l_return_status;
1418       END IF;
1419     END IF;
1420 
1421     -- validate the Adjustment matrix type
1422 
1423     l_return_status := validate_adj_mat_type_code(p_pamv_rec.adj_mat_type_code);
1424 
1425     -- store the highest degree of error
1426 
1427     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1428       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1429         x_return_status := l_return_status;
1430       END IF;
1431     END IF;
1432 
1433     -- validate the Adjusment matrix Id used for duplicate
1434 
1435     l_return_status := validate_orig_adj_mat_id(p_pamv_rec.orig_adj_mat_id);
1436 
1437     -- store the highest degree of error
1438 
1439     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1440       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1441         x_return_status := l_return_status;
1442       END IF;
1443     END IF;
1444 
1445     -- validate the status of the header
1446 
1447     l_return_status := validate_sts_code(p_pamv_rec.sts_code);
1448 
1449     -- store the highest degree of error
1450 
1451     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1452       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1453         x_return_status := l_return_status;
1454       END IF;
1455     END IF;
1456 
1457     -- validate the effective from date
1458 
1459     l_return_status := validate_effective_from_date(p_pamv_rec.effective_from_date);
1460 
1461     -- store the highest degree of error
1462 
1463     IF (l_return_status <> okl_api.g_ret_sts_success) THEN
1464       IF (x_return_status <> okl_api.g_ret_sts_unexp_error) THEN
1465         x_return_status := l_return_status;
1466       END IF;
1467     END IF;
1468     RETURN(x_return_status);
1469   END validate_attributes;
1470 
1471   FUNCTION validate_record(p_pamv_rec IN okl_pamv_rec) RETURN VARCHAR2 IS
1472     l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1473     x_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1474 
1475   BEGIN
1476 
1477     IF (p_pamv_rec.effective_to_date IS NOT NULL) THEN
1478       IF (p_pamv_rec.effective_from_date > p_pamv_rec.effective_to_date) THEN
1479         okl_api.set_message(p_app_name     =>             g_app_name
1480                            ,p_msg_name     =>             'OKL_INVALID_EFFECTIVE_TO');
1481         x_return_status := okl_api.g_ret_sts_error;
1482       END IF;
1483     END IF;
1484     RETURN x_return_status;
1485     EXCEPTION
1486       WHEN g_exception_halt_validation THEN
1487         NULL;
1488         x_return_status := okl_api.g_ret_sts_error;
1489         RETURN x_return_status;
1490       WHEN OTHERS THEN
1491 
1492         -- store SQL error message on message stack for caller
1493 
1494         okl_api.set_message(p_app_name     =>             g_app_name
1495                            ,p_msg_name     =>             g_unexpected_error
1496                            ,p_token1       =>             g_sqlcode_token
1497                            ,p_token1_value =>             sqlcode
1498                            ,p_token2       =>             g_sqlerrm_token
1499                            ,p_token2_value =>             sqlerrm);
1500 
1501         -- notify caller of an UNEXPECTED error
1502 
1503         x_return_status := okl_api.g_ret_sts_error;
1504         RETURN(x_return_status);
1505   END validate_record;
1506 
1507   --------------------------------------------------------------------------------
1508   -- Procedure insert_row_b
1509   --------------------------------------------------------------------------------
1510 
1511   PROCEDURE insert_row(p_api_version   IN            NUMBER
1512                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
1513                       ,x_return_status    OUT NOCOPY VARCHAR2
1514                       ,x_msg_count        OUT NOCOPY NUMBER
1515                       ,x_msg_data         OUT NOCOPY VARCHAR2
1516                       ,p_pamb_rec      IN            okl_pamb_rec
1517                       ,x_pamb_rec         OUT NOCOPY okl_pamb_rec) IS
1518     l_api_version        CONSTANT NUMBER       := 1;
1519     l_api_name           CONSTANT VARCHAR2(30) := 'insert_row';
1520     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
1521     l_pamb_rec                    okl_pamb_rec := p_pamb_rec;
1522 
1523     FUNCTION set_attributes(p_pamb_rec IN            okl_pamb_rec
1524                            ,x_pamb_rec    OUT NOCOPY okl_pamb_rec) RETURN VARCHAR2 IS
1525       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1526 
1527     BEGIN
1528       x_pamb_rec := p_pamb_rec;
1529       RETURN(l_return_status);
1530     END set_attributes;
1531 
1532   BEGIN
1533     l_return_status := okl_api.start_activity(l_api_name
1534                                              ,g_pkg_name
1535                                              ,p_init_msg_list
1536                                              ,l_api_version
1537                                              ,p_api_version
1538                                              ,'_PVT'
1539                                              ,x_return_status);
1540 
1541     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1542       RAISE okl_api.g_exception_unexpected_error;
1543     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1544       RAISE okl_api.g_exception_error;
1545     END IF;
1546 
1547     --Setting Item Attributes
1548 
1549     l_return_status := set_attributes(p_pamb_rec
1550                                      ,l_pamb_rec);
1551 
1552     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1553       RAISE okl_api.g_exception_unexpected_error;
1554     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1555       RAISE okl_api.g_exception_error;
1556     END IF;
1557 
1558     INSERT INTO okl_fe_adj_mat_all_b
1559                (adj_mat_id
1560                ,adj_mat_name
1561                ,object_version_number
1562                ,org_id
1563                ,currency_code
1564                ,adj_mat_type_code
1565                ,orig_adj_mat_id
1566                ,sts_code
1567                ,effective_from_date
1568                ,effective_to_date
1569                ,attribute_category
1570                ,attribute1
1571                ,attribute2
1572                ,attribute3
1573                ,attribute4
1574                ,attribute5
1575                ,attribute6
1576                ,attribute7
1577                ,attribute8
1578                ,attribute9
1579                ,attribute10
1580                ,attribute11
1581                ,attribute12
1582                ,attribute13
1583                ,attribute14
1584                ,attribute15
1585                ,created_by
1586                ,creation_date
1587                ,last_updated_by
1588                ,last_update_date
1589                ,last_update_login)
1590     VALUES     (l_pamb_rec.adj_mat_id
1591                ,l_pamb_rec.adj_mat_name
1592                ,l_pamb_rec.object_version_number
1593                ,l_pamb_rec.org_id
1594                ,l_pamb_rec.currency_code
1595                ,l_pamb_rec.adj_mat_type_code
1596                ,l_pamb_rec.orig_adj_mat_id
1597                ,l_pamb_rec.sts_code
1598                ,l_pamb_rec.effective_from_date
1599                ,l_pamb_rec.effective_to_date
1600                ,l_pamb_rec.attribute_category
1601                ,l_pamb_rec.attribute1
1602                ,l_pamb_rec.attribute2
1603                ,l_pamb_rec.attribute3
1604                ,l_pamb_rec.attribute4
1605                ,l_pamb_rec.attribute5
1606                ,l_pamb_rec.attribute6
1607                ,l_pamb_rec.attribute7
1608                ,l_pamb_rec.attribute8
1609                ,l_pamb_rec.attribute9
1610                ,l_pamb_rec.attribute10
1611                ,l_pamb_rec.attribute11
1612                ,l_pamb_rec.attribute12
1613                ,l_pamb_rec.attribute13
1614                ,l_pamb_rec.attribute14
1615                ,l_pamb_rec.attribute15
1616                ,l_pamb_rec.created_by
1617                ,l_pamb_rec.creation_date
1618                ,l_pamb_rec.last_updated_by
1619                ,l_pamb_rec.last_update_date
1620                ,l_pamb_rec.last_update_login);
1621 
1622     --Set OUT Values
1623 
1624     x_pamb_rec := l_pamb_rec;
1625     okl_api.end_activity(x_msg_count
1626                         ,x_msg_data);
1627     EXCEPTION
1628       WHEN g_exception_halt_validation THEN
1629 
1630         -- No action necessary. Validation can continue to next attribute/column
1631 
1632         NULL;
1633       WHEN okl_api.g_exception_error THEN
1634         x_return_status := okl_api.handle_exceptions(l_api_name
1635                                                     ,g_pkg_name
1636                                                     ,'OKL_API.G_RET_STS_ERROR'
1637                                                     ,x_msg_count
1638                                                     ,x_msg_data
1639                                                     ,'_PVT');
1640       WHEN okl_api.g_exception_unexpected_error THEN
1641         x_return_status := okl_api.handle_exceptions(l_api_name
1642                                                     ,g_pkg_name
1643                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
1644                                                     ,x_msg_count
1645                                                     ,x_msg_data
1646                                                     ,'_PVT');
1647       WHEN OTHERS THEN
1648         x_return_status := okl_api.handle_exceptions(l_api_name
1649                                                     ,g_pkg_name
1650                                                     ,'OTHERS'
1651                                                     ,x_msg_count
1652                                                     ,x_msg_data
1653                                                     ,'_PVT');
1654   END insert_row;
1655 
1656   --------------------------------------------------------------------------------
1657   -- Procedure insert_row_tl
1658   --------------------------------------------------------------------------------
1659 
1660   PROCEDURE insert_row(p_api_version   IN            NUMBER
1661                       ,p_init_msg_list IN            VARCHAR2      DEFAULT okl_api.g_false
1662                       ,x_return_status    OUT NOCOPY VARCHAR2
1663                       ,x_msg_count        OUT NOCOPY NUMBER
1664                       ,x_msg_data         OUT NOCOPY VARCHAR2
1665                       ,p_pamtl_rec     IN            okl_pamtl_rec
1666                       ,x_pamtl_rec        OUT NOCOPY okl_pamtl_rec) IS
1667     l_api_version        CONSTANT NUMBER        := 1;
1668     l_api_name           CONSTANT VARCHAR2(30)  := 'insert_row';
1669     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
1670     l_pamtl_rec                   okl_pamtl_rec := p_pamtl_rec;
1671 
1672     CURSOR get_languages IS
1673       SELECT *
1674       FROM   fnd_languages
1675       WHERE  installed_flag IN('I', 'B');
1676 
1677     FUNCTION set_attributes(p_pamtl_rec IN            okl_pamtl_rec
1678                            ,x_pamtl_rec    OUT NOCOPY okl_pamtl_rec) RETURN VARCHAR2 IS
1679       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1680 
1681     BEGIN
1682       x_pamtl_rec := p_pamtl_rec;
1683       x_pamtl_rec.language := USERENV('LANG');
1684       x_pamtl_rec.source_lang := USERENV('LANG');
1685       x_pamtl_rec.sfwt_flag := 'N';
1686       RETURN(l_return_status);
1687     END set_attributes;
1688 
1689   BEGIN
1690     l_return_status := okl_api.start_activity(l_api_name
1691                                              ,g_pkg_name
1692                                              ,p_init_msg_list
1693                                              ,l_api_version
1694                                              ,p_api_version
1695                                              ,'_PVT'
1696                                              ,x_return_status);
1697 
1698     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1699       RAISE okl_api.g_exception_unexpected_error;
1700     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1701       RAISE okl_api.g_exception_error;
1702     END IF;
1703 
1704     --Setting Item Attributes
1705 
1706     l_return_status := set_attributes(p_pamtl_rec
1707                                      ,l_pamtl_rec);
1708 
1709     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1710       RAISE okl_api.g_exception_unexpected_error;
1711     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1712       RAISE okl_api.g_exception_error;
1713     END IF;
1714 
1715     FOR l_lang_rec IN get_languages LOOP
1716       l_pamtl_rec.language := l_lang_rec.language_code;
1717 
1718       INSERT INTO okl_fe_adj_mat_all_tl
1719                  (adj_mat_id
1720                  ,adj_mat_desc
1721                  ,language
1722                  ,source_lang
1723                  ,sfwt_flag
1724                  ,created_by
1725                  ,creation_date
1726                  ,last_updated_by
1727                  ,last_update_date
1728                  ,last_update_login)
1729       VALUES     (l_pamtl_rec.adj_mat_id
1730                  ,l_pamtl_rec.adj_mat_desc
1731                  ,l_pamtl_rec.language
1732                  ,l_pamtl_rec.source_lang
1733                  ,l_pamtl_rec.sfwt_flag
1734                  ,l_pamtl_rec.created_by
1735                  ,l_pamtl_rec.creation_date
1736                  ,l_pamtl_rec.last_updated_by
1737                  ,l_pamtl_rec.last_update_date
1738                  ,l_pamtl_rec.last_update_login);
1739 
1740     END LOOP;
1741 
1742     --Set OUT Values
1743 
1744     x_pamtl_rec := l_pamtl_rec;
1745     okl_api.end_activity(x_msg_count
1746                         ,x_msg_data);
1747     EXCEPTION
1748       WHEN g_exception_halt_validation THEN
1749 
1750         -- No action necessary. Validation can continue to next attribute/column
1751 
1752         NULL;
1753       WHEN okl_api.g_exception_error THEN
1754         x_return_status := okl_api.handle_exceptions(l_api_name
1755                                                     ,g_pkg_name
1756                                                     ,'OKL_API.G_RET_STS_ERROR'
1757                                                     ,x_msg_count
1758                                                     ,x_msg_data
1759                                                     ,'_PVT');
1760       WHEN okl_api.g_exception_unexpected_error THEN
1761         x_return_status := okl_api.handle_exceptions(l_api_name
1762                                                     ,g_pkg_name
1763                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
1764                                                     ,x_msg_count
1765                                                     ,x_msg_data
1766                                                     ,'_PVT');
1767       WHEN OTHERS THEN
1768         x_return_status := okl_api.handle_exceptions(l_api_name
1769                                                     ,g_pkg_name
1770                                                     ,'OTHERS'
1771                                                     ,x_msg_count
1772                                                     ,x_msg_data
1773                                                     ,'_PVT');
1774   END insert_row;
1775 
1776   --------------------------------------------------------------------------------
1777   -- Procedure insert_row_v
1778   --------------------------------------------------------------------------------
1779 
1780   PROCEDURE insert_row(p_api_version   IN            NUMBER
1781                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
1782                       ,x_return_status    OUT NOCOPY VARCHAR2
1783                       ,x_msg_count        OUT NOCOPY NUMBER
1784                       ,x_msg_data         OUT NOCOPY VARCHAR2
1785                       ,p_pamv_rec      IN            okl_pamv_rec
1786                       ,x_pamv_rec         OUT NOCOPY okl_pamv_rec) IS
1787     l_api_version        CONSTANT NUMBER        := 1;
1788     l_api_name           CONSTANT VARCHAR2(30)  := 'v_insert_row';
1789     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
1790     l_pamv_rec                    okl_pamv_rec;
1791     l_def_pamv_rec                okl_pamv_rec;
1792     l_pamb_rec                    okl_pamb_rec;
1793     lx_pamb_rec                   okl_pamb_rec;
1794     l_pamtl_rec                   okl_pamtl_rec;
1795     lx_pamtl_rec                  okl_pamtl_rec;
1796 
1797     FUNCTION fill_who_columns(p_pamv_rec IN okl_pamv_rec) RETURN okl_pamv_rec IS
1798       l_pamv_rec                   okl_pamv_rec := p_pamv_rec;
1799 
1800     BEGIN
1801       l_pamv_rec.creation_date := SYSDATE;
1802       l_pamv_rec.created_by := fnd_global.user_id;
1803       l_pamv_rec.last_update_date := SYSDATE;
1804       l_pamv_rec.last_updated_by := fnd_global.user_id;
1805       l_pamv_rec.last_update_login := fnd_global.login_id;
1806       RETURN(l_pamv_rec);
1807     END fill_who_columns;
1808 
1809     FUNCTION set_attributes(p_pamv_rec IN            okl_pamv_rec
1810                            ,x_pamv_rec    OUT NOCOPY okl_pamv_rec) RETURN VARCHAR2 IS
1811       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
1812 
1813     BEGIN
1814       x_pamv_rec := p_pamv_rec;
1815       x_pamv_rec.object_version_number := 1;
1816 	x_pamv_rec.org_id := MO_GLOBAL.GET_CURRENT_ORG_ID();
1817       RETURN(l_return_status);
1818     END set_attributes;
1819 
1820   BEGIN
1821     l_return_status := okl_api.start_activity(l_api_name
1822                                              ,g_pkg_name
1823                                              ,p_init_msg_list
1824                                              ,l_api_version
1825                                              ,p_api_version
1826                                              ,'_PVT'
1827                                              ,x_return_status);
1828 
1829     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1830       RAISE okl_api.g_exception_unexpected_error;
1831     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1832       RAISE okl_api.g_exception_error;
1833     END IF;
1834     l_pamv_rec := null_out_defaults(p_pamv_rec);
1835 
1836     -- Set Primary key value
1837 
1838     l_pamv_rec.adj_mat_id := get_seq_id;
1839 
1840     --Setting Item Attributes
1841 
1842     l_return_status := set_attributes(l_pamv_rec
1843                                      ,l_def_pamv_rec);
1844 
1845     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1846       RAISE okl_api.g_exception_unexpected_error;
1847     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1848       RAISE okl_api.g_exception_error;
1849     END IF;
1850     l_def_pamv_rec := fill_who_columns(l_def_pamv_rec);
1851     l_return_status := validate_attributes(l_def_pamv_rec);
1852 
1853     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1854       RAISE okl_api.g_exception_unexpected_error;
1855     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1856       RAISE okl_api.g_exception_error;
1857     END IF;
1858     l_return_status := validate_record(l_def_pamv_rec);
1859 
1860     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1861       RAISE okl_api.g_exception_unexpected_error;
1862     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1863       RAISE okl_api.g_exception_error;
1864     END IF;
1865     migrate(l_def_pamv_rec
1866            ,l_pamb_rec);
1867     migrate(l_def_pamv_rec
1868            ,l_pamtl_rec);
1869     insert_row(p_api_version
1870               ,p_init_msg_list
1871               ,x_return_status
1872               ,x_msg_count
1873               ,x_msg_data
1874               ,l_pamb_rec
1875               ,lx_pamb_rec);
1876 
1877     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1878       RAISE okl_api.g_exception_unexpected_error;
1879     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1880       RAISE okl_api.g_exception_error;
1881     END IF;
1882     migrate(lx_pamb_rec
1883            ,l_def_pamv_rec);
1884     insert_row(p_api_version
1885               ,p_init_msg_list
1886               ,x_return_status
1887               ,x_msg_count
1888               ,x_msg_data
1889               ,l_pamtl_rec
1890               ,lx_pamtl_rec);
1891 
1892     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
1893       RAISE okl_api.g_exception_unexpected_error;
1894     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
1895       RAISE okl_api.g_exception_error;
1896     END IF;
1897     migrate(lx_pamtl_rec
1898            ,l_def_pamv_rec);
1899 
1900     --Set OUT Values
1901 
1902     x_pamv_rec := l_def_pamv_rec;
1903     okl_api.end_activity(x_msg_count
1904                         ,x_msg_data);
1905     EXCEPTION
1906       WHEN g_exception_halt_validation THEN
1907 
1908         -- No action necessary. Validation can continue to next attribute/column
1909 
1910         NULL;
1911       WHEN okl_api.g_exception_error THEN
1912         x_return_status := okl_api.handle_exceptions(l_api_name
1913                                                     ,g_pkg_name
1914                                                     ,'OKL_API.G_RET_STS_ERROR'
1915                                                     ,x_msg_count
1916                                                     ,x_msg_data
1917                                                     ,'_PVT');
1918       WHEN okl_api.g_exception_unexpected_error THEN
1919         x_return_status := okl_api.handle_exceptions(l_api_name
1920                                                     ,g_pkg_name
1921                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
1922                                                     ,x_msg_count
1923                                                     ,x_msg_data
1924                                                     ,'_PVT');
1925       WHEN OTHERS THEN
1926         x_return_status := okl_api.handle_exceptions(l_api_name
1927                                                     ,g_pkg_name
1928                                                     ,'OTHERS'
1929                                                     ,x_msg_count
1930                                                     ,x_msg_data
1931                                                     ,'_PVT');
1932   END insert_row;
1933 
1934   --------------------------------------------------------------------------------
1935   -- Procedure insert_row_tbl
1936   --------------------------------------------------------------------------------
1937 
1938   PROCEDURE insert_row(p_api_version   IN            NUMBER
1939                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
1940                       ,x_return_status    OUT NOCOPY VARCHAR2
1941                       ,x_msg_count        OUT NOCOPY NUMBER
1942                       ,x_msg_data         OUT NOCOPY VARCHAR2
1943                       ,p_pamv_tbl      IN            okl_pamv_tbl
1944                       ,x_pamv_tbl         OUT NOCOPY okl_pamv_tbl) IS
1945     l_api_version        CONSTANT NUMBER       := 1;
1946     l_api_name           CONSTANT VARCHAR2(30) := 'v_insert_row';
1947     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
1948     i                             NUMBER       := 0;
1949     l_overall_status              VARCHAR2(1)  := okl_api.g_ret_sts_success;
1950 
1951   BEGIN
1952     okl_api.init_msg_list(p_init_msg_list);
1953 
1954     -- Make sure PL/SQL table has records in it before passing
1955 
1956     IF (p_pamv_tbl.COUNT > 0) THEN
1957       i := p_pamv_tbl.FIRST;
1958 
1959       LOOP
1960         insert_row(p_api_version   =>            p_api_version
1961                   ,p_init_msg_list =>            okl_api.g_false
1962                   ,x_return_status =>            x_return_status
1963                   ,x_msg_count     =>            x_msg_count
1964                   ,x_msg_data      =>            x_msg_data
1965                   ,p_pamv_rec      =>            p_pamv_tbl(i)
1966                   ,x_pamv_rec      =>            x_pamv_tbl(i));
1967         IF x_return_status <> okl_api.g_ret_sts_success THEN
1968           IF l_overall_status <> okl_api.g_ret_sts_unexp_error THEN
1969             l_overall_status := x_return_status;
1970           END IF;
1971         END IF;
1972         EXIT WHEN(i = p_pamv_tbl.LAST);
1973         i := p_pamv_tbl.next(i);
1974       END LOOP;
1975       x_return_status := l_overall_status;
1976     END IF;
1977 
1978     EXCEPTION
1979       WHEN g_exception_halt_validation THEN
1980 
1981         -- No action necessary. Validation can continue to next attribute/column
1982 
1983         NULL;
1984       WHEN okl_api.g_exception_error THEN
1985         x_return_status := okl_api.handle_exceptions(l_api_name
1986                                                     ,g_pkg_name
1987                                                     ,'OKL_API.G_RET_STS_ERROR'
1988                                                     ,x_msg_count
1989                                                     ,x_msg_data
1990                                                     ,'_PVT');
1991       WHEN okl_api.g_exception_unexpected_error THEN
1992         x_return_status := okl_api.handle_exceptions(l_api_name
1993                                                     ,g_pkg_name
1994                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
1995                                                     ,x_msg_count
1996                                                     ,x_msg_data
1997                                                     ,'_PVT');
1998       WHEN OTHERS THEN
1999         x_return_status := okl_api.handle_exceptions(l_api_name
2000                                                     ,g_pkg_name
2001                                                     ,'OTHERS'
2002                                                     ,x_msg_count
2003                                                     ,x_msg_data
2004                                                     ,'_PVT');
2005   END insert_row;
2006 
2007   --------------------------------------------------------------------------------
2008   -- Procedure update_row_b
2009   --------------------------------------------------------------------------------
2010 
2011   PROCEDURE update_row(p_api_version   IN            NUMBER
2012                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2013                       ,x_return_status    OUT NOCOPY VARCHAR2
2014                       ,x_msg_count        OUT NOCOPY NUMBER
2015                       ,x_msg_data         OUT NOCOPY VARCHAR2
2016                       ,p_pamb_rec      IN            okl_pamb_rec
2017                       ,x_pamb_rec         OUT NOCOPY okl_pamb_rec) IS
2018     l_api_version        CONSTANT NUMBER       := 1;
2019     l_api_name           CONSTANT VARCHAR2(30) := 'update_row';
2020     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
2021     l_pamb_rec                    okl_pamb_rec := p_pamb_rec;
2022     l_def_pamb_rec                okl_pamb_rec;
2023     l_row_notfound                BOOLEAN      := true;
2024 
2025     FUNCTION set_attributes(p_pamb_rec IN            okl_pamb_rec
2026                            ,x_pamb_rec    OUT NOCOPY okl_pamb_rec) RETURN VARCHAR2 IS
2027       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
2028 
2029     BEGIN
2030       x_pamb_rec := p_pamb_rec;
2031       RETURN(l_return_status);
2032     END set_attributes;
2033 
2034   BEGIN
2035     l_return_status := okl_api.start_activity(l_api_name
2036                                              ,g_pkg_name
2037                                              ,p_init_msg_list
2038                                              ,l_api_version
2039                                              ,p_api_version
2040                                              ,'_PVT'
2041                                              ,x_return_status);
2042 
2043     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2044       RAISE okl_api.g_exception_unexpected_error;
2045     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2046       RAISE okl_api.g_exception_error;
2047     END IF;
2048 
2049     --Setting Item Attributes
2050 
2051     l_return_status := set_attributes(p_pamb_rec
2052                                      ,l_def_pamb_rec);
2053 
2054     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2055       RAISE okl_api.g_exception_unexpected_error;
2056     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2057       RAISE okl_api.g_exception_error;
2058     END IF;
2059 
2060     UPDATE okl_fe_adj_mat_all_b
2061     SET    adj_mat_id = l_def_pamb_rec.adj_mat_id
2062           ,adj_mat_name = l_def_pamb_rec.adj_mat_name
2063           ,object_version_number = l_def_pamb_rec.object_version_number + 1
2064           ,org_id = l_def_pamb_rec.org_id
2065           ,currency_code = l_def_pamb_rec.currency_code
2066           ,adj_mat_type_code = l_def_pamb_rec.adj_mat_type_code
2067           ,orig_adj_mat_id = l_def_pamb_rec.orig_adj_mat_id
2068           ,sts_code = l_def_pamb_rec.sts_code
2069           ,effective_from_date = l_def_pamb_rec.effective_from_date
2070           ,effective_to_date = l_def_pamb_rec.effective_to_date
2071           ,attribute_category = l_def_pamb_rec.attribute_category
2072           ,attribute1 = l_def_pamb_rec.attribute1
2073           ,attribute2 = l_def_pamb_rec.attribute2
2074           ,attribute3 = l_def_pamb_rec.attribute3
2075           ,attribute4 = l_def_pamb_rec.attribute4
2076           ,attribute5 = l_def_pamb_rec.attribute5
2077           ,attribute6 = l_def_pamb_rec.attribute6
2078           ,attribute7 = l_def_pamb_rec.attribute7
2079           ,attribute8 = l_def_pamb_rec.attribute8
2080           ,attribute9 = l_def_pamb_rec.attribute9
2081           ,attribute10 = l_def_pamb_rec.attribute10
2082           ,attribute11 = l_def_pamb_rec.attribute11
2083           ,attribute12 = l_def_pamb_rec.attribute12
2084           ,attribute13 = l_def_pamb_rec.attribute13
2085           ,attribute14 = l_def_pamb_rec.attribute14
2086           ,attribute15 = l_def_pamb_rec.attribute15
2087           ,created_by = l_def_pamb_rec.created_by
2088           ,creation_date = l_def_pamb_rec.creation_date
2089           ,last_updated_by = l_def_pamb_rec.last_updated_by
2090           ,last_update_date = l_def_pamb_rec.last_update_date
2091           ,last_update_login = l_def_pamb_rec.last_update_login
2092     WHERE  adj_mat_id = l_def_pamb_rec.adj_mat_id;
2093 
2094     --Set OUT Values
2095 
2096     x_pamb_rec := l_pamb_rec;
2097     okl_api.end_activity(x_msg_count
2098                         ,x_msg_data);
2099     EXCEPTION
2100       WHEN g_exception_halt_validation THEN
2101 
2102         -- No action necessary. Validation can continue to next attribute/column
2103 
2104         NULL;
2105       WHEN okl_api.g_exception_error THEN
2106         x_return_status := okl_api.handle_exceptions(l_api_name
2107                                                     ,g_pkg_name
2108                                                     ,'OKL_API.G_RET_STS_ERROR'
2109                                                     ,x_msg_count
2110                                                     ,x_msg_data
2111                                                     ,'_PVT');
2112       WHEN okl_api.g_exception_unexpected_error THEN
2113         x_return_status := okl_api.handle_exceptions(l_api_name
2114                                                     ,g_pkg_name
2115                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2116                                                     ,x_msg_count
2117                                                     ,x_msg_data
2118                                                     ,'_PVT');
2119       WHEN OTHERS THEN
2120         x_return_status := okl_api.handle_exceptions(l_api_name
2121                                                     ,g_pkg_name
2122                                                     ,'OTHERS'
2123                                                     ,x_msg_count
2124                                                     ,x_msg_data
2125                                                     ,'_PVT');
2126   END update_row;
2127 
2128   --------------------------------------------------------------------------------
2129   -- Procedure update_row_tl
2130   --------------------------------------------------------------------------------
2131 
2132   PROCEDURE update_row(p_api_version   IN            NUMBER
2133                       ,p_init_msg_list IN            VARCHAR2      DEFAULT okl_api.g_false
2134                       ,x_return_status    OUT NOCOPY VARCHAR2
2135                       ,x_msg_count        OUT NOCOPY NUMBER
2136                       ,x_msg_data         OUT NOCOPY VARCHAR2
2137                       ,p_pamtl_rec     IN            okl_pamtl_rec
2138                       ,x_pamtl_rec        OUT NOCOPY okl_pamtl_rec) IS
2139     l_api_version        CONSTANT NUMBER        := 1;
2140     l_api_name           CONSTANT VARCHAR2(30)  := 'update_row';
2141     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
2142     l_pamtl_rec                   okl_pamtl_rec := p_pamtl_rec;
2143     l_def_pamtl_rec               okl_pamtl_rec;
2144     l_row_notfound                BOOLEAN       := true;
2145 
2146     FUNCTION set_attributes(p_pamtl_rec IN            okl_pamtl_rec
2147                            ,x_pamtl_rec    OUT NOCOPY okl_pamtl_rec) RETURN VARCHAR2 IS
2148       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
2149 
2150     BEGIN
2151       x_pamtl_rec := p_pamtl_rec;
2152       x_pamtl_rec.language := USERENV('LANG');
2153       x_pamtl_rec.source_lang := USERENV('LANG');
2154       x_pamtl_rec.sfwt_flag := 'N';
2155       RETURN(l_return_status);
2156     END set_attributes;
2157 
2158   BEGIN
2159     l_return_status := okl_api.start_activity(l_api_name
2160                                              ,g_pkg_name
2161                                              ,p_init_msg_list
2162                                              ,l_api_version
2163                                              ,p_api_version
2164                                              ,'_PVT'
2165                                              ,x_return_status);
2166 
2167     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2168       RAISE okl_api.g_exception_unexpected_error;
2169     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2170       RAISE okl_api.g_exception_error;
2171     END IF;
2172 
2173     --Setting Item Attributes
2174 
2175     l_return_status := set_attributes(p_pamtl_rec
2176                                      ,l_def_pamtl_rec);
2177 
2178     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2179       RAISE okl_api.g_exception_unexpected_error;
2180     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2181       RAISE okl_api.g_exception_error;
2182     END IF;
2183 
2184     UPDATE okl_fe_adj_mat_all_tl
2185     SET    adj_mat_id = l_def_pamtl_rec.adj_mat_id
2186           ,adj_mat_desc = l_def_pamtl_rec.adj_mat_desc
2187           ,language = l_def_pamtl_rec.language
2188           ,source_lang = l_def_pamtl_rec.source_lang
2189           ,sfwt_flag = l_def_pamtl_rec.sfwt_flag
2190           ,created_by = l_def_pamtl_rec.created_by
2191           ,creation_date = l_def_pamtl_rec.creation_date
2192           ,last_updated_by = l_def_pamtl_rec.last_updated_by
2193           ,last_update_date = l_def_pamtl_rec.last_update_date
2194           ,last_update_login = l_def_pamtl_rec.last_update_login
2195     WHERE  adj_mat_id = l_def_pamtl_rec.adj_mat_id
2196        AND language = l_def_pamtl_rec.language;
2197 
2198     UPDATE okl_fe_adj_mat_all_tl
2199     SET    sfwt_flag = 'Y'
2200     WHERE  adj_mat_id = l_def_pamtl_rec.adj_mat_id
2201        AND source_lang <> USERENV('LANG');
2202 
2203     --Set OUT Values
2204 
2205     x_pamtl_rec := l_pamtl_rec;
2206     okl_api.end_activity(x_msg_count
2207                         ,x_msg_data);
2208     EXCEPTION
2209       WHEN g_exception_halt_validation THEN
2210 
2211         -- No action necessary. Validation can continue to next attribute/column
2212 
2213         NULL;
2214       WHEN okl_api.g_exception_error THEN
2215         x_return_status := okl_api.handle_exceptions(l_api_name
2216                                                     ,g_pkg_name
2217                                                     ,'OKL_API.G_RET_STS_ERROR'
2218                                                     ,x_msg_count
2219                                                     ,x_msg_data
2220                                                     ,'_PVT');
2221       WHEN okl_api.g_exception_unexpected_error THEN
2222         x_return_status := okl_api.handle_exceptions(l_api_name
2223                                                     ,g_pkg_name
2224                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2225                                                     ,x_msg_count
2226                                                     ,x_msg_data
2227                                                     ,'_PVT');
2228       WHEN OTHERS THEN
2229         x_return_status := okl_api.handle_exceptions(l_api_name
2230                                                     ,g_pkg_name
2231                                                     ,'OTHERS'
2232                                                     ,x_msg_count
2233                                                     ,x_msg_data
2234                                                     ,'_PVT');
2235   END update_row;
2236 
2237   --------------------------------------------------------------------------------
2238   -- Procedure insert_row_v
2239   --------------------------------------------------------------------------------
2240 
2241   PROCEDURE update_row(p_api_version   IN            NUMBER
2242                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2243                       ,x_return_status    OUT NOCOPY VARCHAR2
2244                       ,x_msg_count        OUT NOCOPY NUMBER
2245                       ,x_msg_data         OUT NOCOPY VARCHAR2
2246                       ,p_pamv_rec      IN            okl_pamv_rec
2247                       ,x_pamv_rec         OUT NOCOPY okl_pamv_rec) IS
2248     l_api_version        CONSTANT NUMBER        := 1;
2249     l_api_name           CONSTANT VARCHAR2(30)  := 'v_insert_row';
2250     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
2251     l_pamv_rec                    okl_pamv_rec  := p_pamv_rec;
2252     l_def_pamv_rec                okl_pamv_rec;
2253     lx_pamv_rec                   okl_pamv_rec;
2254     l_pamb_rec                    okl_pamb_rec;
2255     lx_pamb_rec                   okl_pamb_rec;
2256     l_pamtl_rec                   okl_pamtl_rec;
2257     lx_pamtl_rec                  okl_pamtl_rec;
2258 
2259     FUNCTION fill_who_columns(p_pamv_rec IN okl_pamv_rec) RETURN okl_pamv_rec IS
2260       l_pamv_rec                   okl_pamv_rec := p_pamv_rec;
2261 
2262     BEGIN
2263       l_pamv_rec.last_update_date := SYSDATE;
2264       l_pamv_rec.last_updated_by := fnd_global.user_id;
2265       l_pamv_rec.last_update_login := fnd_global.login_id;
2266       RETURN(l_pamv_rec);
2267     END fill_who_columns;
2268 
2269     FUNCTION populate_new_record(p_pamv_rec IN            okl_pamv_rec
2270                                 ,x_pamv_rec    OUT NOCOPY okl_pamv_rec) RETURN VARCHAR2 IS
2271       l_pamv_rec                   okl_pamv_rec;
2272       l_row_notfound               BOOLEAN      := true;
2273       l_return_status              VARCHAR2(1)  := okl_api.g_ret_sts_success;
2274 
2275     BEGIN
2276       x_pamv_rec := p_pamv_rec;
2277 
2278       --Get current database values
2279 
2280       l_pamv_rec := get_rec(p_pamv_rec
2281                            ,l_row_notfound);
2282 
2283       IF (l_row_notfound) THEN
2284         l_return_status := okl_api.g_ret_sts_unexp_error;
2285       END IF;
2286 
2287       IF (x_pamv_rec.adj_mat_id IS NULL) THEN
2288         x_pamv_rec.adj_mat_id := l_pamv_rec.adj_mat_id;
2289       END IF;
2290 
2291       IF (x_pamv_rec.object_version_number IS NULL) THEN
2292         x_pamv_rec.object_version_number := l_pamv_rec.object_version_number;
2293       END IF;
2294 
2295       IF (x_pamv_rec.org_id IS NULL) THEN
2296         x_pamv_rec.org_id := l_pamv_rec.org_id;
2297       END IF;
2298 
2299       IF (x_pamv_rec.currency_code IS NULL) THEN
2300         x_pamv_rec.currency_code := l_pamv_rec.currency_code;
2301       END IF;
2302 
2303       IF (x_pamv_rec.adj_mat_type_code IS NULL) THEN
2304         x_pamv_rec.adj_mat_type_code := l_pamv_rec.adj_mat_type_code;
2305       END IF;
2306 
2307       IF (x_pamv_rec.orig_adj_mat_id IS NULL) THEN
2308         x_pamv_rec.orig_adj_mat_id := l_pamv_rec.orig_adj_mat_id;
2309       END IF;
2310 
2311       IF (x_pamv_rec.sts_code IS NULL) THEN
2312         x_pamv_rec.sts_code := l_pamv_rec.sts_code;
2313       END IF;
2314 
2315       IF (x_pamv_rec.effective_from_date IS NULL) THEN
2316         x_pamv_rec.effective_from_date := l_pamv_rec.effective_from_date;
2317       END IF;
2318 
2319       IF (x_pamv_rec.effective_to_date IS NULL) THEN
2320         x_pamv_rec.effective_to_date := l_pamv_rec.effective_to_date;
2321       END IF;
2322 
2323       IF (x_pamv_rec.attribute_category IS NULL) THEN
2324         x_pamv_rec.attribute_category := l_pamv_rec.attribute_category;
2325       END IF;
2326 
2327       IF (x_pamv_rec.attribute1 IS NULL) THEN
2328         x_pamv_rec.attribute1 := l_pamv_rec.attribute1;
2329       END IF;
2330 
2331       IF (x_pamv_rec.attribute2 IS NULL) THEN
2332         x_pamv_rec.attribute2 := l_pamv_rec.attribute2;
2333       END IF;
2334 
2335       IF (x_pamv_rec.attribute3 IS NULL) THEN
2336         x_pamv_rec.attribute3 := l_pamv_rec.attribute3;
2337       END IF;
2338 
2339       IF (x_pamv_rec.attribute4 IS NULL) THEN
2340         x_pamv_rec.attribute4 := l_pamv_rec.attribute4;
2341       END IF;
2342 
2343       IF (x_pamv_rec.attribute5 IS NULL) THEN
2344         x_pamv_rec.attribute5 := l_pamv_rec.attribute5;
2345       END IF;
2346 
2347       IF (x_pamv_rec.attribute6 IS NULL) THEN
2348         x_pamv_rec.attribute6 := l_pamv_rec.attribute6;
2349       END IF;
2350 
2351       IF (x_pamv_rec.attribute7 IS NULL) THEN
2352         x_pamv_rec.attribute7 := l_pamv_rec.attribute7;
2353       END IF;
2354 
2355       IF (x_pamv_rec.attribute8 IS NULL) THEN
2356         x_pamv_rec.attribute8 := l_pamv_rec.attribute8;
2357       END IF;
2358 
2359       IF (x_pamv_rec.attribute9 IS NULL) THEN
2360         x_pamv_rec.attribute9 := l_pamv_rec.attribute9;
2361       END IF;
2362 
2363       IF (x_pamv_rec.attribute10 IS NULL) THEN
2364         x_pamv_rec.attribute10 := l_pamv_rec.attribute10;
2365       END IF;
2366 
2367       IF (x_pamv_rec.attribute11 IS NULL) THEN
2368         x_pamv_rec.attribute11 := l_pamv_rec.attribute11;
2369       END IF;
2370 
2371       IF (x_pamv_rec.attribute12 IS NULL) THEN
2372         x_pamv_rec.attribute12 := l_pamv_rec.attribute12;
2373       END IF;
2374 
2375       IF (x_pamv_rec.attribute13 IS NULL) THEN
2376         x_pamv_rec.attribute13 := l_pamv_rec.attribute13;
2377       END IF;
2378 
2379       IF (x_pamv_rec.attribute14 IS NULL) THEN
2380         x_pamv_rec.attribute14 := l_pamv_rec.attribute14;
2381       END IF;
2382 
2383       IF (x_pamv_rec.attribute15 IS NULL) THEN
2384         x_pamv_rec.attribute15 := l_pamv_rec.attribute15;
2385       END IF;
2386 
2387       IF (x_pamv_rec.created_by IS NULL) THEN
2388         x_pamv_rec.created_by := l_pamv_rec.created_by;
2389       END IF;
2390 
2391       IF (x_pamv_rec.creation_date IS NULL) THEN
2392         x_pamv_rec.creation_date := l_pamv_rec.creation_date;
2393       END IF;
2394 
2395       IF (x_pamv_rec.last_updated_by IS NULL) THEN
2396         x_pamv_rec.last_updated_by := l_pamv_rec.last_updated_by;
2397       END IF;
2398 
2399       IF (x_pamv_rec.last_update_date IS NULL) THEN
2400         x_pamv_rec.last_update_date := l_pamv_rec.last_update_date;
2401       END IF;
2402 
2403       IF (x_pamv_rec.last_update_login IS NULL) THEN
2404         x_pamv_rec.last_update_login := l_pamv_rec.last_update_login;
2405       END IF;
2406 
2407       IF (x_pamv_rec.adj_mat_name IS NULL) THEN
2408         x_pamv_rec.adj_mat_name := l_pamv_rec.adj_mat_name;
2409       END IF;
2410 
2411       IF (x_pamv_rec.adj_mat_desc IS NULL) THEN
2412         x_pamv_rec.adj_mat_desc := l_pamv_rec.adj_mat_desc;
2413       END IF;
2414       RETURN(l_return_status);
2415     END populate_new_record;
2416 
2417     FUNCTION set_attributes(p_pamv_rec IN            okl_pamv_rec
2418                            ,x_pamv_rec    OUT NOCOPY okl_pamv_rec) RETURN VARCHAR2 IS
2419       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
2420 
2421     BEGIN
2422       x_pamv_rec := p_pamv_rec;
2423       RETURN(l_return_status);
2424     END set_attributes;
2425 
2426   BEGIN
2427     l_return_status := okl_api.start_activity(l_api_name
2428                                              ,g_pkg_name
2429                                              ,p_init_msg_list
2430                                              ,l_api_version
2431                                              ,p_api_version
2432                                              ,'_PVT'
2433                                              ,x_return_status);
2434 
2435     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2436       RAISE okl_api.g_exception_unexpected_error;
2437     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2438       RAISE okl_api.g_exception_error;
2439     END IF;
2440 
2441     --Setting Item Attributes
2442 
2443     l_return_status := set_attributes(l_pamv_rec
2444                                      ,lx_pamv_rec);
2445 
2446     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2447       RAISE okl_api.g_exception_unexpected_error;
2448     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2449       RAISE okl_api.g_exception_error;
2450     END IF;
2451     l_return_status := populate_new_record(lx_pamv_rec
2452                                           ,l_def_pamv_rec);
2453 
2454     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2455       RAISE okl_api.g_exception_unexpected_error;
2456     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2457       RAISE okl_api.g_exception_error;
2458     END IF;
2459     l_def_pamv_rec := null_out_defaults(l_def_pamv_rec);
2460 
2461     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2462       RAISE okl_api.g_exception_unexpected_error;
2463     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2464       RAISE okl_api.g_exception_error;
2465     END IF;
2466     l_def_pamv_rec := fill_who_columns(l_def_pamv_rec);
2467     l_return_status := validate_attributes(l_def_pamv_rec);
2468 
2469     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2470       RAISE okl_api.g_exception_unexpected_error;
2471     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2472       RAISE okl_api.g_exception_error;
2473     END IF;
2474     l_return_status := validate_record(l_def_pamv_rec);
2475 
2476     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2477       RAISE okl_api.g_exception_unexpected_error;
2478     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2479       RAISE okl_api.g_exception_error;
2480     END IF;
2481 
2482     --lock the row
2483 
2484     lock_row(p_api_version   =>            l_api_version
2485             ,p_init_msg_list =>            okl_api.g_false
2486             ,x_return_status =>            l_return_status
2487             ,x_msg_count     =>            x_msg_count
2488             ,x_msg_data      =>            x_msg_data
2489             ,p_pamv_rec      =>            l_def_pamv_rec);
2490 
2491     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2492       RAISE okl_api.g_exception_unexpected_error;
2493     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2494       RAISE okl_api.g_exception_error;
2495     END IF;
2496     migrate(l_def_pamv_rec
2497            ,l_pamb_rec);
2498     migrate(l_def_pamv_rec
2499            ,l_pamtl_rec);
2500     update_row(p_api_version
2501               ,p_init_msg_list
2502               ,x_return_status
2503               ,x_msg_count
2504               ,x_msg_data
2505               ,l_pamb_rec
2506               ,lx_pamb_rec);
2507 
2508     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2509       RAISE okl_api.g_exception_unexpected_error;
2510     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2511       RAISE okl_api.g_exception_error;
2512     END IF;
2513     migrate(lx_pamb_rec
2514            ,l_def_pamv_rec);
2515     update_row(p_api_version
2516               ,p_init_msg_list
2517               ,x_return_status
2518               ,x_msg_count
2519               ,x_msg_data
2520               ,l_pamtl_rec
2521               ,lx_pamtl_rec);
2522 
2523     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2524       RAISE okl_api.g_exception_unexpected_error;
2525     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2526       RAISE okl_api.g_exception_error;
2527     END IF;
2528     migrate(lx_pamtl_rec
2529            ,l_def_pamv_rec);
2530 
2531     --Set OUT Values
2532 
2533     x_pamv_rec := l_def_pamv_rec;
2534     okl_api.end_activity(x_msg_count
2535                         ,x_msg_data);
2536     EXCEPTION
2537       WHEN g_exception_halt_validation THEN
2538 
2539         -- No action necessary. Validation can continue to next attribute/column
2540 
2541         NULL;
2542       WHEN okl_api.g_exception_error THEN
2543         x_return_status := okl_api.handle_exceptions(l_api_name
2544                                                     ,g_pkg_name
2545                                                     ,'OKL_API.G_RET_STS_ERROR'
2546                                                     ,x_msg_count
2547                                                     ,x_msg_data
2548                                                     ,'_PVT');
2549       WHEN okl_api.g_exception_unexpected_error THEN
2550         x_return_status := okl_api.handle_exceptions(l_api_name
2551                                                     ,g_pkg_name
2552                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2553                                                     ,x_msg_count
2554                                                     ,x_msg_data
2555                                                     ,'_PVT');
2556       WHEN OTHERS THEN
2557         x_return_status := okl_api.handle_exceptions(l_api_name
2558                                                     ,g_pkg_name
2559                                                     ,'OTHERS'
2560                                                     ,x_msg_count
2561                                                     ,x_msg_data
2562                                                     ,'_PVT');
2563   END update_row;
2564 
2565   --------------------------------------------------------------------------------
2566   -- Procedure insert_row_tbl
2567   --------------------------------------------------------------------------------
2568 
2569   PROCEDURE update_row(p_api_version   IN            NUMBER
2570                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2571                       ,x_return_status    OUT NOCOPY VARCHAR2
2572                       ,x_msg_count        OUT NOCOPY NUMBER
2573                       ,x_msg_data         OUT NOCOPY VARCHAR2
2574                       ,p_pamv_tbl      IN            okl_pamv_tbl
2575                       ,x_pamv_tbl         OUT NOCOPY okl_pamv_tbl) IS
2576     l_api_version        CONSTANT NUMBER       := 1;
2577     l_api_name           CONSTANT VARCHAR2(30) := 'v_update_row';
2578     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
2579     i                             NUMBER       := 0;
2580     l_overall_status              VARCHAR2(1)  := okl_api.g_ret_sts_success;
2581 
2582   BEGIN
2583     okl_api.init_msg_list(p_init_msg_list);
2584 
2585     -- Make sure PL/SQL table has records in it before passing
2586 
2587     IF (p_pamv_tbl.COUNT > 0) THEN
2588       i := p_pamv_tbl.FIRST;
2589 
2590       LOOP
2591         update_row(p_api_version   =>            p_api_version
2592                   ,p_init_msg_list =>            okl_api.g_false
2593                   ,x_return_status =>            x_return_status
2594                   ,x_msg_count     =>            x_msg_count
2595                   ,x_msg_data      =>            x_msg_data
2596                   ,p_pamv_rec      =>            p_pamv_tbl(i)
2597                   ,x_pamv_rec      =>            x_pamv_tbl(i));
2598         IF x_return_status <> okl_api.g_ret_sts_success THEN
2599           IF l_overall_status <> okl_api.g_ret_sts_unexp_error THEN
2600             l_overall_status := x_return_status;
2601           END IF;
2602         END IF;
2603         EXIT WHEN(i = p_pamv_tbl.LAST);
2604         i := p_pamv_tbl.next(i);
2605       END LOOP;
2606       x_return_status := l_overall_status;
2607     END IF;
2608 
2609     EXCEPTION
2610       WHEN g_exception_halt_validation THEN
2611 
2612         -- No action necessary. Validation can continue to next attribute/column
2613 
2614         NULL;
2615       WHEN okl_api.g_exception_error THEN
2616         x_return_status := okl_api.handle_exceptions(l_api_name
2617                                                     ,g_pkg_name
2618                                                     ,'OKL_API.G_RET_STS_ERROR'
2619                                                     ,x_msg_count
2620                                                     ,x_msg_data
2621                                                     ,'_PVT');
2622       WHEN okl_api.g_exception_unexpected_error THEN
2623         x_return_status := okl_api.handle_exceptions(l_api_name
2624                                                     ,g_pkg_name
2625                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2626                                                     ,x_msg_count
2627                                                     ,x_msg_data
2628                                                     ,'_PVT');
2629       WHEN OTHERS THEN
2630         x_return_status := okl_api.handle_exceptions(l_api_name
2631                                                     ,g_pkg_name
2632                                                     ,'OTHERS'
2633                                                     ,x_msg_count
2634                                                     ,x_msg_data
2635                                                     ,'_PVT');
2636   END update_row;
2637 
2638   --------------------------------------------------------------------------------
2639   -- Procedure delete_row_b
2640   --------------------------------------------------------------------------------
2641 
2642   PROCEDURE delete_row(p_api_version   IN            NUMBER
2643                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2644                       ,x_return_status    OUT NOCOPY VARCHAR2
2645                       ,x_msg_count        OUT NOCOPY NUMBER
2646                       ,x_msg_data         OUT NOCOPY VARCHAR2
2647                       ,p_pamb_rec      IN            okl_pamb_rec) IS
2648     l_api_version        CONSTANT NUMBER       := 1;
2649     l_api_name           CONSTANT VARCHAR2(30) := 'delete_row';
2650     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
2651     l_pamb_rec                    okl_pamb_rec := p_pamb_rec;
2652     l_row_notfound                BOOLEAN      := true;
2653 
2654   BEGIN
2655     l_return_status := okl_api.start_activity(l_api_name
2656                                              ,g_pkg_name
2657                                              ,p_init_msg_list
2658                                              ,l_api_version
2659                                              ,p_api_version
2660                                              ,'_PVT'
2661                                              ,x_return_status);
2662 
2663     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2664       RAISE okl_api.g_exception_unexpected_error;
2665     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2666       RAISE okl_api.g_exception_error;
2667     END IF;
2668 
2669     DELETE FROM okl_fe_adj_mat_all_b
2670     WHERE       adj_mat_id = l_pamb_rec.adj_mat_id;
2671 
2672     EXCEPTION
2673       WHEN g_exception_halt_validation THEN
2674 
2675         -- No action necessary. Validation can continue to next attribute/column
2676 
2677         NULL;
2678       WHEN okl_api.g_exception_error THEN
2679         x_return_status := okl_api.handle_exceptions(l_api_name
2680                                                     ,g_pkg_name
2681                                                     ,'OKL_API.G_RET_STS_ERROR'
2682                                                     ,x_msg_count
2683                                                     ,x_msg_data
2684                                                     ,'_PVT');
2685       WHEN okl_api.g_exception_unexpected_error THEN
2686         x_return_status := okl_api.handle_exceptions(l_api_name
2687                                                     ,g_pkg_name
2688                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2689                                                     ,x_msg_count
2690                                                     ,x_msg_data
2691                                                     ,'_PVT');
2692       WHEN OTHERS THEN
2693         x_return_status := okl_api.handle_exceptions(l_api_name
2694                                                     ,g_pkg_name
2695                                                     ,'OTHERS'
2696                                                     ,x_msg_count
2697                                                     ,x_msg_data
2698                                                     ,'_PVT');
2699   END delete_row;
2700 
2701   --------------------------------------------------------------------------------
2702   -- Procedure delete_row_tl
2703   --------------------------------------------------------------------------------
2704 
2705   PROCEDURE delete_row(p_api_version   IN            NUMBER
2706                       ,p_init_msg_list IN            VARCHAR2      DEFAULT okl_api.g_false
2707                       ,x_return_status    OUT NOCOPY VARCHAR2
2708                       ,x_msg_count        OUT NOCOPY NUMBER
2709                       ,x_msg_data         OUT NOCOPY VARCHAR2
2710                       ,p_pamtl_rec     IN            okl_pamtl_rec) IS
2711     l_api_version        CONSTANT NUMBER        := 1;
2712     l_api_name           CONSTANT VARCHAR2(30)  := 'delete_row';
2713     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
2714     l_pamtl_rec                   okl_pamtl_rec := p_pamtl_rec;
2715     l_row_notfound                BOOLEAN       := true;
2716 
2717     FUNCTION set_attributes(p_pamtl_rec IN            okl_pamtl_rec
2718                            ,x_pamtl_rec    OUT NOCOPY okl_pamtl_rec) RETURN VARCHAR2 IS
2719       l_return_status              VARCHAR2(1) := okl_api.g_ret_sts_success;
2720 
2721     BEGIN
2722       x_pamtl_rec := p_pamtl_rec;
2723       x_pamtl_rec.language := USERENV('LANG');
2724       x_pamtl_rec.source_lang := USERENV('LANG');
2725       RETURN(l_return_status);
2726     END set_attributes;
2727 
2728   BEGIN
2729     l_return_status := okl_api.start_activity(l_api_name
2730                                              ,g_pkg_name
2731                                              ,p_init_msg_list
2732                                              ,l_api_version
2733                                              ,p_api_version
2734                                              ,'_PVT'
2735                                              ,x_return_status);
2736 
2737     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2738       RAISE okl_api.g_exception_unexpected_error;
2739     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2740       RAISE okl_api.g_exception_error;
2741     END IF;
2742 
2743     --Setting Item Attributes
2744 
2745     l_return_status := set_attributes(p_pamtl_rec
2746                                      ,l_pamtl_rec);
2747 
2748     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2749       RAISE okl_api.g_exception_unexpected_error;
2750     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2751       RAISE okl_api.g_exception_error;
2752     END IF;
2753 
2754     DELETE FROM okl_fe_adj_mat_all_tl
2755     WHERE       adj_mat_id = l_pamtl_rec.adj_mat_id;
2756 
2757     EXCEPTION
2758       WHEN g_exception_halt_validation THEN
2759 
2760         -- No action necessary. Validation can continue to next attribute/column
2761 
2762         NULL;
2763       WHEN okl_api.g_exception_error THEN
2764         x_return_status := okl_api.handle_exceptions(l_api_name
2765                                                     ,g_pkg_name
2766                                                     ,'OKL_API.G_RET_STS_ERROR'
2767                                                     ,x_msg_count
2768                                                     ,x_msg_data
2769                                                     ,'_PVT');
2770       WHEN okl_api.g_exception_unexpected_error THEN
2771         x_return_status := okl_api.handle_exceptions(l_api_name
2772                                                     ,g_pkg_name
2773                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2774                                                     ,x_msg_count
2775                                                     ,x_msg_data
2776                                                     ,'_PVT');
2777       WHEN OTHERS THEN
2778         x_return_status := okl_api.handle_exceptions(l_api_name
2779                                                     ,g_pkg_name
2780                                                     ,'OTHERS'
2781                                                     ,x_msg_count
2782                                                     ,x_msg_data
2783                                                     ,'_PVT');
2784   END delete_row;
2785 
2786   --------------------------------------------------------------------------------
2787   -- Procedure delete_row_v
2788   --------------------------------------------------------------------------------
2789 
2790   PROCEDURE delete_row(p_api_version   IN            NUMBER
2791                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2792                       ,x_return_status    OUT NOCOPY VARCHAR2
2793                       ,x_msg_count        OUT NOCOPY NUMBER
2794                       ,x_msg_data         OUT NOCOPY VARCHAR2
2795                       ,p_pamv_rec      IN            okl_pamv_rec) IS
2796     l_api_version        CONSTANT NUMBER        := 1;
2797     l_api_name           CONSTANT VARCHAR2(30)  := 'v_delete_row';
2798     l_return_status               VARCHAR2(1)   := okl_api.g_ret_sts_success;
2799     l_pamv_rec                    okl_pamv_rec  := p_pamv_rec;
2800     l_pamb_rec                    okl_pamb_rec;
2801     l_pamtl_rec                   okl_pamtl_rec;
2802 
2803   BEGIN
2804     l_return_status := okl_api.start_activity(l_api_name
2805                                              ,g_pkg_name
2806                                              ,p_init_msg_list
2807                                              ,l_api_version
2808                                              ,p_api_version
2809                                              ,'_PVT'
2810                                              ,x_return_status);
2811 
2812     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2813       RAISE okl_api.g_exception_unexpected_error;
2814     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2815       RAISE okl_api.g_exception_error;
2816     END IF;
2817     migrate(l_pamv_rec
2818            ,l_pamb_rec);
2819     migrate(l_pamv_rec
2820            ,l_pamtl_rec);
2821     delete_row(p_api_version
2822               ,p_init_msg_list
2823               ,x_return_status
2824               ,x_msg_count
2825               ,x_msg_data
2826               ,l_pamb_rec);
2827 
2828     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2829       RAISE okl_api.g_exception_unexpected_error;
2830     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2831       RAISE okl_api.g_exception_error;
2832     END IF;
2833     delete_row(p_api_version
2834               ,p_init_msg_list
2835               ,x_return_status
2836               ,x_msg_count
2837               ,x_msg_data
2838               ,l_pamtl_rec);
2839 
2840     IF (l_return_status = okl_api.g_ret_sts_unexp_error) THEN
2841       RAISE okl_api.g_exception_unexpected_error;
2842     ELSIF (l_return_status = okl_api.g_ret_sts_error) THEN
2843       RAISE okl_api.g_exception_error;
2844     END IF;
2845     okl_api.end_activity(x_msg_count
2846                         ,x_msg_data);
2847     EXCEPTION
2848       WHEN g_exception_halt_validation THEN
2849 
2850         -- No action necessary. Validation can continue to next attribute/column
2851 
2852         NULL;
2853       WHEN okl_api.g_exception_error THEN
2854         x_return_status := okl_api.handle_exceptions(l_api_name
2855                                                     ,g_pkg_name
2856                                                     ,'OKL_API.G_RET_STS_ERROR'
2857                                                     ,x_msg_count
2858                                                     ,x_msg_data
2859                                                     ,'_PVT');
2860       WHEN okl_api.g_exception_unexpected_error THEN
2861         x_return_status := okl_api.handle_exceptions(l_api_name
2862                                                     ,g_pkg_name
2863                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2864                                                     ,x_msg_count
2865                                                     ,x_msg_data
2866                                                     ,'_PVT');
2867       WHEN OTHERS THEN
2868         x_return_status := okl_api.handle_exceptions(l_api_name
2869                                                     ,g_pkg_name
2870                                                     ,'OTHERS'
2871                                                     ,x_msg_count
2872                                                     ,x_msg_data
2873                                                     ,'_PVT');
2874   END delete_row;
2875 
2876   --------------------------------------------------------------------------------
2877   -- Procedure delete_row_tbl
2878   --------------------------------------------------------------------------------
2879 
2880   PROCEDURE delete_row(p_api_version   IN            NUMBER
2881                       ,p_init_msg_list IN            VARCHAR2     DEFAULT okl_api.g_false
2882                       ,x_return_status    OUT NOCOPY VARCHAR2
2883                       ,x_msg_count        OUT NOCOPY NUMBER
2884                       ,x_msg_data         OUT NOCOPY VARCHAR2
2885                       ,p_pamv_tbl      IN            okl_pamv_tbl) IS
2886     l_api_version        CONSTANT NUMBER       := 1;
2887     l_api_name           CONSTANT VARCHAR2(30) := 'v_delete_row';
2888     l_return_status               VARCHAR2(1)  := okl_api.g_ret_sts_success;
2889     i                             NUMBER       := 0;
2890     l_overall_status              VARCHAR2(1)  := okl_api.g_ret_sts_success;
2891 
2892   BEGIN
2893     okl_api.init_msg_list(p_init_msg_list);
2894 
2895     -- Make sure PL/SQL table has records in it before passing
2896 
2897     IF (p_pamv_tbl.COUNT > 0) THEN
2898       i := p_pamv_tbl.FIRST;
2899 
2900       LOOP
2901         delete_row(p_api_version   =>            p_api_version
2902                   ,p_init_msg_list =>            okl_api.g_false
2903                   ,x_return_status =>            x_return_status
2904                   ,x_msg_count     =>            x_msg_count
2905                   ,x_msg_data      =>            x_msg_data
2906                   ,p_pamv_rec      =>            p_pamv_tbl(i));
2907         IF x_return_status <> okl_api.g_ret_sts_success THEN
2908           IF l_overall_status <> okl_api.g_ret_sts_unexp_error THEN
2909             l_overall_status := x_return_status;
2910           END IF;
2911         END IF;
2912         EXIT WHEN(i = p_pamv_tbl.LAST);
2913         i := p_pamv_tbl.next(i);
2914       END LOOP;
2915       x_return_status := l_overall_status;
2916     END IF;
2917 
2918     EXCEPTION
2919       WHEN g_exception_halt_validation THEN
2920 
2921         -- No action necessary. Validation can continue to next attribute/column
2922 
2923         NULL;
2924       WHEN okl_api.g_exception_error THEN
2925         x_return_status := okl_api.handle_exceptions(l_api_name
2926                                                     ,g_pkg_name
2927                                                     ,'OKL_API.G_RET_STS_ERROR'
2928                                                     ,x_msg_count
2929                                                     ,x_msg_data
2930                                                     ,'_PVT');
2931       WHEN okl_api.g_exception_unexpected_error THEN
2932         x_return_status := okl_api.handle_exceptions(l_api_name
2933                                                     ,g_pkg_name
2934                                                     ,'OKL_API.G_RET_STS_UNEXP_ERROR'
2935                                                     ,x_msg_count
2936                                                     ,x_msg_data
2937                                                     ,'_PVT');
2938       WHEN OTHERS THEN
2939         x_return_status := okl_api.handle_exceptions(l_api_name
2940                                                     ,g_pkg_name
2941                                                     ,'OTHERS'
2942                                                     ,x_msg_count
2943                                                     ,x_msg_data
2944                                                     ,'_PVT');
2945   END delete_row;
2946 
2947 END okl_pam_pvt;