DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PAM_PVT

Source


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