DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PFL_PVT

Source


1 PACKAGE BODY OKL_PFL_PVT AS
2 /* $Header: OKLSPFLB.pls 120.3 2005/10/30 04:43:15 appldev noship $ */
3   ---------------------------------------------------------------------------
4   -- PROCEDURE load_error_tbl
5   ---------------------------------------------------------------------------
6   PROCEDURE load_error_tbl (
7     px_error_rec                   IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
8     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
9 
10     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
12     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
13   BEGIN
14     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
15     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
17     -- automatically increments the index by 1, (making it 2), however, when the GET function
18     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
20     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21     -- will only update the index variable when 1 and only 1 message is on the stack.
22     IF (last_msg_idx = 1) THEN
23       l_msg_idx := FND_MSG_PUB.G_FIRST;
24     END IF;
25     LOOP
26       fnd_msg_pub.get(
27             p_msg_index     => l_msg_idx,
28             p_encoded       => fnd_api.g_false,
29             p_data          => px_error_rec.msg_data,
30             p_msg_index_out => px_error_rec.msg_count);
31       px_error_tbl(j) := px_error_rec;
32       j := j + 1;
33     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34     END LOOP;
35   END load_error_tbl;
36   ---------------------------------------------------------------------------
37   -- FUNCTION find_highest_exception
38   ---------------------------------------------------------------------------
39   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40   -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
41   FUNCTION find_highest_exception(
42     p_error_tbl                    IN OKL_API.ERROR_TBL_TYPE
43   ) RETURN VARCHAR2 IS
44     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
45     i                              INTEGER := 1;
46   BEGIN
47     IF (p_error_tbl.COUNT > 0) THEN
48       i := p_error_tbl.FIRST;
49       LOOP
50         IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
51           IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
52             l_return_status := p_error_tbl(i).error_type;
53           END IF;
54         END IF;
55         EXIT WHEN (i = p_error_tbl.LAST);
56         i := p_error_tbl.NEXT(i);
57       END LOOP;
58     END IF;
59     RETURN(l_return_status);
60   END find_highest_exception;
61   ---------------------------------------------------------------------------
62   -- FUNCTION get_seq_id
63   ---------------------------------------------------------------------------
64   FUNCTION get_seq_id RETURN NUMBER IS
65   BEGIN
66     RETURN(okc_p_util.raw_to_number(sys_guid()));
67   END get_seq_id;
68 
69   ---------------------------------------------------------------------------
70   -- PROCEDURE qc
71   ---------------------------------------------------------------------------
72   PROCEDURE qc IS
73   BEGIN
74     null;
75   END qc;
76 
77   ---------------------------------------------------------------------------
78   -- PROCEDURE change_version
79   ---------------------------------------------------------------------------
80   PROCEDURE change_version IS
81   BEGIN
82     null;
83   END change_version;
84 
85   ---------------------------------------------------------------------------
86   -- PROCEDURE api_copy
87   ---------------------------------------------------------------------------
88   PROCEDURE api_copy IS
89   BEGIN
90     null;
91   END api_copy;
92 
93   ---------------------------------------------------------------------------
94   -- PROCEDURE add_language
95   ---------------------------------------------------------------------------
96   PROCEDURE add_language IS
97   BEGIN
98     DELETE FROM OKL_PRTFL_LINES_TL T
99      WHERE NOT EXISTS (
100         SELECT NULL
101           FROM OKL_PRTFL_LINES_B B
102          WHERE B.ID =T.ID
103         );
104 
105     UPDATE OKL_PRTFL_LINES_TL T SET(
106         COMMENTS) = (SELECT
107                                   B.COMMENTS
108                                 FROM OKL_PRTFL_LINES_TL B
109                                WHERE B.ID = T.ID
110                                  AND B.LANGUAGE = T.SOURCE_LANG)
111       WHERE ( T.ID,
112               T.LANGUAGE)
113           IN (SELECT
114                   SUBT.ID,
115                   SUBT.LANGUAGE
116                 FROM OKL_PRTFL_LINES_TL SUBB, OKL_PRTFL_LINES_TL SUBT
117                WHERE SUBB.ID = SUBT.ID
118                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
119                  AND (SUBB.COMMENTS <> SUBT.COMMENTS
120                       OR (SUBB.COMMENTS IS NULL AND SUBT.COMMENTS IS NOT NULL)
121               ));
122 
123     INSERT INTO OKL_PRTFL_LINES_TL (
124         ID,
125         LANGUAGE,
126         SOURCE_LANG,
127         SFWT_FLAG,
128         COMMENTS,
129         CREATED_BY,
130         CREATION_DATE,
131         LAST_UPDATED_BY,
132         LAST_UPDATE_DATE,
133         LAST_UPDATE_LOGIN)
134       SELECT
135             B.ID,
136             L.LANGUAGE_CODE,
137             B.SOURCE_LANG,
138             B.SFWT_FLAG,
139             B.COMMENTS,
140             B.CREATED_BY,
141             B.CREATION_DATE,
142             B.LAST_UPDATED_BY,
143             B.LAST_UPDATE_DATE,
144             B.LAST_UPDATE_LOGIN
145         FROM OKL_PRTFL_LINES_TL B, FND_LANGUAGES L
146        WHERE L.INSTALLED_FLAG IN ('I', 'B')
147          AND B.LANGUAGE = USERENV('LANG')
148          AND NOT EXISTS (
149                     SELECT NULL
150                       FROM OKL_PRTFL_LINES_TL T
151                      WHERE T.ID = B.ID
152                        AND T.LANGUAGE = L.LANGUAGE_CODE
153                     );
154   END add_language;
155 
156   ---------------------------------------------------------------------------
157   -- FUNCTION get_rec for: OKL_PRTFL_LINES_V
158   ---------------------------------------------------------------------------
159   -- Start of comments
160   --
161   -- Function  Name  : get_rec
162   -- Description     : for: OKL_PRTFL_LINES_V
163   -- Business Rules  :
164   -- Parameters      :
165   -- Version         : 1.0
166   -- History         : RABHUPAT 17-DEC-2002 2667636
167   --                 :modified for multicurrency changes
168   -- End of comments
169   FUNCTION get_rec (
170     p_pflv_rec                     IN pflv_rec_type,
171     x_no_data_found                OUT NOCOPY BOOLEAN
172   ) RETURN pflv_rec_type IS
173     CURSOR okl_pflv_pk_csr (p_id IN NUMBER) IS
174     SELECT
175             ID,
176             SFWT_FLAG,
177             BUDGET_AMOUNT,
178             DATE_STRATEGY_EXECUTED,
179             DATE_STRATEGY_EXECUTION_DUE,
180             DATE_BUDGET_AMOUNT_LAST_REVIEW,
181             TRX_STATUS_CODE,
182             ASSET_TRACK_STRATEGY_CODE,
183             PFC_ID,
184             TMB_ID,
185             KLE_ID,
186             FMA_ID,
187             COMMENTS,
188             OBJECT_VERSION_NUMBER,
189             REQUEST_ID,
190             PROGRAM_APPLICATION_ID,
191             PROGRAM_ID,
192             PROGRAM_UPDATE_DATE,
193             ATTRIBUTE_CATEGORY,
194             ATTRIBUTE1,
195             ATTRIBUTE2,
196             ATTRIBUTE3,
197             ATTRIBUTE4,
198             ATTRIBUTE5,
199             ATTRIBUTE6,
200             ATTRIBUTE7,
201             ATTRIBUTE8,
202             ATTRIBUTE9,
203             ATTRIBUTE10,
204             ATTRIBUTE11,
205             ATTRIBUTE12,
206             ATTRIBUTE13,
207             ATTRIBUTE14,
208             ATTRIBUTE15,
209             CREATED_BY,
210             CREATION_DATE,
211             LAST_UPDATED_BY,
212             LAST_UPDATE_DATE,
213             LAST_UPDATE_LOGIN,
214   -- RABHUPAT - 2667636 - Start
215             CURRENCY_CODE,
216             CURRENCY_CONVERSION_CODE,
217             CURRENCY_CONVERSION_TYPE,
218             CURRENCY_CONVERSION_RATE,
219             CURRENCY_CONVERSION_DATE
220   -- RABHUPAT - 2667636 - End
221       FROM Okl_Prtfl_Lines_V
222      WHERE okl_prtfl_lines_v.id = p_id;
223     l_okl_pflv_pk                  okl_pflv_pk_csr%ROWTYPE;
224     l_pflv_rec                     pflv_rec_type;
225   BEGIN
226     x_no_data_found := TRUE;
227     -- Get current database values
228     OPEN okl_pflv_pk_csr (p_pflv_rec.id);
229     FETCH okl_pflv_pk_csr INTO
230               l_pflv_rec.id,
231               l_pflv_rec.sfwt_flag,
232               l_pflv_rec.budget_amount,
233               l_pflv_rec.date_strategy_executed,
234               l_pflv_rec.date_strategy_execution_due,
235               l_pflv_rec.date_budget_amount_last_review,
236               l_pflv_rec.trx_status_code,
237               l_pflv_rec.asset_track_strategy_code,
238               l_pflv_rec.pfc_id,
239               l_pflv_rec.tmb_id,
240               l_pflv_rec.kle_id,
241               l_pflv_rec.fma_id,
242               l_pflv_rec.comments,
243               l_pflv_rec.object_version_number,
244               l_pflv_rec.request_id,
245               l_pflv_rec.program_application_id,
246               l_pflv_rec.program_id,
247               l_pflv_rec.program_update_date,
248               l_pflv_rec.attribute_category,
249               l_pflv_rec.attribute1,
250               l_pflv_rec.attribute2,
251               l_pflv_rec.attribute3,
252               l_pflv_rec.attribute4,
253               l_pflv_rec.attribute5,
254               l_pflv_rec.attribute6,
255               l_pflv_rec.attribute7,
256               l_pflv_rec.attribute8,
257               l_pflv_rec.attribute9,
258               l_pflv_rec.attribute10,
259               l_pflv_rec.attribute11,
260               l_pflv_rec.attribute12,
261               l_pflv_rec.attribute13,
262               l_pflv_rec.attribute14,
263               l_pflv_rec.attribute15,
264               l_pflv_rec.created_by,
265               l_pflv_rec.creation_date,
266               l_pflv_rec.last_updated_by,
267               l_pflv_rec.last_update_date,
268               l_pflv_rec.last_update_login,
269   -- RABHUPAT - 2667636 - Start
270               l_pflv_rec.CURRENCY_CODE,
271               l_pflv_rec.CURRENCY_CONVERSION_CODE,
272               l_pflv_rec.CURRENCY_CONVERSION_TYPE,
273               l_pflv_rec.CURRENCY_CONVERSION_RATE,
274               l_pflv_rec.CURRENCY_CONVERSION_DATE;
275   -- RABHUPAT - 2667636 - End
276     x_no_data_found := okl_pflv_pk_csr%NOTFOUND;
277     CLOSE okl_pflv_pk_csr;
278     RETURN(l_pflv_rec);
279   END get_rec;
280 
281   ------------------------------------------------------------------
282   -- This version of get_rec sets error messages if no data found --
283   ------------------------------------------------------------------
284   FUNCTION get_rec (
285     p_pflv_rec                     IN pflv_rec_type,
286     x_return_status                OUT NOCOPY VARCHAR2
287   ) RETURN pflv_rec_type IS
288     l_pflv_rec                     pflv_rec_type;
289     l_row_notfound                 BOOLEAN := TRUE;
290   BEGIN
291     x_return_status := OKL_API.G_RET_STS_SUCCESS;
292     l_pflv_rec := get_rec(p_pflv_rec, l_row_notfound);
293     IF (l_row_notfound) THEN
294       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
295       x_return_status := OKL_API.G_RET_STS_ERROR;
296     END IF;
297     RETURN(l_pflv_rec);
298   END get_rec;
299   -----------------------------------------------------------
300   -- So we don't have to pass an "l_row_notfound" variable --
301   -----------------------------------------------------------
302   FUNCTION get_rec (
303     p_pflv_rec                     IN pflv_rec_type
304   ) RETURN pflv_rec_type IS
305     l_row_not_found                BOOLEAN := TRUE;
306   BEGIN
307     RETURN(get_rec(p_pflv_rec, l_row_not_found));
308   END get_rec;
309   ---------------------------------------------------------------------------
310   -- FUNCTION get_rec for: OKL_PRTFL_LINES_B
311   ---------------------------------------------------------------------------
312   -- Start of comments
313   --
314   -- Function  Name  : get_rec
315   -- Description     : for: OKL_PRTFL_LINES_B
316   -- Business Rules  :
317   -- Parameters      :
318   -- Version         : 1.0
319   -- History         : RABHUPAT 17-DEC-2002 2667636
320   --                 :modified for multicurrency changes
321   -- End of comments
322   FUNCTION get_rec (
323     p_pfl_rec                      IN pfl_rec_type,
324     x_no_data_found                OUT NOCOPY BOOLEAN
325   ) RETURN pfl_rec_type IS
326     CURSOR okl_prtfl_lines_b_pk_csr (p_id IN NUMBER) IS
327     SELECT
328             ID,
329             BUDGET_AMOUNT,
330             DATE_STRATEGY_EXECUTED,
331             DATE_STRATEGY_EXECUTION_DUE,
332             DATE_BUDGET_AMOUNT_LAST_REVIEW,
333             TRX_STATUS_CODE,
334             ASSET_TRACK_STRATEGY_CODE,
335             PFC_ID,
336             TMB_ID,
337             KLE_ID,
338             FMA_ID,
339             OBJECT_VERSION_NUMBER,
340             REQUEST_ID,
341             PROGRAM_APPLICATION_ID,
342             PROGRAM_ID,
343             PROGRAM_UPDATE_DATE,
344             ATTRIBUTE_CATEGORY,
345             ATTRIBUTE1,
346             ATTRIBUTE2,
347             ATTRIBUTE3,
348             ATTRIBUTE4,
349             ATTRIBUTE5,
350             ATTRIBUTE6,
351             ATTRIBUTE7,
352             ATTRIBUTE8,
353             ATTRIBUTE9,
354             ATTRIBUTE10,
355             ATTRIBUTE11,
356             ATTRIBUTE12,
357             ATTRIBUTE13,
358             ATTRIBUTE14,
359             ATTRIBUTE15,
360             CREATED_BY,
361             CREATION_DATE,
362             LAST_UPDATED_BY,
363             LAST_UPDATE_DATE,
364             LAST_UPDATE_LOGIN,
365   -- RABHUPAT - 2667636 - Start
366             CURRENCY_CODE,
367             CURRENCY_CONVERSION_CODE,
368             CURRENCY_CONVERSION_TYPE,
369             CURRENCY_CONVERSION_RATE,
370             CURRENCY_CONVERSION_DATE
371   -- RABHUPAT - 2667636 - End
372       FROM Okl_Prtfl_Lines_B
373      WHERE okl_prtfl_lines_b.id = p_id;
374     l_okl_prtfl_lines_b_pk         okl_prtfl_lines_b_pk_csr%ROWTYPE;
375     l_pfl_rec                      pfl_rec_type;
376   BEGIN
377     x_no_data_found := TRUE;
378     -- Get current database values
379     OPEN okl_prtfl_lines_b_pk_csr (p_pfl_rec.id);
380     FETCH okl_prtfl_lines_b_pk_csr INTO
381               l_pfl_rec.id,
382               l_pfl_rec.budget_amount,
383               l_pfl_rec.date_strategy_executed,
384               l_pfl_rec.date_strategy_execution_due,
385               l_pfl_rec.date_budget_amount_last_review,
386               l_pfl_rec.trx_status_code,
387               l_pfl_rec.asset_track_strategy_code,
388               l_pfl_rec.pfc_id,
389               l_pfl_rec.tmb_id,
390               l_pfl_rec.kle_id,
391               l_pfl_rec.fma_id,
392               l_pfl_rec.object_version_number,
393               l_pfl_rec.request_id,
394               l_pfl_rec.program_application_id,
395               l_pfl_rec.program_id,
396               l_pfl_rec.program_update_date,
397               l_pfl_rec.attribute_category,
398               l_pfl_rec.attribute1,
399               l_pfl_rec.attribute2,
400               l_pfl_rec.attribute3,
401               l_pfl_rec.attribute4,
402               l_pfl_rec.attribute5,
403               l_pfl_rec.attribute6,
404               l_pfl_rec.attribute7,
405               l_pfl_rec.attribute8,
406               l_pfl_rec.attribute9,
407               l_pfl_rec.attribute10,
408               l_pfl_rec.attribute11,
409               l_pfl_rec.attribute12,
410               l_pfl_rec.attribute13,
411               l_pfl_rec.attribute14,
412               l_pfl_rec.attribute15,
413               l_pfl_rec.created_by,
414               l_pfl_rec.creation_date,
415               l_pfl_rec.last_updated_by,
416               l_pfl_rec.last_update_date,
417               l_pfl_rec.last_update_login,
418   -- RABHUPAT - 2667636 - Start
419               l_pfl_rec.CURRENCY_CODE,
420               l_pfl_rec.CURRENCY_CONVERSION_CODE,
421               l_pfl_rec.CURRENCY_CONVERSION_TYPE,
422               l_pfl_rec.CURRENCY_CONVERSION_RATE,
423               l_pfl_rec.CURRENCY_CONVERSION_DATE;
424   -- RABHUPAT - 2667636 - End
425     x_no_data_found := okl_prtfl_lines_b_pk_csr%NOTFOUND;
426     CLOSE okl_prtfl_lines_b_pk_csr;
427     RETURN(l_pfl_rec);
428   END get_rec;
429 
430   ------------------------------------------------------------------
431   -- This version of get_rec sets error messages if no data found --
432   ------------------------------------------------------------------
433   FUNCTION get_rec (
434     p_pfl_rec                      IN pfl_rec_type,
435     x_return_status                OUT NOCOPY VARCHAR2
436   ) RETURN pfl_rec_type IS
437     l_pfl_rec                      pfl_rec_type;
438     l_row_notfound                 BOOLEAN := TRUE;
439   BEGIN
440     x_return_status := OKL_API.G_RET_STS_SUCCESS;
441     l_pfl_rec := get_rec(p_pfl_rec, l_row_notfound);
442     IF (l_row_notfound) THEN
443       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
444       x_return_status := OKL_API.G_RET_STS_ERROR;
445     END IF;
446     RETURN(l_pfl_rec);
447   END get_rec;
448   -----------------------------------------------------------
449   -- So we don't have to pass an "l_row_notfound" variable --
450   -----------------------------------------------------------
451   FUNCTION get_rec (
452     p_pfl_rec                      IN pfl_rec_type
453   ) RETURN pfl_rec_type IS
454     l_row_not_found                BOOLEAN := TRUE;
455   BEGIN
456     RETURN(get_rec(p_pfl_rec, l_row_not_found));
457   END get_rec;
458   ---------------------------------------------------------------------------
459   -- FUNCTION get_rec for: OKL_PRTFL_LINES_TL
460   ---------------------------------------------------------------------------
461   FUNCTION get_rec (
462     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type,
463     x_no_data_found                OUT NOCOPY BOOLEAN
464   ) RETURN okl_prtfl_lines_tl_rec_type IS
465     CURSOR okl_prtfl_lines_tl_pk_csr (p_id       IN NUMBER,
466                                       p_language IN VARCHAR2) IS
467     SELECT
468             ID,
469             LANGUAGE,
470             SOURCE_LANG,
471             SFWT_FLAG,
472             COMMENTS,
473             CREATED_BY,
474             CREATION_DATE,
475             LAST_UPDATED_BY,
476             LAST_UPDATE_DATE,
477             LAST_UPDATE_LOGIN
478       FROM Okl_Prtfl_Lines_Tl
479      WHERE okl_prtfl_lines_tl.id = p_id
480        AND okl_prtfl_lines_tl.language = p_language;
481     l_okl_prtfl_lines_tl_pk        okl_prtfl_lines_tl_pk_csr%ROWTYPE;
482     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
483   BEGIN
484     x_no_data_found := TRUE;
485     -- Get current database values
486     OPEN okl_prtfl_lines_tl_pk_csr (p_okl_prtfl_lines_tl_rec.id,
487                                     p_okl_prtfl_lines_tl_rec.language);
488     FETCH okl_prtfl_lines_tl_pk_csr INTO
489               l_okl_prtfl_lines_tl_rec.id,
490               l_okl_prtfl_lines_tl_rec.language,
491               l_okl_prtfl_lines_tl_rec.source_lang,
492               l_okl_prtfl_lines_tl_rec.sfwt_flag,
493               l_okl_prtfl_lines_tl_rec.comments,
494               l_okl_prtfl_lines_tl_rec.created_by,
495               l_okl_prtfl_lines_tl_rec.creation_date,
496               l_okl_prtfl_lines_tl_rec.last_updated_by,
497               l_okl_prtfl_lines_tl_rec.last_update_date,
498               l_okl_prtfl_lines_tl_rec.last_update_login;
499     x_no_data_found := okl_prtfl_lines_tl_pk_csr%NOTFOUND;
500     CLOSE okl_prtfl_lines_tl_pk_csr;
501     RETURN(l_okl_prtfl_lines_tl_rec);
502   END get_rec;
503 
504   ------------------------------------------------------------------
505   -- This version of get_rec sets error messages if no data found --
506   ------------------------------------------------------------------
507   FUNCTION get_rec (
508     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type,
509     x_return_status                OUT NOCOPY VARCHAR2
510   ) RETURN okl_prtfl_lines_tl_rec_type IS
511     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
512     l_row_notfound                 BOOLEAN := TRUE;
513   BEGIN
514     x_return_status := OKL_API.G_RET_STS_SUCCESS;
515     l_okl_prtfl_lines_tl_rec := get_rec(p_okl_prtfl_lines_tl_rec, l_row_notfound);
516     IF (l_row_notfound) THEN
517       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
518       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'LANGUAGE');
519       x_return_status := OKL_API.G_RET_STS_ERROR;
520     END IF;
521     RETURN(l_okl_prtfl_lines_tl_rec);
522   END get_rec;
523   -----------------------------------------------------------
524   -- So we don't have to pass an "l_row_notfound" variable --
525   -----------------------------------------------------------
526   FUNCTION get_rec (
527     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type
528   ) RETURN okl_prtfl_lines_tl_rec_type IS
529     l_row_not_found                BOOLEAN := TRUE;
530   BEGIN
531     RETURN(get_rec(p_okl_prtfl_lines_tl_rec, l_row_not_found));
532   END get_rec;
533   ---------------------------------------------------------------------------
534   -- FUNCTION null_out_defaults for: OKL_PRTFL_LINES_V
535   ---------------------------------------------------------------------------
536   -- Start of comments
537   --
538   -- Function  Name  : null_out_defaults
539   -- Description     : for: OKL_PRTFL_LINES_V
540   -- Business Rules  :
541   -- Parameters      :
542   -- Version         : 1.0
543   -- History         : RABHUPAT 17-DEC-2002 2667636
544   --                 :modified for multicurrency changes
545   -- End of comments
546   FUNCTION null_out_defaults (
547     p_pflv_rec   IN pflv_rec_type
548   ) RETURN pflv_rec_type IS
549     l_pflv_rec                     pflv_rec_type := p_pflv_rec;
550   BEGIN
551     IF (l_pflv_rec.id = OKL_API.G_MISS_NUM ) THEN
552       l_pflv_rec.id := NULL;
553     END IF;
554     IF (l_pflv_rec.sfwt_flag = OKL_API.G_MISS_CHAR ) THEN
555       l_pflv_rec.sfwt_flag := NULL;
556     END IF;
557     IF (l_pflv_rec.budget_amount = OKL_API.G_MISS_NUM ) THEN
558       l_pflv_rec.budget_amount := NULL;
559     END IF;
560     IF (l_pflv_rec.date_strategy_executed = OKL_API.G_MISS_DATE ) THEN
561       l_pflv_rec.date_strategy_executed := NULL;
562     END IF;
563     IF (l_pflv_rec.date_strategy_execution_due = OKL_API.G_MISS_DATE ) THEN
564       l_pflv_rec.date_strategy_execution_due := NULL;
565     END IF;
566     IF (l_pflv_rec.date_budget_amount_last_review = OKL_API.G_MISS_DATE ) THEN
567       l_pflv_rec.date_budget_amount_last_review := NULL;
568     END IF;
569     IF (l_pflv_rec.trx_status_code = OKL_API.G_MISS_CHAR ) THEN
570       l_pflv_rec.trx_status_code := NULL;
571     END IF;
572     IF (l_pflv_rec.asset_track_strategy_code = OKL_API.G_MISS_CHAR ) THEN
573       l_pflv_rec.asset_track_strategy_code := NULL;
574     END IF;
575     IF (l_pflv_rec.pfc_id = OKL_API.G_MISS_NUM ) THEN
576       l_pflv_rec.pfc_id := NULL;
577     END IF;
578     IF (l_pflv_rec.tmb_id = OKL_API.G_MISS_NUM ) THEN
579       l_pflv_rec.tmb_id := NULL;
580     END IF;
581     IF (l_pflv_rec.kle_id = OKL_API.G_MISS_NUM ) THEN
582       l_pflv_rec.kle_id := NULL;
583     END IF;
584     IF (l_pflv_rec.fma_id = OKL_API.G_MISS_NUM ) THEN
585       l_pflv_rec.fma_id := NULL;
586     END IF;
587     IF (l_pflv_rec.comments = OKL_API.G_MISS_CHAR ) THEN
588       l_pflv_rec.comments := NULL;
589     END IF;
590     IF (l_pflv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
591       l_pflv_rec.object_version_number := NULL;
592     END IF;
593     IF (l_pflv_rec.request_id = OKL_API.G_MISS_NUM ) THEN
594       l_pflv_rec.request_id := NULL;
595     END IF;
596     IF (l_pflv_rec.program_application_id = OKL_API.G_MISS_NUM ) THEN
597       l_pflv_rec.program_application_id := NULL;
598     END IF;
599     IF (l_pflv_rec.program_id = OKL_API.G_MISS_NUM ) THEN
600       l_pflv_rec.program_id := NULL;
601     END IF;
602     IF (l_pflv_rec.program_update_date = OKL_API.G_MISS_DATE ) THEN
603       l_pflv_rec.program_update_date := NULL;
604     END IF;
605     IF (l_pflv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
606       l_pflv_rec.attribute_category := NULL;
607     END IF;
608     IF (l_pflv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
609       l_pflv_rec.attribute1 := NULL;
610     END IF;
611     IF (l_pflv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
612       l_pflv_rec.attribute2 := NULL;
613     END IF;
614     IF (l_pflv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
615       l_pflv_rec.attribute3 := NULL;
616     END IF;
617     IF (l_pflv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
618       l_pflv_rec.attribute4 := NULL;
619     END IF;
620     IF (l_pflv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
621       l_pflv_rec.attribute5 := NULL;
622     END IF;
623     IF (l_pflv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
624       l_pflv_rec.attribute6 := NULL;
625     END IF;
626     IF (l_pflv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
627       l_pflv_rec.attribute7 := NULL;
628     END IF;
629     IF (l_pflv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
630       l_pflv_rec.attribute8 := NULL;
631     END IF;
632     IF (l_pflv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
633       l_pflv_rec.attribute9 := NULL;
634     END IF;
635     IF (l_pflv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
636       l_pflv_rec.attribute10 := NULL;
637     END IF;
638     IF (l_pflv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
639       l_pflv_rec.attribute11 := NULL;
640     END IF;
641     IF (l_pflv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
642       l_pflv_rec.attribute12 := NULL;
643     END IF;
644     IF (l_pflv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
645       l_pflv_rec.attribute13 := NULL;
646     END IF;
647     IF (l_pflv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
648       l_pflv_rec.attribute14 := NULL;
649     END IF;
650     IF (l_pflv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
651       l_pflv_rec.attribute15 := NULL;
652     END IF;
653     IF (l_pflv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
654       l_pflv_rec.created_by := NULL;
655     END IF;
656     IF (l_pflv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
657       l_pflv_rec.creation_date := NULL;
658     END IF;
659     IF (l_pflv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
660       l_pflv_rec.last_updated_by := NULL;
661     END IF;
662     IF (l_pflv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
663       l_pflv_rec.last_update_date := NULL;
664     END IF;
665     IF (l_pflv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
666       l_pflv_rec.last_update_login := NULL;
667     END IF;
668   -- RABHUPAT - 2667636 -Start
669     IF (l_pflv_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
670       l_pflv_rec.currency_code := NULL;
671     END IF;
672     IF (l_pflv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR) THEN
673       l_pflv_rec.currency_conversion_code := NULL;
674     END IF;
675     IF (l_pflv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR) THEN
676       l_pflv_rec.currency_conversion_type := NULL;
677     END IF;
678     IF (l_pflv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM) THEN
679       l_pflv_rec.currency_conversion_rate := NULL;
680     END IF;
681     IF (l_pflv_rec.currency_conversion_date = OKC_API.G_MISS_DATE) THEN
682       l_pflv_rec.currency_conversion_date := NULL;
683     END IF;
684   -- RABHUPAT - 2667636 -End
685     RETURN(l_pflv_rec);
686   END null_out_defaults;
687 
688  -- Start of comments
689   --
690   -- Procedure Name  : validate_currency_record
691   -- Description     : Used for validation of Currency Code Conversion Coulms
692   -- Business Rules  : If transaction currency <> functional currency, then conversion columns
693   --                   are mandatory
694   --                   Else If transaction currency = functional currency, then conversion columns
695   --                   should all be NULL
696   -- Parameters      :
697   -- Version         : 1.0
698   -- History         : RABHUPAT 16-DEC-2002 2667636:Added new procedure
699   -- End of comments
700 
701   PROCEDURE validate_currency_record(p_pflv_rec      IN  pflv_rec_type,
702                                      x_return_status OUT NOCOPY VARCHAR2) IS
703   BEGIN
704     x_return_status := OKC_API.G_RET_STS_SUCCESS;
705     -- If transaction currency <> functional currency, then conversion columns
706     -- are mandatory
707     IF (p_pflv_rec.currency_code <> p_pflv_rec.currency_conversion_code) THEN
708       IF (p_pflv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR OR
709          p_pflv_rec.currency_conversion_type IS NULL) THEN
710         --SET MESSAGE
711         OKC_API.set_message(p_app_name     => G_APP_NAME,
712                             p_msg_name     => G_REQUIRED_VALUE,
713                             p_token1       => G_COL_NAME_TOKEN,
714                             p_token1_value => 'currency_conversion_type');
715         x_return_status := OKC_API.G_RET_STS_ERROR;
716       END IF;
717       IF (p_pflv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM OR
718          p_pflv_rec.currency_conversion_rate IS NULL) THEN
719         --SET MESSAGE
720         OKC_API.set_message(p_app_name     => G_APP_NAME,
721                             p_msg_name     => G_REQUIRED_VALUE,
722                             p_token1       => G_COL_NAME_TOKEN,
723                             p_token1_value => 'currency_conversion_rate');
724         x_return_status := OKC_API.G_RET_STS_ERROR;
725       END IF;
726       IF (p_pflv_rec.currency_conversion_date = OKC_API.G_MISS_DATE OR
727          p_pflv_rec.currency_conversion_date IS NULL) THEN
728         --SET MESSAGE
729         OKC_API.set_message(p_app_name     => G_APP_NAME,
730                             p_msg_name     => G_REQUIRED_VALUE,
731                             p_token1       => G_COL_NAME_TOKEN,
732                             p_token1_value => 'currency_conversion_date');
733         x_return_status := OKC_API.G_RET_STS_ERROR;
734       END IF;
735     -- Else If transaction currency = functional currency, then conversion columns
736     -- should all be NULL
737     ELSIF (p_pflv_rec.currency_code = p_pflv_rec.currency_conversion_code) THEN
738       IF (p_pflv_rec.currency_conversion_type IS NOT NULL) OR
739          (p_pflv_rec.currency_conversion_rate IS NOT NULL) OR
740          (p_pflv_rec.currency_conversion_date IS NOT NULL) THEN
741         --SET MESSAGE
742         -- Currency conversion columns should be all null
743         IF p_pflv_rec.currency_conversion_rate IS NOT NULL THEN
744           OKC_API.set_message(p_app_name     => G_APP_NAME,
745                               p_msg_name     => G_INVALID_VALUE,
746                               p_token1       => G_COL_NAME_TOKEN,
747                               p_token1_value => 'currency_conversion_rate');
748         END IF;
749         IF p_pflv_rec.currency_conversion_date IS NOT NULL THEN
750           OKC_API.set_message(p_app_name     => G_APP_NAME,
751                               p_msg_name     => G_INVALID_VALUE,
752                               p_token1       => G_COL_NAME_TOKEN,
753                               p_token1_value => 'currency_conversion_date');
754         END IF;
755         IF p_pflv_rec.currency_conversion_type IS NOT NULL THEN
756           OKC_API.set_message(p_app_name     => G_APP_NAME,
757                               p_msg_name     => G_INVALID_VALUE,
758                               p_token1       => G_COL_NAME_TOKEN,
759                               p_token1_value => 'currency_conversion_type');
760         END IF;
761         x_return_status := OKC_API.G_RET_STS_ERROR;
762       END IF;
763     ELSE
764         x_return_status := OKC_API.G_RET_STS_ERROR;
765     END IF;
766     IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
767         RAISE G_EXCEPTION_HALT_VALIDATION;
768     END IF;
769   EXCEPTION
770     WHEN G_EXCEPTION_HALT_VALIDATION THEN
771       x_return_status := OKC_API.G_RET_STS_ERROR;
772     WHEN OTHERS THEN
773       -- store SQL error message on message stack for caller
774       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
775                           p_msg_name     => g_unexpected_error,
776                           p_token1       => g_sqlcode_token,
777                           p_token1_value => sqlcode,
778                           p_token2       => g_sqlerrm_token,
779                           p_token2_value => sqlerrm);
780       -- notify caller of an UNEXPECTED error
781       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
782   END validate_currency_record;
783 ---------------------------------------------------------------------------------
784   -- Start of comments
785   --
786   -- Procedure Name  : validate_currency_code
787   -- Description     : Validation of Currency Code
788   -- Business Rules  :
789   -- Parameters      :
790   -- Version         : 1.0
791   -- History         : RABHUPAT 16-DEC-2002 2667636:Added new procedure
792   -- End of comments
793 
794   PROCEDURE validate_currency_code(p_pflv_rec      IN  pflv_rec_type,
795                                    x_return_status OUT NOCOPY VARCHAR2) IS
796     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
797   BEGIN
798     -- initialize return status
799     x_return_status := OKC_API.G_RET_STS_SUCCESS;
800     -- data is required
801     IF (p_pflv_rec.currency_code IS NULL) OR
802        (p_pflv_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
803       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
804                           ,p_msg_name     => G_REQUIRED_VALUE
805                           ,p_token1       => G_COL_NAME_TOKEN
806                           ,p_token1_value => 'currency_code');
807 
808       -- halt further validation of this column
809       RAISE G_EXCEPTION_HALT_VALIDATION;
810     END IF;
811     -- check from currency values using the generic okl_util.validate_currency_code
812     l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_code(p_pflv_rec.currency_code);
813     IF (l_return_status <>  OKC_API.G_TRUE) THEN
814           OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
815                           p_msg_name     => g_invalid_value,
816                           p_token1       => g_col_name_token,
817                           p_token1_value => 'currency_code');
818       -- halt further validation of this column
819       RAISE G_EXCEPTION_HALT_VALIDATION;
820     END IF;
821   EXCEPTION
822     WHEN G_EXCEPTION_HALT_VALIDATION THEN
823       x_return_status := OKC_API.G_RET_STS_ERROR;
824     WHEN OTHERS THEN
825       -- store SQL error message on message stack for caller
826       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
827                           p_msg_name     => g_unexpected_error,
828                           p_token1       => g_sqlcode_token,
829                           p_token1_value => sqlcode,
830                           p_token2       => g_sqlerrm_token,
831                           p_token2_value => sqlerrm);
832       -- notify caller of an UNEXPECTED error
833       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
834   END validate_currency_code;
835 ---------------------------------------------------------------------------------
836   -- Start of comments
837   --
838   -- Procedure Name  : validate_currency_con_code
839   -- Description     : Validation of Currency Conversion Code
840   -- Business Rules  :
841   -- Parameters      :
842   -- Version         : 1.0
843   -- History         : RABHUPAT 16-DEC-2002 2667636:Added new procedure
844   -- End of comments
845 
846   PROCEDURE validate_currency_con_code(p_pflv_rec      IN  pflv_rec_type,
847                                        x_return_status OUT NOCOPY VARCHAR2) IS
848     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
849   BEGIN
850     -- initialize return status
851     x_return_status := OKC_API.G_RET_STS_SUCCESS;
852     -- data is required
853     IF (p_pflv_rec.currency_conversion_code IS NULL) OR
854        (p_pflv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR) THEN
855       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
856                           ,p_msg_name     => G_REQUIRED_VALUE
857                           ,p_token1       => G_COL_NAME_TOKEN
858                           ,p_token1_value => 'currency_conversion_code');
859       -- halt further validation of this column
860       RAISE G_EXCEPTION_HALT_VALIDATION;
861     END IF;
862     -- check from currency values using the generic okl_util.validate_currency_code
863     l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_code(p_pflv_rec.currency_conversion_code);
864     IF (l_return_status <>  OKC_API.G_TRUE) THEN
865           OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
866                           p_msg_name     => g_invalid_value,
867                           p_token1       => g_col_name_token,
868                           p_token1_value => 'currency_conversion_code');
869       -- halt further validation of this column
870       RAISE G_EXCEPTION_HALT_VALIDATION;
871     END IF;
872   EXCEPTION
873     WHEN G_EXCEPTION_HALT_VALIDATION THEN
874       x_return_status := OKC_API.G_RET_STS_ERROR;
875     WHEN OTHERS THEN
876       -- store SQL error message on message stack for caller
877       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
878                           p_msg_name     => g_unexpected_error,
879                           p_token1       => g_sqlcode_token,
880                           p_token1_value => sqlcode,
881                           p_token2       => g_sqlerrm_token,
882                           p_token2_value => sqlerrm);
883 
884       -- notify caller of an UNEXPECTED error
885       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
886   END validate_currency_con_code;
887 ---------------------------------------------------------------------------------
888   -- Start of comments
889   --
890   -- Procedure Name  : validate_currency_con_type
891   -- Description     : Validation of Currency Conversion type
892   -- Business Rules  :
893   -- Parameters      :
894   -- Version         : 1.0
895   -- History         : RABHUPAT 16-DEC-2002 2667636:Added new procedure
896   -- End of comments
897 
898   PROCEDURE validate_currency_con_type(p_pflv_rec      IN  pflv_rec_type,
899                                        x_return_status OUT NOCOPY VARCHAR2) IS
900     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
901   BEGIN
902     -- initialize return status
903     x_return_status := OKC_API.G_RET_STS_SUCCESS;
904     IF (p_pflv_rec.currency_conversion_type <> OKL_API.G_MISS_CHAR AND
905        p_pflv_rec.currency_conversion_type IS NOT NULL) THEN
906       -- check from currency values using the generic okl_util.validate_currency_code
907       l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_con_type(p_pflv_rec.currency_conversion_type);
908       IF (l_return_status <>  OKC_API.G_TRUE) THEN
909             OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
910                           p_msg_name     => g_invalid_value,
911                           p_token1       => g_col_name_token,
912                           p_token1_value => 'currency_conversion_type');
913         -- halt further validation of this column
914         RAISE G_EXCEPTION_HALT_VALIDATION;
915       END IF;
916     END IF;
917   EXCEPTION
918     WHEN G_EXCEPTION_HALT_VALIDATION THEN
919       x_return_status := OKC_API.G_RET_STS_ERROR;
920     WHEN OTHERS THEN
921       -- store SQL error message on message stack for caller
922       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
923                           p_msg_name     => g_unexpected_error,
924                           p_token1       => g_sqlcode_token,
925                           p_token1_value => sqlcode,
926                           p_token2       => g_sqlerrm_token,
927                           p_token2_value => sqlerrm);
928       -- notify caller of an UNEXPECTED error
929       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
930   END validate_currency_con_type;
931 
932   ---------------------------------
933   -- Validate_Attributes for: ID --
934   ---------------------------------
935   PROCEDURE validate_id(
936     x_return_status                OUT NOCOPY VARCHAR2,
937     p_id                           IN NUMBER) IS
938   BEGIN
939     x_return_status := OKL_API.G_RET_STS_SUCCESS;
940     IF (p_id = OKL_API.G_MISS_NUM OR
941         p_id IS NULL)
942     THEN
943       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
944       x_return_status := OKL_API.G_RET_STS_ERROR;
945       RAISE G_EXCEPTION_HALT_VALIDATION;
946     END IF;
947   EXCEPTION
948     WHEN G_EXCEPTION_HALT_VALIDATION THEN
949       null;
950     WHEN OTHERS THEN
951       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
952                           ,p_msg_name     => G_UNEXPECTED_ERROR
953                           ,p_token1       => G_SQLCODE_TOKEN
954                           ,p_token1_value => SQLCODE
955                           ,p_token2       => G_SQLERRM_TOKEN
956                           ,p_token2_value => SQLERRM);
957       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
958   END validate_id;
959   ----------------------------------------
960   -- Validate_Attributes for: SFWT_FLAG --
961   ----------------------------------------
962   PROCEDURE validate_sfwt_flag(
963     x_return_status                OUT NOCOPY VARCHAR2,
964     p_sfwt_flag                    IN VARCHAR2) IS
965   BEGIN
966     x_return_status := OKL_API.G_RET_STS_SUCCESS;
967     IF (p_sfwt_flag = OKL_API.G_MISS_CHAR OR
968         p_sfwt_flag IS NULL)
969     THEN
970       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'sfwt_flag');
971       x_return_status := OKL_API.G_RET_STS_ERROR;
972       RAISE G_EXCEPTION_HALT_VALIDATION;
973     END IF;
974   EXCEPTION
975     WHEN G_EXCEPTION_HALT_VALIDATION THEN
976       null;
977     WHEN OTHERS THEN
978       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
979                           ,p_msg_name     => G_UNEXPECTED_ERROR
980                           ,p_token1       => G_SQLCODE_TOKEN
981                           ,p_token1_value => SQLCODE
982                           ,p_token2       => G_SQLERRM_TOKEN
983                           ,p_token2_value => SQLERRM);
984       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
985   END validate_sfwt_flag;
986   ----------------------------------------------------------
987   -- Validate_Attributes for: DATE_STRATEGY_EXECUTION_DUE --
988   ----------------------------------------------------------
989   PROCEDURE validate_date_strat1(
990     x_return_status                OUT NOCOPY VARCHAR2,
991     p_date_strategy_execution_due  IN DATE) IS
992   BEGIN
993     x_return_status := OKL_API.G_RET_STS_SUCCESS;
994     IF (p_date_strategy_execution_due = OKL_API.G_MISS_DATE OR
995         p_date_strategy_execution_due IS NULL)
996     THEN
997       OKL_API.set_message(p_app_name     => OKL_API.G_APP_NAME,
998                           p_msg_name     => 'OKL_AM_REQ_FIELD_ERR',
999                           p_token1       => 'PROMPT',
1000                           p_token1_value => OKL_AM_UTIL_PVT.get_ak_attribute('OKL_EXE_DUE_DATE'));
1001 
1002       --OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'date_strategy_execution_due');
1003       x_return_status := OKL_API.G_RET_STS_ERROR;
1004       RAISE G_EXCEPTION_HALT_VALIDATION;
1005     END IF;
1006   EXCEPTION
1007     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1008       null;
1009     WHEN OTHERS THEN
1010       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1011                           ,p_msg_name     => G_UNEXPECTED_ERROR
1012                           ,p_token1       => G_SQLCODE_TOKEN
1013                           ,p_token1_value => SQLCODE
1014                           ,p_token2       => G_SQLERRM_TOKEN
1015                           ,p_token2_value => SQLERRM);
1016       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1017   END validate_date_strat1;
1018   ----------------------------------------------
1019   -- Validate_Attributes for: TRX_STATUS_CODE --
1020   ----------------------------------------------
1021   PROCEDURE validate_trx_status_code(
1022     x_return_status                OUT NOCOPY VARCHAR2,
1023     p_trx_status_code              IN VARCHAR2) IS
1024   BEGIN
1025     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1026     IF (p_trx_status_code = OKL_API.G_MISS_CHAR OR
1027         p_trx_status_code IS NULL)
1028     THEN
1029       OKL_API.set_message(p_app_name     => OKL_API.G_APP_NAME,
1030                           p_msg_name     => 'OKL_AM_REQ_FIELD_ERR',
1031                           p_token1       => 'PROMPT',
1032                           p_token1_value => OKL_AM_UTIL_PVT.get_ak_attribute('OKL_STATUS'));
1033 
1034 --      OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'trx_status_code');
1035       x_return_status := OKL_API.G_RET_STS_ERROR;
1036       RAISE G_EXCEPTION_HALT_VALIDATION;
1037     END IF;
1038   EXCEPTION
1039     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1040       null;
1041     WHEN OTHERS THEN
1042       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1043                           ,p_msg_name     => G_UNEXPECTED_ERROR
1044                           ,p_token1       => G_SQLCODE_TOKEN
1045                           ,p_token1_value => SQLCODE
1046                           ,p_token2       => G_SQLERRM_TOKEN
1047                           ,p_token2_value => SQLERRM);
1048       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1049   END validate_trx_status_code;
1050   --------------------------------------------------------
1051   -- Validate_Attributes for: ASSET_TRACK_STRATEGY_CODE --
1052   --------------------------------------------------------
1053   PROCEDURE validate_asset_trac3(
1054     x_return_status                OUT NOCOPY VARCHAR2,
1055     p_asset_track_strategy_code    IN VARCHAR2) IS
1056   BEGIN
1057     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1058     IF (p_asset_track_strategy_code = OKL_API.G_MISS_CHAR OR
1059         p_asset_track_strategy_code IS NULL)
1060     THEN
1061       OKL_API.set_message(p_app_name     => OKL_API.G_APP_NAME,
1062                           p_msg_name     => 'OKL_AM_REQ_FIELD_ERR',
1063                           p_token1       => 'PROMPT',
1064                           p_token1_value => OKL_AM_UTIL_PVT.get_ak_attribute('OKL_STRATEGY'));
1065 
1066 --      OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'asset_track_strategy_code');
1067       x_return_status := OKL_API.G_RET_STS_ERROR;
1068       RAISE G_EXCEPTION_HALT_VALIDATION;
1069     END IF;
1070   EXCEPTION
1071     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1072       null;
1073     WHEN OTHERS THEN
1074       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1075                           ,p_msg_name     => G_UNEXPECTED_ERROR
1076                           ,p_token1       => G_SQLCODE_TOKEN
1077                           ,p_token1_value => SQLCODE
1078                           ,p_token2       => G_SQLERRM_TOKEN
1079                           ,p_token2_value => SQLERRM);
1080       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1081   END validate_asset_trac3;
1082   -------------------------------------
1083   -- Validate_Attributes for: PFC_ID --
1084   -------------------------------------
1085   PROCEDURE validate_pfc_id(
1086     x_return_status                OUT NOCOPY VARCHAR2,
1087     p_pfc_id                       IN NUMBER) IS
1088   BEGIN
1089     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1090     IF (p_pfc_id = OKL_API.G_MISS_NUM OR
1091         p_pfc_id IS NULL)
1092     THEN
1093       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'pfc_id');
1094       x_return_status := OKL_API.G_RET_STS_ERROR;
1095       RAISE G_EXCEPTION_HALT_VALIDATION;
1096     END IF;
1097   EXCEPTION
1098     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1099       null;
1100     WHEN OTHERS THEN
1101       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1102                           ,p_msg_name     => G_UNEXPECTED_ERROR
1103                           ,p_token1       => G_SQLCODE_TOKEN
1104                           ,p_token1_value => SQLCODE
1105                           ,p_token2       => G_SQLERRM_TOKEN
1106                           ,p_token2_value => SQLERRM);
1107       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1108   END validate_pfc_id;
1109   -------------------------------------
1110   -- Validate_Attributes for: TMB_ID --
1111   -------------------------------------
1112   PROCEDURE validate_tmb_id(
1113     x_return_status                OUT NOCOPY VARCHAR2,
1114     p_tmb_id                       IN NUMBER) IS
1115   BEGIN
1116     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1117     IF (p_tmb_id = OKL_API.G_MISS_NUM OR
1118         p_tmb_id IS NULL)
1119     THEN
1120 
1121       OKL_API.set_message(p_app_name     => OKL_API.G_APP_NAME,
1122                           p_msg_name     => 'OKL_AM_REQ_FIELD_ERR',
1123                           p_token1       => 'PROMPT',
1124                           p_token1_value => OKL_AM_UTIL_PVT.get_ak_attribute('OKL_ASSIGNMENT_GROUP'));
1125 
1126 --      OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'tmb_id');
1127       x_return_status := OKL_API.G_RET_STS_ERROR;
1128       RAISE G_EXCEPTION_HALT_VALIDATION;
1129     END IF;
1130   EXCEPTION
1131     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1132       null;
1133     WHEN OTHERS THEN
1134       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1135                           ,p_msg_name     => G_UNEXPECTED_ERROR
1136                           ,p_token1       => G_SQLCODE_TOKEN
1137                           ,p_token1_value => SQLCODE
1138                           ,p_token2       => G_SQLERRM_TOKEN
1139                           ,p_token2_value => SQLERRM);
1140       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1141   END validate_tmb_id;
1142   ----------------------------------------------------
1143   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
1144   ----------------------------------------------------
1145   PROCEDURE validate_object_version_number(
1146     x_return_status                OUT NOCOPY VARCHAR2,
1147     p_object_version_number        IN NUMBER) IS
1148   BEGIN
1149     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1150     IF (p_object_version_number = OKL_API.G_MISS_NUM OR
1151         p_object_version_number IS NULL)
1152     THEN
1153       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
1154       x_return_status := OKL_API.G_RET_STS_ERROR;
1155       RAISE G_EXCEPTION_HALT_VALIDATION;
1156     END IF;
1157   EXCEPTION
1158     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1159       null;
1160     WHEN OTHERS THEN
1161       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1162                           ,p_msg_name     => G_UNEXPECTED_ERROR
1163                           ,p_token1       => G_SQLCODE_TOKEN
1164                           ,p_token1_value => SQLCODE
1165                           ,p_token2       => G_SQLERRM_TOKEN
1166                           ,p_token2_value => SQLERRM);
1167       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1168   END validate_object_version_number;
1169 
1170   ---------------------------------------------------------------------------
1171   -- FUNCTION Validate_Attributes
1172   ---------------------------------------------------------------------------
1173   -----------------------------------------------
1174   -- Validate_Attributes for:OKL_PRTFL_LINES_V --
1175   -----------------------------------------------
1176   -- Start of comments
1177   --
1178   -- Procedure Name  : validate_attributes
1179   -- Description     : for:OKL_PRTFL_LINES_V
1180   -- Business Rules  :
1181   -- Parameters      :
1182   -- Version         : 1.0
1183   -- History         : RMUNJULU 19-DEC-2002 2667636
1184   --                 : modified for multicurrency changes
1185   -- End of comments
1186 
1187   FUNCTION Validate_Attributes (
1188     p_pflv_rec                     IN pflv_rec_type
1189   ) RETURN VARCHAR2 IS
1190     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1191     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1192   BEGIN
1193     -----------------------------
1194     -- Column Level Validation --
1195     -----------------------------
1196     -- ***
1197     -- id
1198     -- ***
1199     validate_id(l_return_status, p_pflv_rec.id);
1200     -- store the highest degree of error
1201     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1202        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1203            x_return_status := l_return_status;
1204        END IF;
1205     END IF;
1206 
1207     -- ***
1208     -- sfwt_flag
1209     -- ***
1210     validate_sfwt_flag(l_return_status, p_pflv_rec.sfwt_flag);
1211     -- store the highest degree of error
1212     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1213        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1214            x_return_status := l_return_status;
1215        END IF;
1216     END IF;
1217 
1218     -- ***
1219     -- date_strategy_execution_due
1220     -- ***
1221     validate_date_strat1(l_return_status, p_pflv_rec.date_strategy_execution_due);
1222     -- store the highest degree of error
1223     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1224        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1225            x_return_status := l_return_status;
1226        END IF;
1227     END IF;
1228 
1229     -- ***
1230     -- trx_status_code
1231     -- ***
1232     validate_trx_status_code(l_return_status, p_pflv_rec.trx_status_code);
1233     -- store the highest degree of error
1234     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1235        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1236            x_return_status := l_return_status;
1237        END IF;
1238     END IF;
1239 
1240     -- ***
1241     -- asset_track_strategy_code
1242     -- ***
1243     validate_asset_trac3(l_return_status, p_pflv_rec.asset_track_strategy_code);
1244     -- store the highest degree of error
1245     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1246        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1247            x_return_status := l_return_status;
1248        END IF;
1249     END IF;
1250 
1251     -- ***
1252     -- pfc_id
1253     -- ***
1254     validate_pfc_id(l_return_status, p_pflv_rec.pfc_id);
1255     -- store the highest degree of error
1256     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1257        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1258            x_return_status := l_return_status;
1259        END IF;
1260     END IF;
1261 
1262     -- ***
1263     -- tmb_id
1264     -- ***
1265     validate_tmb_id(l_return_status, p_pflv_rec.tmb_id);
1266     -- store the highest degree of error
1267     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1268        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1269            x_return_status := l_return_status;
1270        END IF;
1271     END IF;
1272 
1273     -- ***
1274     -- object_version_number
1275     -- ***
1276     validate_object_version_number(l_return_status, p_pflv_rec.object_version_number);
1277     -- store the highest degree of error
1278     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1279        IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1280            x_return_status := l_return_status;
1281        END IF;
1282     END IF;
1283 
1284   -- RMUNJULU - 2667636 - Start
1285     validate_currency_code(p_pflv_rec      => p_pflv_rec,
1286                            x_return_status => l_return_status);
1287     -- store the highest degree of error
1288     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1289        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1290            x_return_status := l_return_status;
1291        END IF;
1292     END IF;
1293 
1294     validate_currency_con_code(p_pflv_rec      => p_pflv_rec,
1295                                x_return_status => l_return_status);
1296     -- store the highest degree of error
1297     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1298        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1299            x_return_status := l_return_status;
1300        END IF;
1301     END IF;
1302 
1303     validate_currency_con_type(p_pflv_rec      => p_pflv_rec,
1304                                x_return_status => l_return_status);
1305     -- store the highest degree of error
1306     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1307        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1308            x_return_status := l_return_status;
1309        END IF;
1310     END IF;
1311   -- RMUNJULU - 2667636 - End
1312 
1313     RETURN(x_return_status);
1314   EXCEPTION
1315     WHEN OTHERS THEN
1316       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1317                           ,p_msg_name     => G_UNEXPECTED_ERROR
1318                           ,p_token1       => G_SQLCODE_TOKEN
1319                           ,p_token1_value => SQLCODE
1320                           ,p_token2       => G_SQLERRM_TOKEN
1321                           ,p_token2_value => SQLERRM);
1322       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1323       RETURN(x_return_status);
1324   END Validate_Attributes;
1325   ---------------------------------------------------------------------------
1326   -- PROCEDURE Validate_Record
1327   ---------------------------------------------------------------------------
1328   -------------------------------------------
1329   -- Validate Record for:OKL_PRTFL_LINES_V --
1330   -------------------------------------------
1331   -- Start of comments
1332   --
1333   -- Function  Name  : Validate_Record
1334   -- Description     : for:OKL_PRTFL_LINES_V
1335   -- Business Rules  :
1336   -- Parameters      :
1337   -- Version         : 1.0
1338   -- History         : RABHUPAT 17-DEC-2002 2667636
1339   --                 :modified for multicurrency changes
1340   -- End of comments
1341   FUNCTION Validate_Record (
1342     p_pflv_rec IN pflv_rec_type,
1343     p_db_pflv_rec IN pflv_rec_type
1344   ) RETURN VARCHAR2 IS
1345     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1346     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1347 
1348     ------------------------------------
1349     -- FUNCTION validate_foreign_keys --
1350     ------------------------------------
1351     FUNCTION validate_foreign_keys (
1352       p_pflv_rec IN pflv_rec_type,
1353       p_db_pflv_rec IN pflv_rec_type
1354     ) RETURN VARCHAR2 IS
1355       item_not_found_error           EXCEPTION;
1356       -- PAGARG 16-Aug-2004 3832404: added p_lookup_type parameter
1357       CURSOR okl_pflv_tsuv_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
1358       SELECT 'x'
1359         FROM fnd_lookups
1360        WHERE fnd_lookups.lookup_code = p_lookup_code
1361          AND fnd_lookups.lookup_type = p_lookup_type;
1362 
1363       l_okl_pflv_tsuv_fk             okl_pflv_tsuv_fk_csr%ROWTYPE;
1364 
1365       -- PAGARG 16-Aug-2004 3832404: added p_lookup_type parameter
1366       CURSOR okl_pflv_atsv_fk_csr (p_lookup_code IN VARCHAR2, p_lookup_type IN VARCHAR2) IS
1367       SELECT 'x'
1368         FROM fnd_lookups
1369        WHERE fnd_lookups.lookup_code = p_lookup_code
1370          AND fnd_lookups.lookup_type = p_lookup_type;
1371       l_okl_pflv_atsv_fk             okl_pflv_atsv_fk_csr%ROWTYPE;
1372 
1373       CURSOR okl_pflv_pfcv_fk_csr (p_id IN NUMBER) IS
1374       SELECT 'x'
1375         FROM Okl_Prtfl_Cntrcts_V
1376        WHERE okl_prtfl_cntrcts_v.id = p_id;
1377       l_okl_pflv_pfcv_fk             okl_pflv_pfcv_fk_csr%ROWTYPE;
1378 
1379       CURSOR okl_pflv_klev_fk_csr (p_id IN NUMBER) IS
1380       SELECT 'x'
1381         FROM Okl_K_Lines_V
1382        WHERE okl_k_lines_v.id     = p_id;
1383       l_okl_pflv_klev_fk             okl_pflv_klev_fk_csr%ROWTYPE;
1384 
1385       CURSOR okl_pflv_tmbv_fk_csr (p_team_id IN NUMBER) IS
1386       SELECT 'x'
1387         FROM Jtf_Rs_Teams_Vl
1388        WHERE jtf_rs_teams_vl.team_id = p_team_id;
1389       l_okl_pflv_tmbv_fk             okl_pflv_tmbv_fk_csr%ROWTYPE;
1390 
1391       CURSOR okl_pflv_fmav_fk_csr (p_id IN NUMBER) IS
1392       SELECT 'x'
1393         FROM Okl_Formulae_V
1394        WHERE okl_formulae_v.id    = p_id;
1395       l_okl_pflv_fmav_fk             okl_pflv_fmav_fk_csr%ROWTYPE;
1396 
1397       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1398       x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1399       l_row_notfound                 BOOLEAN := TRUE;
1400     BEGIN
1401       IF ((p_pflv_rec.TMB_ID IS NOT NULL)
1402        AND
1403           (p_pflv_rec.TMB_ID <> p_db_pflv_rec.TMB_ID))
1404       THEN
1405         OPEN okl_pflv_tmbv_fk_csr (p_pflv_rec.TMB_ID);
1406         FETCH okl_pflv_tmbv_fk_csr INTO l_okl_pflv_tmbv_fk;
1407         l_row_notfound := okl_pflv_tmbv_fk_csr%NOTFOUND;
1408         CLOSE okl_pflv_tmbv_fk_csr;
1409         IF (l_row_notfound) THEN
1410           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TMB_ID');
1411           l_return_status := OKL_API.G_RET_STS_ERROR;
1412         END IF;
1413       END IF;
1414 
1415       -- store the highest degree of error
1416       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1417         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1418           x_return_status := l_return_status;
1419         END IF;
1420       END IF;
1421 
1422 
1423       IF ((p_pflv_rec.ASSET_TRACK_STRATEGY_CODE IS NOT NULL)
1424        AND
1425           (p_pflv_rec.ASSET_TRACK_STRATEGY_CODE <> p_db_pflv_rec.ASSET_TRACK_STRATEGY_CODE))
1426       THEN
1427         -- PAGARG 16-Aug-2004 3832404: Passing lookup_type as parameter
1428         OPEN okl_pflv_atsv_fk_csr (p_pflv_rec.ASSET_TRACK_STRATEGY_CODE, 'OKL_ASSET_TRACK_STRATEGIES');
1429         FETCH okl_pflv_atsv_fk_csr INTO l_okl_pflv_atsv_fk;
1430         l_row_notfound := okl_pflv_atsv_fk_csr%NOTFOUND;
1431         CLOSE okl_pflv_atsv_fk_csr;
1432         IF (l_row_notfound) THEN
1433           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'ASSET_TRACK_STRATEGY_CODE');
1434           l_return_status := OKL_API.G_RET_STS_ERROR;
1435         END IF;
1436       END IF;
1437 
1438 
1439       -- store the highest degree of error
1440       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1441         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1442           x_return_status := l_return_status;
1443         END IF;
1444       END IF;
1445 
1446 
1447       IF ((p_pflv_rec.FMA_ID IS NOT NULL)
1448        AND
1449           (p_pflv_rec.FMA_ID <> p_db_pflv_rec.FMA_ID))
1450       THEN
1451         OPEN okl_pflv_fmav_fk_csr (p_pflv_rec.FMA_ID);
1452         FETCH okl_pflv_fmav_fk_csr INTO l_okl_pflv_fmav_fk;
1453         l_row_notfound := okl_pflv_fmav_fk_csr%NOTFOUND;
1454         CLOSE okl_pflv_fmav_fk_csr;
1455         IF (l_row_notfound) THEN
1456           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'FMA_ID');
1457           l_return_status := OKL_API.G_RET_STS_ERROR;
1458         END IF;
1459       END IF;
1460 
1461       -- store the highest degree of error
1462       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1463         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1464           x_return_status := l_return_status;
1465         END IF;
1466       END IF;
1467 
1468       IF ((p_pflv_rec.KLE_ID IS NOT NULL)
1469        AND
1470           (p_pflv_rec.KLE_ID <> p_db_pflv_rec.KLE_ID))
1471       THEN
1472         OPEN okl_pflv_klev_fk_csr (p_pflv_rec.KLE_ID);
1473         FETCH okl_pflv_klev_fk_csr INTO l_okl_pflv_klev_fk;
1474         l_row_notfound := okl_pflv_klev_fk_csr%NOTFOUND;
1475         CLOSE okl_pflv_klev_fk_csr;
1476         IF (l_row_notfound) THEN
1477           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'KLE_ID');
1478           l_return_status := OKL_API.G_RET_STS_ERROR;
1479         END IF;
1480       END IF;
1481 
1482       -- store the highest degree of error
1483       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1484         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1485           x_return_status := l_return_status;
1486         END IF;
1487       END IF;
1488 
1489       IF ((p_pflv_rec.PFC_ID IS NOT NULL)
1490        AND
1491           (p_pflv_rec.PFC_ID <> p_db_pflv_rec.PFC_ID))
1492       THEN
1493         OPEN okl_pflv_pfcv_fk_csr (p_pflv_rec.PFC_ID);
1494         FETCH okl_pflv_pfcv_fk_csr INTO l_okl_pflv_pfcv_fk;
1495         l_row_notfound := okl_pflv_pfcv_fk_csr%NOTFOUND;
1496         CLOSE okl_pflv_pfcv_fk_csr;
1497         IF (l_row_notfound) THEN
1498           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'PFC_ID');
1499           l_return_status := OKL_API.G_RET_STS_ERROR;
1500         END IF;
1501       END IF;
1502 
1503       -- store the highest degree of error
1504       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1505         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1506           x_return_status := l_return_status;
1507         END IF;
1508       END IF;
1509 
1510       IF ((p_pflv_rec.TRX_STATUS_CODE IS NOT NULL)
1511        AND
1512           (p_pflv_rec.TRX_STATUS_CODE <> p_db_pflv_rec.TRX_STATUS_CODE))
1513       THEN
1514         -- PAGARG 16-Aug-2004 3832404: Passing lookup_type as parameter
1515         OPEN okl_pflv_tsuv_fk_csr (p_pflv_rec.TRX_STATUS_CODE, 'OKL_TRANSACTION_STATUS');
1516         FETCH okl_pflv_tsuv_fk_csr INTO l_okl_pflv_tsuv_fk;
1517         l_row_notfound := okl_pflv_tsuv_fk_csr%NOTFOUND;
1518         CLOSE okl_pflv_tsuv_fk_csr;
1519         IF (l_row_notfound) THEN
1520           OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TRX_STATUS_CODE');
1521           l_return_status := OKL_API.G_RET_STS_ERROR;
1522         END IF;
1523       END IF;
1524 
1525       -- store the highest degree of error
1526       IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1527         IF (x_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1528           x_return_status := l_return_status;
1529         END IF;
1530       END IF;
1531 
1532 
1533       RETURN (x_return_status);
1534     EXCEPTION
1535       WHEN OTHERS THEN
1536         -- store SQL error message on message stack for caller
1537         OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1538                             ,p_msg_name     => G_UNEXPECTED_ERROR
1539                             ,p_token1       => G_SQLCODE_TOKEN
1540                             ,p_token1_value => sqlcode
1541                             ,p_token2       => G_SQLERRM_TOKEN
1542                             ,p_token2_value => sqlerrm);
1543 
1544         --notify caller of an UNEXPECTED error
1545         x_return_status  := OKL_API.G_RET_STS_UNEXP_ERROR;
1546 
1547         --return status to caller
1548         RETURN x_return_status;
1549 
1550     END validate_foreign_keys;
1551   BEGIN
1552 
1553     -- RABHUPAT - 2667636 - Start
1554     -- Validate Currency conversion Code,type,rate and Date
1555 
1556     validate_currency_record(p_pflv_rec      => p_pflv_rec,
1557                                  x_return_status => l_return_status);
1558     -- store the highest degree of error
1559     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1560        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1561            x_return_status := l_return_status;
1562        END IF;
1563     END IF;
1564 
1565   -- RABHUPAT - 2667636 - End
1566   l_return_status := validate_foreign_keys(p_pflv_rec, p_db_pflv_rec);
1567     -- store the highest degree of error
1568     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1569        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1570            x_return_status := l_return_status;
1571        END IF;
1572     END IF;
1573     RETURN (x_return_status);
1574   END Validate_Record;
1575   FUNCTION Validate_Record (
1576     p_pflv_rec IN pflv_rec_type
1577   ) RETURN VARCHAR2 IS
1578     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1579     l_db_pflv_rec                  pflv_rec_type := get_rec(p_pflv_rec);
1580   BEGIN
1581     l_return_status := Validate_Record(p_pflv_rec => p_pflv_rec,
1582                                        p_db_pflv_rec => l_db_pflv_rec);
1583 
1584 
1585     RETURN (l_return_status);
1586   END Validate_Record;
1587 
1588   ---------------------------------------------------------------------------
1589   -- PROCEDURE Migrate
1590   ---------------------------------------------------------------------------
1591   -- Start of comments
1592   --
1593   -- Procedure Name  : Migrate
1594   -- Description     : from _V to _B
1595   -- Business Rules  :
1596   -- Parameters      :
1597   -- Version         : 1.0
1598   -- History         : RABHUPAT 17-DEC-2002 2667636
1599   --                 : modified for multicurrency changes
1600   -- End of comments
1601   PROCEDURE migrate (
1602     p_from IN pflv_rec_type,
1603     p_to   IN OUT NOCOPY pfl_rec_type
1604   ) IS
1605   BEGIN
1606     p_to.id := p_from.id;
1607     p_to.budget_amount := p_from.budget_amount;
1608     p_to.date_strategy_executed := p_from.date_strategy_executed;
1609     p_to.date_strategy_execution_due := p_from.date_strategy_execution_due;
1610     p_to.date_budget_amount_last_review := p_from.date_budget_amount_last_review;
1611     p_to.trx_status_code := p_from.trx_status_code;
1612     p_to.asset_track_strategy_code := p_from.asset_track_strategy_code;
1613     p_to.pfc_id := p_from.pfc_id;
1614     p_to.tmb_id := p_from.tmb_id;
1615     p_to.kle_id := p_from.kle_id;
1616     p_to.fma_id := p_from.fma_id;
1617     p_to.object_version_number := p_from.object_version_number;
1618     p_to.request_id := p_from.request_id;
1619     p_to.program_application_id := p_from.program_application_id;
1620     p_to.program_id := p_from.program_id;
1621     p_to.program_update_date := p_from.program_update_date;
1622     p_to.attribute_category := p_from.attribute_category;
1623     p_to.attribute1 := p_from.attribute1;
1624     p_to.attribute2 := p_from.attribute2;
1625     p_to.attribute3 := p_from.attribute3;
1626     p_to.attribute4 := p_from.attribute4;
1627     p_to.attribute5 := p_from.attribute5;
1628     p_to.attribute6 := p_from.attribute6;
1629     p_to.attribute7 := p_from.attribute7;
1630     p_to.attribute8 := p_from.attribute8;
1631     p_to.attribute9 := p_from.attribute9;
1632     p_to.attribute10 := p_from.attribute10;
1633     p_to.attribute11 := p_from.attribute11;
1634     p_to.attribute12 := p_from.attribute12;
1635     p_to.attribute13 := p_from.attribute13;
1636     p_to.attribute14 := p_from.attribute14;
1637     p_to.attribute15 := p_from.attribute15;
1638     p_to.created_by := p_from.created_by;
1639     p_to.creation_date := p_from.creation_date;
1640     p_to.last_updated_by := p_from.last_updated_by;
1641     p_to.last_update_date := p_from.last_update_date;
1642     p_to.last_update_login := p_from.last_update_login;
1643   -- RABHUPAT - 2667636 - Start
1644     p_to.currency_code  := p_from.currency_code;
1645     p_to.currency_conversion_code  := p_from.currency_conversion_code;
1646     p_to.currency_conversion_type  := p_from.currency_conversion_type;
1647     p_to.currency_conversion_rate  := p_from.currency_conversion_rate;
1648     p_to.currency_conversion_date  := p_from.currency_conversion_date;
1649   -- RABHUPAT - 2667636 - End
1650   END migrate;
1651 
1652   -- Start of comments
1653   --
1654   -- Procedure Name  : Migrate
1655   -- Description     : from _B to _V
1656   -- Business Rules  :
1657   -- Parameters      :
1658   -- Version         : 1.0
1659   -- History         : RABHUPAT 17-DEC-2002 2667636
1660   --                 : modified for multicurrency changes
1661   -- End of comments
1662   PROCEDURE migrate (
1663     p_from IN pfl_rec_type,
1664     p_to   IN OUT NOCOPY pflv_rec_type
1665   ) IS
1666   BEGIN
1667     p_to.id := p_from.id;
1668     p_to.budget_amount := p_from.budget_amount;
1669     p_to.date_strategy_executed := p_from.date_strategy_executed;
1670     p_to.date_strategy_execution_due := p_from.date_strategy_execution_due;
1671     p_to.date_budget_amount_last_review := p_from.date_budget_amount_last_review;
1672     p_to.trx_status_code := p_from.trx_status_code;
1673     p_to.asset_track_strategy_code := p_from.asset_track_strategy_code;
1674     p_to.pfc_id := p_from.pfc_id;
1675     p_to.tmb_id := p_from.tmb_id;
1676     p_to.kle_id := p_from.kle_id;
1677     p_to.fma_id := p_from.fma_id;
1678     p_to.object_version_number := p_from.object_version_number;
1679     p_to.request_id := p_from.request_id;
1680     p_to.program_application_id := p_from.program_application_id;
1681     p_to.program_id := p_from.program_id;
1682     p_to.program_update_date := p_from.program_update_date;
1683     p_to.attribute_category := p_from.attribute_category;
1684     p_to.attribute1 := p_from.attribute1;
1685     p_to.attribute2 := p_from.attribute2;
1686     p_to.attribute3 := p_from.attribute3;
1687     p_to.attribute4 := p_from.attribute4;
1688     p_to.attribute5 := p_from.attribute5;
1689     p_to.attribute6 := p_from.attribute6;
1690     p_to.attribute7 := p_from.attribute7;
1691     p_to.attribute8 := p_from.attribute8;
1692     p_to.attribute9 := p_from.attribute9;
1693     p_to.attribute10 := p_from.attribute10;
1694     p_to.attribute11 := p_from.attribute11;
1695     p_to.attribute12 := p_from.attribute12;
1696     p_to.attribute13 := p_from.attribute13;
1697     p_to.attribute14 := p_from.attribute14;
1698     p_to.attribute15 := p_from.attribute15;
1699     p_to.created_by := p_from.created_by;
1700     p_to.creation_date := p_from.creation_date;
1701     p_to.last_updated_by := p_from.last_updated_by;
1702     p_to.last_update_date := p_from.last_update_date;
1703     p_to.last_update_login := p_from.last_update_login;
1704   -- RABHUPAT - 2667636 - Start
1705     p_to.currency_code  := p_from.currency_code;
1706     p_to.currency_conversion_code  := p_from.currency_conversion_code;
1707     p_to.currency_conversion_type  := p_from.currency_conversion_type;
1708     p_to.currency_conversion_rate  := p_from.currency_conversion_rate;
1709     p_to.currency_conversion_date  := p_from.currency_conversion_date;
1710   -- RABHUPAT - 2667636 - End
1711   END migrate;
1712   PROCEDURE migrate (
1713     p_from IN pflv_rec_type,
1714     p_to   IN OUT NOCOPY okl_prtfl_lines_tl_rec_type
1715   ) IS
1716   BEGIN
1717     p_to.id := p_from.id;
1718     p_to.sfwt_flag := p_from.sfwt_flag;
1719     p_to.comments := p_from.comments;
1720     p_to.created_by := p_from.created_by;
1721     p_to.creation_date := p_from.creation_date;
1722     p_to.last_updated_by := p_from.last_updated_by;
1723     p_to.last_update_date := p_from.last_update_date;
1724     p_to.last_update_login := p_from.last_update_login;
1725   END migrate;
1726   PROCEDURE migrate (
1727     p_from IN okl_prtfl_lines_tl_rec_type,
1728     p_to   IN OUT NOCOPY pflv_rec_type
1729   ) IS
1730   BEGIN
1731     p_to.id := p_from.id;
1732     p_to.sfwt_flag := p_from.sfwt_flag;
1733     p_to.comments := p_from.comments;
1734     p_to.created_by := p_from.created_by;
1735     p_to.creation_date := p_from.creation_date;
1736     p_to.last_updated_by := p_from.last_updated_by;
1737     p_to.last_update_date := p_from.last_update_date;
1738     p_to.last_update_login := p_from.last_update_login;
1739   END migrate;
1740   ---------------------------------------------------------------------------
1741   -- PROCEDURE validate_row
1742   ---------------------------------------------------------------------------
1743   ----------------------------------------
1744   -- validate_row for:OKL_PRTFL_LINES_V --
1745   ----------------------------------------
1746   PROCEDURE validate_row(
1747     p_api_version                  IN NUMBER,
1748     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1749     x_return_status                OUT NOCOPY VARCHAR2,
1750     x_msg_count                    OUT NOCOPY NUMBER,
1751     x_msg_data                     OUT NOCOPY VARCHAR2,
1752     p_pflv_rec                     IN pflv_rec_type) IS
1753 
1754     l_api_version                  CONSTANT NUMBER := 1;
1755     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1756     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1757     l_pflv_rec                     pflv_rec_type := p_pflv_rec;
1758     l_pfl_rec                      pfl_rec_type;
1759     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
1760   BEGIN
1761     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1762                                               G_PKG_NAME,
1763                                               p_init_msg_list,
1764                                               l_api_version,
1765                                               p_api_version,
1766                                               '_PVT',
1767                                               x_return_status);
1768     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1769       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1770     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1771       RAISE OKL_API.G_EXCEPTION_ERROR;
1772     END IF;
1773     --- Validate all non-missing attributes (Item Level Validation)
1774     l_return_status := Validate_Attributes(l_pflv_rec);
1775     --- If any errors happen abort API
1776     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1777       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1778     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1779       RAISE OKL_API.G_EXCEPTION_ERROR;
1780     END IF;
1781     l_return_status := Validate_Record(l_pflv_rec);
1782     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1783       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1784     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1785       RAISE OKL_API.G_EXCEPTION_ERROR;
1786     END IF;
1787     x_return_status := l_return_status;
1788   EXCEPTION
1789     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1790       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1791       (
1792         l_api_name,
1793         G_PKG_NAME,
1794         'OKL_API.G_RET_STS_ERROR',
1795         x_msg_count,
1796         x_msg_data,
1797         '_PVT'
1798       );
1799     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1800       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1801       (
1802         l_api_name,
1803         G_PKG_NAME,
1804         'OKL_API.G_RET_STS_UNEXP_ERROR',
1805         x_msg_count,
1806         x_msg_data,
1807         '_PVT'
1808       );
1809     WHEN OTHERS THEN
1810       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1811       (
1812         l_api_name,
1813         G_PKG_NAME,
1814         'OTHERS',
1815         x_msg_count,
1816         x_msg_data,
1817         '_PVT'
1818       );
1819   END validate_row;
1820   ---------------------------------------------------
1821   -- PL/SQL TBL validate_row for:OKL_PRTFL_LINES_V --
1822   ---------------------------------------------------
1823   PROCEDURE validate_row(
1824     p_api_version                  IN NUMBER,
1825     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1826     x_return_status                OUT NOCOPY VARCHAR2,
1827     x_msg_count                    OUT NOCOPY NUMBER,
1828     x_msg_data                     OUT NOCOPY VARCHAR2,
1829     p_pflv_tbl                     IN pflv_tbl_type,
1830     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1831 
1832     l_api_version                  CONSTANT NUMBER := 1;
1833     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1834     i                              NUMBER := 0;
1835   BEGIN
1836     OKL_API.init_msg_list(p_init_msg_list);
1837     -- Make sure PL/SQL table has records in it before passing
1838     IF (p_pflv_tbl.COUNT > 0) THEN
1839       i := p_pflv_tbl.FIRST;
1840       LOOP
1841         DECLARE
1842           l_error_rec         OKL_API.ERROR_REC_TYPE;
1843         BEGIN
1844           l_error_rec.api_name := l_api_name;
1845           l_error_rec.api_package := G_PKG_NAME;
1846           l_error_rec.idx := i;
1847           validate_row (
1848             p_api_version                  => p_api_version,
1849             p_init_msg_list                => OKL_API.G_FALSE,
1850             x_return_status                => l_error_rec.error_type,
1851             x_msg_count                    => l_error_rec.msg_count,
1852             x_msg_data                     => l_error_rec.msg_data,
1853             p_pflv_rec                     => p_pflv_tbl(i));
1854           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1855             l_error_rec.sqlcode := SQLCODE;
1856             load_error_tbl(l_error_rec, px_error_tbl);
1857           ELSE
1858             x_msg_count := l_error_rec.msg_count;
1859             x_msg_data := l_error_rec.msg_data;
1860           END IF;
1861         EXCEPTION
1862           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1863             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1864             l_error_rec.sqlcode := SQLCODE;
1865             load_error_tbl(l_error_rec, px_error_tbl);
1866           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1867             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1868             l_error_rec.sqlcode := SQLCODE;
1869             load_error_tbl(l_error_rec, px_error_tbl);
1870           WHEN OTHERS THEN
1871             l_error_rec.error_type := 'OTHERS';
1872             l_error_rec.sqlcode := SQLCODE;
1873             load_error_tbl(l_error_rec, px_error_tbl);
1874         END;
1875         EXIT WHEN (i = p_pflv_tbl.LAST);
1876         i := p_pflv_tbl.NEXT(i);
1877       END LOOP;
1878     END IF;
1879     -- Loop through the error_tbl to find the error with the highest severity
1880     -- and return it.
1881     x_return_status := find_highest_exception(px_error_tbl);
1882     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1883   EXCEPTION
1884     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1885       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1886       (
1887         l_api_name,
1888         G_PKG_NAME,
1889         'OKL_API.G_RET_STS_ERROR',
1890         x_msg_count,
1891         x_msg_data,
1892         '_PVT'
1893       );
1894     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1895       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1896       (
1897         l_api_name,
1898         G_PKG_NAME,
1899         'OKL_API.G_RET_STS_UNEXP_ERROR',
1900         x_msg_count,
1901         x_msg_data,
1902         '_PVT'
1903       );
1904     WHEN OTHERS THEN
1905       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1906       (
1907         l_api_name,
1908         G_PKG_NAME,
1909         'OTHERS',
1910         x_msg_count,
1911         x_msg_data,
1912         '_PVT'
1913       );
1914   END validate_row;
1915 
1916   ---------------------------------------------------
1917   -- PL/SQL TBL validate_row for:OKL_PRTFL_LINES_V --
1918   ---------------------------------------------------
1919   PROCEDURE validate_row(
1920     p_api_version                  IN NUMBER,
1921     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1922     x_return_status                OUT NOCOPY VARCHAR2,
1923     x_msg_count                    OUT NOCOPY NUMBER,
1924     x_msg_data                     OUT NOCOPY VARCHAR2,
1925     p_pflv_tbl                     IN pflv_tbl_type) IS
1926 
1927     l_api_version                  CONSTANT NUMBER := 1;
1928     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1929     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1930     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1931   BEGIN
1932     OKL_API.init_msg_list(p_init_msg_list);
1933     -- Make sure PL/SQL table has records in it before passing
1934     IF (p_pflv_tbl.COUNT > 0) THEN
1935       validate_row (
1936         p_api_version                  => p_api_version,
1937         p_init_msg_list                => OKL_API.G_FALSE,
1938         x_return_status                => x_return_status,
1939         x_msg_count                    => x_msg_count,
1940         x_msg_data                     => x_msg_data,
1941         p_pflv_tbl                     => p_pflv_tbl,
1942         px_error_tbl                   => l_error_tbl);
1943     END IF;
1944     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1945   EXCEPTION
1946     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1947       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1948       (
1949         l_api_name,
1950         G_PKG_NAME,
1951         'OKL_API.G_RET_STS_ERROR',
1952         x_msg_count,
1953         x_msg_data,
1954         '_PVT'
1955       );
1956     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1957       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1958       (
1959         l_api_name,
1960         G_PKG_NAME,
1961         'OKL_API.G_RET_STS_UNEXP_ERROR',
1962         x_msg_count,
1963         x_msg_data,
1964         '_PVT'
1965       );
1966     WHEN OTHERS THEN
1967       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1968       (
1969         l_api_name,
1970         G_PKG_NAME,
1971         'OTHERS',
1972         x_msg_count,
1973         x_msg_data,
1974         '_PVT'
1975       );
1976   END validate_row;
1977 
1978   ---------------------------------------------------------------------------
1979   -- PROCEDURE insert_row
1980   ---------------------------------------------------------------------------
1981   --------------------------------------
1982   -- insert_row for:OKL_PRTFL_LINES_B --
1983   --------------------------------------
1984   -- Start of comments
1985   --
1986   -- Procedure Name  : insert_row
1987   -- Description     : for OKL_PRTFL_LINES_B
1988   -- Business Rules  :
1989   -- Parameters      :
1990   -- Version         : 1.0
1991   -- History         : RABHUPAT 17-DEC-2002 2667636
1992   --                 : modified for multicurrency changes
1993   -- End of comments
1994   PROCEDURE insert_row(
1995     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1996     x_return_status                OUT NOCOPY VARCHAR2,
1997     x_msg_count                    OUT NOCOPY NUMBER,
1998     x_msg_data                     OUT NOCOPY VARCHAR2,
1999     p_pfl_rec                      IN pfl_rec_type,
2000     x_pfl_rec                      OUT NOCOPY pfl_rec_type) IS
2001 
2002     l_api_version                  CONSTANT NUMBER := 1;
2003     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
2004     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2005     l_pfl_rec                      pfl_rec_type := p_pfl_rec;
2006     l_def_pfl_rec                  pfl_rec_type;
2007     ------------------------------------------
2008     -- Set_Attributes for:OKL_PRTFL_LINES_B --
2009     ------------------------------------------
2010     FUNCTION Set_Attributes (
2011       p_pfl_rec IN pfl_rec_type,
2012       x_pfl_rec OUT NOCOPY pfl_rec_type
2013     ) RETURN VARCHAR2 IS
2014       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2015     BEGIN
2016       x_pfl_rec := p_pfl_rec;
2017       RETURN(l_return_status);
2018     END Set_Attributes;
2019   BEGIN
2020     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2021                                               p_init_msg_list,
2022                                               '_PVT',
2023                                               x_return_status);
2024     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2025       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2026     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2027       RAISE OKL_API.G_EXCEPTION_ERROR;
2028     END IF;
2029     --- Setting item atributes
2030     l_return_status := Set_Attributes(
2031       p_pfl_rec,                         -- IN
2032       l_pfl_rec);                        -- OUT
2033     --- If any errors happen abort API
2034     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2035       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2036     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2037       RAISE OKL_API.G_EXCEPTION_ERROR;
2038     END IF;
2039     INSERT INTO OKL_PRTFL_LINES_B(
2040       id,
2041       budget_amount,
2042       date_strategy_executed,
2043       date_strategy_execution_due,
2044       date_budget_amount_last_review,
2045       trx_status_code,
2046       asset_track_strategy_code,
2047       pfc_id,
2048       tmb_id,
2049       kle_id,
2050       fma_id,
2051       object_version_number,
2052       request_id,
2053       program_application_id,
2054       program_id,
2055       program_update_date,
2056       attribute_category,
2057       attribute1,
2058       attribute2,
2059       attribute3,
2060       attribute4,
2061       attribute5,
2062       attribute6,
2063       attribute7,
2064       attribute8,
2065       attribute9,
2066       attribute10,
2067       attribute11,
2068       attribute12,
2069       attribute13,
2070       attribute14,
2071       attribute15,
2072       created_by,
2073       creation_date,
2074       last_updated_by,
2075       last_update_date,
2076       last_update_login,
2077   -- RABHUPAT - 2667636 - Start
2078         currency_code,
2079         currency_conversion_code,
2080         currency_conversion_type,
2081         currency_conversion_rate,
2082         currency_conversion_date)
2083   -- RABHUPAT - 2667636 - End
2084     VALUES (
2085       l_pfl_rec.id,
2086       l_pfl_rec.budget_amount,
2087       l_pfl_rec.date_strategy_executed,
2088       l_pfl_rec.date_strategy_execution_due,
2089       l_pfl_rec.date_budget_amount_last_review,
2090       l_pfl_rec.trx_status_code,
2091       l_pfl_rec.asset_track_strategy_code,
2092       l_pfl_rec.pfc_id,
2093       l_pfl_rec.tmb_id,
2094       l_pfl_rec.kle_id,
2095       l_pfl_rec.fma_id,
2096       l_pfl_rec.object_version_number,
2097       l_pfl_rec.request_id,
2098       l_pfl_rec.program_application_id,
2099       l_pfl_rec.program_id,
2100       l_pfl_rec.program_update_date,
2101       l_pfl_rec.attribute_category,
2102       l_pfl_rec.attribute1,
2103       l_pfl_rec.attribute2,
2104       l_pfl_rec.attribute3,
2105       l_pfl_rec.attribute4,
2106       l_pfl_rec.attribute5,
2107       l_pfl_rec.attribute6,
2108       l_pfl_rec.attribute7,
2109       l_pfl_rec.attribute8,
2110       l_pfl_rec.attribute9,
2111       l_pfl_rec.attribute10,
2112       l_pfl_rec.attribute11,
2113       l_pfl_rec.attribute12,
2114       l_pfl_rec.attribute13,
2115       l_pfl_rec.attribute14,
2116       l_pfl_rec.attribute15,
2117       l_pfl_rec.created_by,
2118       l_pfl_rec.creation_date,
2119       l_pfl_rec.last_updated_by,
2120       l_pfl_rec.last_update_date,
2121       l_pfl_rec.last_update_login,
2122   -- RABHUPAT - 2667636 - Start
2123       l_pfl_rec.currency_code,
2124       l_pfl_rec.currency_conversion_code,
2125       l_pfl_rec.currency_conversion_type,
2126       l_pfl_rec.currency_conversion_rate,
2127       l_pfl_rec.currency_conversion_date);
2128   -- RABHUPAT - 2667636 - End
2129     -- Set OUT values
2130     x_pfl_rec := l_pfl_rec;
2131     x_return_status := l_return_status;
2132     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2133   EXCEPTION
2134     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2135       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2136       (
2137         l_api_name,
2138         G_PKG_NAME,
2139         'OKL_API.G_RET_STS_ERROR',
2140         x_msg_count,
2141         x_msg_data,
2142         '_PVT'
2143       );
2144     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2145       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2146       (
2147         l_api_name,
2148         G_PKG_NAME,
2149         'OKL_API.G_RET_STS_UNEXP_ERROR',
2150         x_msg_count,
2151         x_msg_data,
2152         '_PVT'
2153       );
2154     WHEN OTHERS THEN
2155       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2156       (
2157         l_api_name,
2158         G_PKG_NAME,
2159         'OTHERS',
2160         x_msg_count,
2161         x_msg_data,
2162         '_PVT'
2163       );
2164   END insert_row;
2165   ---------------------------------------
2166   -- insert_row for:OKL_PRTFL_LINES_TL --
2167   ---------------------------------------
2168   PROCEDURE insert_row(
2169     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2170     x_return_status                OUT NOCOPY VARCHAR2,
2171     x_msg_count                    OUT NOCOPY NUMBER,
2172     x_msg_data                     OUT NOCOPY VARCHAR2,
2173     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type,
2174     x_okl_prtfl_lines_tl_rec       OUT NOCOPY okl_prtfl_lines_tl_rec_type) IS
2175 
2176     l_api_version                  CONSTANT NUMBER := 1;
2177     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
2178     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2179     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type := p_okl_prtfl_lines_tl_rec;
2180     l_def_okl_prtfl_lines_tl_rec   okl_prtfl_lines_tl_rec_type;
2181     CURSOR get_languages IS
2182       SELECT *
2183         FROM FND_LANGUAGES
2184        WHERE INSTALLED_FLAG IN ('I', 'B');
2185     -------------------------------------------
2186     -- Set_Attributes for:OKL_PRTFL_LINES_TL --
2187     -------------------------------------------
2188     FUNCTION Set_Attributes (
2189       p_okl_prtfl_lines_tl_rec IN okl_prtfl_lines_tl_rec_type,
2190       x_okl_prtfl_lines_tl_rec OUT NOCOPY okl_prtfl_lines_tl_rec_type
2191     ) RETURN VARCHAR2 IS
2192       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2193     BEGIN
2194       x_okl_prtfl_lines_tl_rec := p_okl_prtfl_lines_tl_rec;
2195       x_okl_prtfl_lines_tl_rec.LANGUAGE := USERENV('LANG');
2196       x_okl_prtfl_lines_tl_rec.SOURCE_LANG := USERENV('LANG');
2197       RETURN(l_return_status);
2198     END Set_Attributes;
2199   BEGIN
2200     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2201                                               p_init_msg_list,
2202                                               '_PVT',
2203                                               x_return_status);
2204     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2205       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2206     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2207       RAISE OKL_API.G_EXCEPTION_ERROR;
2208     END IF;
2209     --- Setting item attributes
2210     l_return_status := Set_Attributes(
2211       p_okl_prtfl_lines_tl_rec,          -- IN
2212       l_okl_prtfl_lines_tl_rec);         -- OUT
2213     --- If any errors happen abort API
2214     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2215       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2216     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2217       RAISE OKL_API.G_EXCEPTION_ERROR;
2218     END IF;
2219     FOR l_lang_rec IN get_languages LOOP
2220       l_okl_prtfl_lines_tl_rec.language := l_lang_rec.language_code;
2221       INSERT INTO OKL_PRTFL_LINES_TL(
2222         id,
2223         language,
2224         source_lang,
2225         sfwt_flag,
2226         comments,
2227         created_by,
2228         creation_date,
2229         last_updated_by,
2230         last_update_date,
2231         last_update_login)
2232       VALUES (
2233         l_okl_prtfl_lines_tl_rec.id,
2234         l_okl_prtfl_lines_tl_rec.language,
2235         l_okl_prtfl_lines_tl_rec.source_lang,
2236         l_okl_prtfl_lines_tl_rec.sfwt_flag,
2237         l_okl_prtfl_lines_tl_rec.comments,
2238         l_okl_prtfl_lines_tl_rec.created_by,
2239         l_okl_prtfl_lines_tl_rec.creation_date,
2240         l_okl_prtfl_lines_tl_rec.last_updated_by,
2241         l_okl_prtfl_lines_tl_rec.last_update_date,
2242         l_okl_prtfl_lines_tl_rec.last_update_login);
2243     END LOOP;
2244     -- Set OUT values
2245     x_okl_prtfl_lines_tl_rec := l_okl_prtfl_lines_tl_rec;
2246     x_return_status := l_return_status;
2247     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2248   EXCEPTION
2249     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2250       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2251       (
2252         l_api_name,
2253         G_PKG_NAME,
2254         'OKL_API.G_RET_STS_ERROR',
2255         x_msg_count,
2256         x_msg_data,
2257         '_PVT'
2258       );
2259     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2260       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2261       (
2262         l_api_name,
2263         G_PKG_NAME,
2264         'OKL_API.G_RET_STS_UNEXP_ERROR',
2265         x_msg_count,
2266         x_msg_data,
2267         '_PVT'
2268       );
2269     WHEN OTHERS THEN
2270       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2271       (
2272         l_api_name,
2273         G_PKG_NAME,
2274         'OTHERS',
2275         x_msg_count,
2276         x_msg_data,
2277         '_PVT'
2278       );
2279   END insert_row;
2280   ---------------------------------------
2281   -- insert_row for :OKL_PRTFL_LINES_V --
2282   ---------------------------------------
2283   -- Start of comments
2284   --
2285   -- Procedure Name  : insert_row
2286   -- Description     : for OKL_PRTFL_LINES_V
2287   -- Business Rules  :
2288   -- Parameters      :
2289   -- Version         : 1.0
2290   -- History         : RABHUPAT 17-DEC-2002 2667636
2291   --                 : modified for multicurrency changes
2292   -- End of comments
2293   PROCEDURE insert_row(
2294     p_api_version                  IN NUMBER,
2295     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2296     x_return_status                OUT NOCOPY VARCHAR2,
2297     x_msg_count                    OUT NOCOPY NUMBER,
2298     x_msg_data                     OUT NOCOPY VARCHAR2,
2299     p_pflv_rec                     IN pflv_rec_type,
2300     x_pflv_rec                     OUT NOCOPY pflv_rec_type) IS
2301 
2302     l_api_version                  CONSTANT NUMBER := 1;
2303     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2304     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2305     l_pflv_rec                     pflv_rec_type := p_pflv_rec;
2306     l_def_pflv_rec                 pflv_rec_type;
2307     l_pfl_rec                      pfl_rec_type;
2308     lx_pfl_rec                     pfl_rec_type;
2309     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
2310     lx_okl_prtfl_lines_tl_rec      okl_prtfl_lines_tl_rec_type;
2311     -------------------------------
2312     -- FUNCTION fill_who_columns --
2313     -------------------------------
2314     FUNCTION fill_who_columns (
2315       p_pflv_rec IN pflv_rec_type
2316     ) RETURN pflv_rec_type IS
2317       l_pflv_rec pflv_rec_type := p_pflv_rec;
2318     BEGIN
2319       l_pflv_rec.CREATION_DATE := SYSDATE;
2320       l_pflv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2321       l_pflv_rec.LAST_UPDATE_DATE := l_pflv_rec.CREATION_DATE;
2322       l_pflv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2323       l_pflv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2324       RETURN(l_pflv_rec);
2325     END fill_who_columns;
2326     ------------------------------------------
2327     -- Set_Attributes for:OKL_PRTFL_LINES_V --
2328     ------------------------------------------
2329     FUNCTION Set_Attributes (
2330       p_pflv_rec IN pflv_rec_type,
2331       x_pflv_rec OUT NOCOPY pflv_rec_type
2332     ) RETURN VARCHAR2 IS
2333       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2334     BEGIN
2335       x_pflv_rec := p_pflv_rec;
2336       x_pflv_rec.OBJECT_VERSION_NUMBER := 1;
2337       x_pflv_rec.SFWT_FLAG := 'N';
2338   -- RABHUPAT - 2667636 - Start
2339       x_pflv_rec.currency_conversion_code := OKL_AM_UTIL_PVT.get_functional_currency;
2340 
2341       IF p_pflv_rec.currency_code IS NULL
2342       OR p_pflv_rec.currency_code = OKC_API.G_MISS_CHAR THEN
2343         x_pflv_rec.currency_code := x_pflv_rec.currency_conversion_code;
2344       END IF;
2345   -- RABHUPAT- 2667636 - End
2346       RETURN(l_return_status);
2347     END Set_Attributes;
2348   BEGIN
2349     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2350                                               G_PKG_NAME,
2351                                               p_init_msg_list,
2352                                               l_api_version,
2353                                               p_api_version,
2354                                               '_PVT',
2355                                               x_return_status);
2356     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2357       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2358     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2359       RAISE OKL_API.G_EXCEPTION_ERROR;
2360     END IF;
2361     l_pflv_rec := null_out_defaults(p_pflv_rec);
2362     -- Set primary key value
2363     l_pflv_rec.ID := get_seq_id;
2364     -- Setting item attributes
2365     l_return_Status := Set_Attributes(
2366       l_pflv_rec,                        -- IN
2367       l_def_pflv_rec);                   -- OUT
2368     --- If any errors happen abort API
2369     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2370       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2371     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2372       RAISE OKL_API.G_EXCEPTION_ERROR;
2373     END IF;
2374     l_def_pflv_rec := fill_who_columns(l_def_pflv_rec);
2375     --- Validate all non-missing attributes (Item Level Validation)
2376     l_return_status := Validate_Attributes(l_def_pflv_rec);
2377     --- If any errors happen abort API
2378     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2379       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2380     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2381       RAISE OKL_API.G_EXCEPTION_ERROR;
2382     END IF;
2383     l_return_status := Validate_Record(l_def_pflv_rec);
2384     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2385       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2386     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2387       RAISE OKL_API.G_EXCEPTION_ERROR;
2388     END IF;
2389     -----------------------------------------
2390     -- Move VIEW record to "Child" records --
2391     -----------------------------------------
2392     migrate(l_def_pflv_rec, l_pfl_rec);
2393     migrate(l_def_pflv_rec, l_okl_prtfl_lines_tl_rec);
2394     -----------------------------------------------
2395     -- Call the INSERT_ROW for each child record --
2396     -----------------------------------------------
2397     insert_row(
2398       p_init_msg_list,
2399       l_return_status,
2400       x_msg_count,
2401       x_msg_data,
2402       l_pfl_rec,
2403       lx_pfl_rec
2404     );
2405     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2406       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2407     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2408       RAISE OKL_API.G_EXCEPTION_ERROR;
2409     END IF;
2410     migrate(lx_pfl_rec, l_def_pflv_rec);
2411     insert_row(
2412       p_init_msg_list,
2413       l_return_status,
2414       x_msg_count,
2415       x_msg_data,
2416       l_okl_prtfl_lines_tl_rec,
2417       lx_okl_prtfl_lines_tl_rec
2418     );
2419     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2420       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2421     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2422       RAISE OKL_API.G_EXCEPTION_ERROR;
2423     END IF;
2424     migrate(lx_okl_prtfl_lines_tl_rec, l_def_pflv_rec);
2425     -- Set OUT values
2426     x_pflv_rec := l_def_pflv_rec;
2427     x_return_status := l_return_status;
2428     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2429   EXCEPTION
2430     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2431       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2432       (
2433         l_api_name,
2434         G_PKG_NAME,
2435         'OKL_API.G_RET_STS_ERROR',
2436         x_msg_count,
2437         x_msg_data,
2438         '_PVT'
2439       );
2440     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2441       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2442       (
2443         l_api_name,
2444         G_PKG_NAME,
2445         'OKL_API.G_RET_STS_UNEXP_ERROR',
2446         x_msg_count,
2447         x_msg_data,
2448         '_PVT'
2449       );
2450     WHEN OTHERS THEN
2451       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2452       (
2453         l_api_name,
2454         G_PKG_NAME,
2455         'OTHERS',
2456         x_msg_count,
2457         x_msg_data,
2458         '_PVT'
2459       );
2460   END insert_row;
2461   ----------------------------------------
2462   -- PL/SQL TBL insert_row for:PFLV_TBL --
2463   ----------------------------------------
2464   PROCEDURE insert_row(
2465     p_api_version                  IN NUMBER,
2466     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2467     x_return_status                OUT NOCOPY VARCHAR2,
2468     x_msg_count                    OUT NOCOPY NUMBER,
2469     x_msg_data                     OUT NOCOPY VARCHAR2,
2470     p_pflv_tbl                     IN pflv_tbl_type,
2471     x_pflv_tbl                     OUT NOCOPY pflv_tbl_type,
2472     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2473 
2474     l_api_version                  CONSTANT NUMBER := 1;
2475     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
2476     i                              NUMBER := 0;
2477   BEGIN
2478     OKL_API.init_msg_list(p_init_msg_list);
2479     -- Make sure PL/SQL table has records in it before passing
2480     IF (p_pflv_tbl.COUNT > 0) THEN
2481       i := p_pflv_tbl.FIRST;
2482       LOOP
2483         DECLARE
2484           l_error_rec         OKL_API.ERROR_REC_TYPE;
2485         BEGIN
2486           l_error_rec.api_name := l_api_name;
2487           l_error_rec.api_package := G_PKG_NAME;
2488           l_error_rec.idx := i;
2489           insert_row (
2490             p_api_version                  => p_api_version,
2491             p_init_msg_list                => OKL_API.G_FALSE,
2492             x_return_status                => l_error_rec.error_type,
2493             x_msg_count                    => l_error_rec.msg_count,
2494             x_msg_data                     => l_error_rec.msg_data,
2495             p_pflv_rec                     => p_pflv_tbl(i),
2496             x_pflv_rec                     => x_pflv_tbl(i));
2497           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2498             l_error_rec.sqlcode := SQLCODE;
2499             load_error_tbl(l_error_rec, px_error_tbl);
2500           ELSE
2501             x_msg_count := l_error_rec.msg_count;
2502             x_msg_data := l_error_rec.msg_data;
2503           END IF;
2504         EXCEPTION
2505           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2506             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2507             l_error_rec.sqlcode := SQLCODE;
2508             load_error_tbl(l_error_rec, px_error_tbl);
2509           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2510             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2511             l_error_rec.sqlcode := SQLCODE;
2512             load_error_tbl(l_error_rec, px_error_tbl);
2513           WHEN OTHERS THEN
2514             l_error_rec.error_type := 'OTHERS';
2515             l_error_rec.sqlcode := SQLCODE;
2516             load_error_tbl(l_error_rec, px_error_tbl);
2517         END;
2518         EXIT WHEN (i = p_pflv_tbl.LAST);
2519         i := p_pflv_tbl.NEXT(i);
2520       END LOOP;
2521     END IF;
2522     -- Loop through the error_tbl to find the error with the highest severity
2523     -- and return it.
2524     x_return_status := find_highest_exception(px_error_tbl);
2525     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2526   EXCEPTION
2527     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2528       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2529       (
2530         l_api_name,
2531         G_PKG_NAME,
2532         'OKL_API.G_RET_STS_ERROR',
2533         x_msg_count,
2534         x_msg_data,
2535         '_PVT'
2536       );
2537     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2538       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2539       (
2540         l_api_name,
2541         G_PKG_NAME,
2542         'OKL_API.G_RET_STS_UNEXP_ERROR',
2543         x_msg_count,
2544         x_msg_data,
2545         '_PVT'
2546       );
2547     WHEN OTHERS THEN
2548       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2549       (
2550         l_api_name,
2551         G_PKG_NAME,
2552         'OTHERS',
2553         x_msg_count,
2554         x_msg_data,
2555         '_PVT'
2556       );
2557   END insert_row;
2558 
2559   ----------------------------------------
2560   -- PL/SQL TBL insert_row for:PFLV_TBL --
2561   ----------------------------------------
2562   PROCEDURE insert_row(
2563     p_api_version                  IN NUMBER,
2564     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2565     x_return_status                OUT NOCOPY VARCHAR2,
2566     x_msg_count                    OUT NOCOPY NUMBER,
2567     x_msg_data                     OUT NOCOPY VARCHAR2,
2568     p_pflv_tbl                     IN pflv_tbl_type,
2569     x_pflv_tbl                     OUT NOCOPY pflv_tbl_type) IS
2570 
2571     l_api_version                  CONSTANT NUMBER := 1;
2572     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
2573     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2574     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2575   BEGIN
2576     OKL_API.init_msg_list(p_init_msg_list);
2577     -- Make sure PL/SQL table has records in it before passing
2578     IF (p_pflv_tbl.COUNT > 0) THEN
2579       insert_row (
2580         p_api_version                  => p_api_version,
2581         p_init_msg_list                => OKL_API.G_FALSE,
2582         x_return_status                => x_return_status,
2583         x_msg_count                    => x_msg_count,
2584         x_msg_data                     => x_msg_data,
2585         p_pflv_tbl                     => p_pflv_tbl,
2586         x_pflv_tbl                     => x_pflv_tbl,
2587         px_error_tbl                   => l_error_tbl);
2588     END IF;
2589     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2590   EXCEPTION
2591     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2592       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2593       (
2594         l_api_name,
2595         G_PKG_NAME,
2596         'OKL_API.G_RET_STS_ERROR',
2597         x_msg_count,
2598         x_msg_data,
2599         '_PVT'
2600       );
2601     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2602       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2603       (
2604         l_api_name,
2605         G_PKG_NAME,
2606         'OKL_API.G_RET_STS_UNEXP_ERROR',
2607         x_msg_count,
2608         x_msg_data,
2609         '_PVT'
2610       );
2611     WHEN OTHERS THEN
2612       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2613       (
2614         l_api_name,
2615         G_PKG_NAME,
2616         'OTHERS',
2617         x_msg_count,
2618         x_msg_data,
2619         '_PVT'
2620       );
2621   END insert_row;
2622 
2623   ---------------------------------------------------------------------------
2624   -- PROCEDURE lock_row
2625   ---------------------------------------------------------------------------
2626   ------------------------------------
2627   -- lock_row for:OKL_PRTFL_LINES_B --
2628   ------------------------------------
2629   PROCEDURE lock_row(
2630     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2631     x_return_status                OUT NOCOPY VARCHAR2,
2632     x_msg_count                    OUT NOCOPY NUMBER,
2633     x_msg_data                     OUT NOCOPY VARCHAR2,
2634     p_pfl_rec                      IN pfl_rec_type) IS
2635 
2636     E_Resource_Busy                EXCEPTION;
2637     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2638     CURSOR lock_csr (p_pfl_rec IN pfl_rec_type) IS
2639     SELECT OBJECT_VERSION_NUMBER
2640       FROM OKL_PRTFL_LINES_B
2641      WHERE ID = p_pfl_rec.id
2642        AND OBJECT_VERSION_NUMBER = p_pfl_rec.object_version_number
2643     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
2644 
2645     CURSOR lchk_csr (p_pfl_rec IN pfl_rec_type) IS
2646     SELECT OBJECT_VERSION_NUMBER
2647       FROM OKL_PRTFL_LINES_B
2648      WHERE ID = p_pfl_rec.id;
2649     l_api_version                  CONSTANT NUMBER := 1;
2650     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
2651     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2652     l_object_version_number        OKL_PRTFL_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
2653     lc_object_version_number       OKL_PRTFL_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
2654     l_row_notfound                 BOOLEAN := FALSE;
2655     lc_row_notfound                BOOLEAN := FALSE;
2656   BEGIN
2657     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2658                                               p_init_msg_list,
2659                                               '_PVT',
2660                                               x_return_status);
2661     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2662       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2663     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2664       RAISE OKL_API.G_EXCEPTION_ERROR;
2665     END IF;
2666     BEGIN
2667       OPEN lock_csr(p_pfl_rec);
2668       FETCH lock_csr INTO l_object_version_number;
2669       l_row_notfound := lock_csr%NOTFOUND;
2670       CLOSE lock_csr;
2671     EXCEPTION
2672       WHEN E_Resource_Busy THEN
2673         IF (lock_csr%ISOPEN) THEN
2674           CLOSE lock_csr;
2675         END IF;
2676         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2677         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2678     END;
2679 
2680     IF ( l_row_notfound ) THEN
2681       OPEN lchk_csr(p_pfl_rec);
2682       FETCH lchk_csr INTO lc_object_version_number;
2683       lc_row_notfound := lchk_csr%NOTFOUND;
2684       CLOSE lchk_csr;
2685     END IF;
2686     IF (lc_row_notfound) THEN
2687       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2688       RAISE OKL_API.G_EXCEPTION_ERROR;
2689     ELSIF lc_object_version_number > p_pfl_rec.object_version_number THEN
2690       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2691       RAISE OKL_API.G_EXCEPTION_ERROR;
2692     ELSIF lc_object_version_number <> p_pfl_rec.object_version_number THEN
2693       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2694       RAISE OKL_API.G_EXCEPTION_ERROR;
2695     ELSIF lc_object_version_number = -1 THEN
2696       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2697       RAISE OKL_API.G_EXCEPTION_ERROR;
2698     END IF;
2699     x_return_status := l_return_status;
2700     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2701   EXCEPTION
2702     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2703       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2704       (
2705         l_api_name,
2706         G_PKG_NAME,
2707         'OKL_API.G_RET_STS_ERROR',
2708         x_msg_count,
2709         x_msg_data,
2710         '_PVT'
2711       );
2712     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2713       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2714       (
2715         l_api_name,
2716         G_PKG_NAME,
2717         'OKL_API.G_RET_STS_UNEXP_ERROR',
2718         x_msg_count,
2719         x_msg_data,
2720         '_PVT'
2721       );
2722     WHEN OTHERS THEN
2723       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2724       (
2725         l_api_name,
2726         G_PKG_NAME,
2727         'OTHERS',
2728         x_msg_count,
2729         x_msg_data,
2730         '_PVT'
2731       );
2732   END lock_row;
2733   -------------------------------------
2734   -- lock_row for:OKL_PRTFL_LINES_TL --
2735   -------------------------------------
2736   PROCEDURE lock_row(
2737     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2738     x_return_status                OUT NOCOPY VARCHAR2,
2739     x_msg_count                    OUT NOCOPY NUMBER,
2740     x_msg_data                     OUT NOCOPY VARCHAR2,
2741     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type) IS
2742 
2743     E_Resource_Busy                EXCEPTION;
2744     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2745     CURSOR lock_csr (p_okl_prtfl_lines_tl_rec IN okl_prtfl_lines_tl_rec_type) IS
2746     SELECT *
2747       FROM OKL_PRTFL_LINES_TL
2748      WHERE ID = p_okl_prtfl_lines_tl_rec.id
2749     FOR UPDATE NOWAIT;
2750 
2751     l_api_version                  CONSTANT NUMBER := 1;
2752     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
2753     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2754     l_lock_var                     lock_csr%ROWTYPE;
2755     l_row_notfound                 BOOLEAN := FALSE;
2756     lc_row_notfound                BOOLEAN := FALSE;
2757   BEGIN
2758     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2759                                               p_init_msg_list,
2760                                               '_PVT',
2761                                               x_return_status);
2762     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2763       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2764     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2765       RAISE OKL_API.G_EXCEPTION_ERROR;
2766     END IF;
2767     BEGIN
2768       OPEN lock_csr(p_okl_prtfl_lines_tl_rec);
2769       FETCH lock_csr INTO l_lock_var;
2770       l_row_notfound := lock_csr%NOTFOUND;
2771       CLOSE lock_csr;
2772     EXCEPTION
2773       WHEN E_Resource_Busy THEN
2774         IF (lock_csr%ISOPEN) THEN
2775           CLOSE lock_csr;
2776         END IF;
2777         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2778         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2779     END;
2780 
2781     IF ( l_row_notfound ) THEN
2782       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2783       RAISE OKL_API.G_EXCEPTION_ERROR;
2784     END IF;
2785     x_return_status := l_return_status;
2786     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2787   EXCEPTION
2788     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2789       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2790       (
2791         l_api_name,
2792         G_PKG_NAME,
2793         'OKL_API.G_RET_STS_ERROR',
2794         x_msg_count,
2795         x_msg_data,
2796         '_PVT'
2797       );
2798     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2799       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2800       (
2801         l_api_name,
2802         G_PKG_NAME,
2803         'OKL_API.G_RET_STS_UNEXP_ERROR',
2804         x_msg_count,
2805         x_msg_data,
2806         '_PVT'
2807       );
2808     WHEN OTHERS THEN
2809       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2810       (
2811         l_api_name,
2812         G_PKG_NAME,
2813         'OTHERS',
2814         x_msg_count,
2815         x_msg_data,
2816         '_PVT'
2817       );
2818   END lock_row;
2819   -------------------------------------
2820   -- lock_row for: OKL_PRTFL_LINES_V --
2821   -------------------------------------
2822   PROCEDURE lock_row(
2823     p_api_version                  IN NUMBER,
2824     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2825     x_return_status                OUT NOCOPY VARCHAR2,
2826     x_msg_count                    OUT NOCOPY NUMBER,
2827     x_msg_data                     OUT NOCOPY VARCHAR2,
2828     p_pflv_rec                     IN pflv_rec_type) IS
2829 
2830     l_api_version                  CONSTANT NUMBER := 1;
2831     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2832     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2833     l_pfl_rec                      pfl_rec_type;
2834     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
2835   BEGIN
2836     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2837                                               G_PKG_NAME,
2838                                               p_init_msg_list,
2839                                               l_api_version,
2840                                               p_api_version,
2841                                               '_PVT',
2842                                               x_return_status);
2843     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2844       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2845     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2846       RAISE OKL_API.G_EXCEPTION_ERROR;
2847     END IF;
2848     -----------------------------------------
2849     -- Move VIEW record to "Child" records --
2850     -----------------------------------------
2851     migrate(p_pflv_rec, l_pfl_rec);
2852     migrate(p_pflv_rec, l_okl_prtfl_lines_tl_rec);
2853     ---------------------------------------------
2854     -- Call the LOCK_ROW for each child record --
2855     ---------------------------------------------
2856     lock_row(
2857       p_init_msg_list,
2858       l_return_status,
2859       x_msg_count,
2860       x_msg_data,
2861       l_pfl_rec
2862     );
2863     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2864       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2865     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2866       RAISE OKL_API.G_EXCEPTION_ERROR;
2867     END IF;
2868     lock_row(
2869       p_init_msg_list,
2870       l_return_status,
2871       x_msg_count,
2872       x_msg_data,
2873       l_okl_prtfl_lines_tl_rec
2874     );
2875     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2876       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2877     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2878       RAISE OKL_API.G_EXCEPTION_ERROR;
2879     END IF;
2880     x_return_status := l_return_status;
2881     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2882   EXCEPTION
2883     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2884       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2885       (
2886         l_api_name,
2887         G_PKG_NAME,
2888         'OKL_API.G_RET_STS_ERROR',
2889         x_msg_count,
2890         x_msg_data,
2891         '_PVT'
2892       );
2893     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2894       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2895       (
2896         l_api_name,
2897         G_PKG_NAME,
2898         'OKL_API.G_RET_STS_UNEXP_ERROR',
2899         x_msg_count,
2900         x_msg_data,
2901         '_PVT'
2902       );
2903     WHEN OTHERS THEN
2904       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2905       (
2906         l_api_name,
2907         G_PKG_NAME,
2908         'OTHERS',
2909         x_msg_count,
2910         x_msg_data,
2911         '_PVT'
2912       );
2913   END lock_row;
2914   --------------------------------------
2915   -- PL/SQL TBL lock_row for:PFLV_TBL --
2916   --------------------------------------
2917   PROCEDURE lock_row(
2918     p_api_version                  IN NUMBER,
2919     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2920     x_return_status                OUT NOCOPY VARCHAR2,
2921     x_msg_count                    OUT NOCOPY NUMBER,
2922     x_msg_data                     OUT NOCOPY VARCHAR2,
2923     p_pflv_tbl                     IN pflv_tbl_type,
2924     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2925 
2926     l_api_version                  CONSTANT NUMBER := 1;
2927     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
2928     i                              NUMBER := 0;
2929   BEGIN
2930     OKL_API.init_msg_list(p_init_msg_list);
2931     -- Make sure PL/SQL table has recrods in it before passing
2932     IF (p_pflv_tbl.COUNT > 0) THEN
2933       i := p_pflv_tbl.FIRST;
2934       LOOP
2935         DECLARE
2936           l_error_rec         OKL_API.ERROR_REC_TYPE;
2937         BEGIN
2938           l_error_rec.api_name := l_api_name;
2939           l_error_rec.api_package := G_PKG_NAME;
2940           l_error_rec.idx := i;
2941           lock_row(
2942             p_api_version                  => p_api_version,
2943             p_init_msg_list                => OKL_API.G_FALSE,
2944             x_return_status                => l_error_rec.error_type,
2945             x_msg_count                    => l_error_rec.msg_count,
2946             x_msg_data                     => l_error_rec.msg_data,
2947             p_pflv_rec                     => p_pflv_tbl(i));
2948           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2949             l_error_rec.sqlcode := SQLCODE;
2950             load_error_tbl(l_error_rec, px_error_tbl);
2951           ELSE
2952             x_msg_count := l_error_rec.msg_count;
2953             x_msg_data := l_error_rec.msg_data;
2954           END IF;
2955         EXCEPTION
2956           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2957             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2958             l_error_rec.sqlcode := SQLCODE;
2959             load_error_tbl(l_error_rec, px_error_tbl);
2960           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2961             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2962             l_error_rec.sqlcode := SQLCODE;
2963             load_error_tbl(l_error_rec, px_error_tbl);
2964           WHEN OTHERS THEN
2965             l_error_rec.error_type := 'OTHERS';
2966             l_error_rec.sqlcode := SQLCODE;
2967             load_error_tbl(l_error_rec, px_error_tbl);
2968         END;
2969         EXIT WHEN (i = p_pflv_tbl.LAST);
2970         i := p_pflv_tbl.NEXT(i);
2971       END LOOP;
2972     END IF;
2973     -- Loop through the error_tbl to find the error with the highest severity
2974     -- and return it.
2975     x_return_status := find_highest_exception(px_error_tbl);
2976     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2977   EXCEPTION
2978     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2979       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2980       (
2981         l_api_name,
2982         G_PKG_NAME,
2983         'OKL_API.G_RET_STS_ERROR',
2984         x_msg_count,
2985         x_msg_data,
2986         '_PVT'
2987       );
2988     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2989       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2990       (
2991         l_api_name,
2992         G_PKG_NAME,
2993         'OKL_API.G_RET_STS_UNEXP_ERROR',
2994         x_msg_count,
2995         x_msg_data,
2996         '_PVT'
2997       );
2998     WHEN OTHERS THEN
2999       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3000       (
3001         l_api_name,
3002         G_PKG_NAME,
3003         'OTHERS',
3004         x_msg_count,
3005         x_msg_data,
3006         '_PVT'
3007       );
3008   END lock_row;
3009   --------------------------------------
3010   -- PL/SQL TBL lock_row for:PFLV_TBL --
3011   --------------------------------------
3012   PROCEDURE lock_row(
3013     p_api_version                  IN NUMBER,
3014     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3015     x_return_status                OUT NOCOPY VARCHAR2,
3016     x_msg_count                    OUT NOCOPY NUMBER,
3017     x_msg_data                     OUT NOCOPY VARCHAR2,
3018     p_pflv_tbl                     IN pflv_tbl_type) IS
3019 
3020     l_api_version                  CONSTANT NUMBER := 1;
3021     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
3022     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3023     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3024   BEGIN
3025     OKL_API.init_msg_list(p_init_msg_list);
3026     -- Make sure PL/SQL table has recrods in it before passing
3027     IF (p_pflv_tbl.COUNT > 0) THEN
3028       lock_row(
3029         p_api_version                  => p_api_version,
3030         p_init_msg_list                => OKL_API.G_FALSE,
3031         x_return_status                => x_return_status,
3032         x_msg_count                    => x_msg_count,
3033         x_msg_data                     => x_msg_data,
3034         p_pflv_tbl                     => p_pflv_tbl,
3035         px_error_tbl                   => l_error_tbl);
3036     END IF;
3037     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3038   EXCEPTION
3039     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3040       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3041       (
3042         l_api_name,
3043         G_PKG_NAME,
3044         'OKL_API.G_RET_STS_ERROR',
3045         x_msg_count,
3046         x_msg_data,
3047         '_PVT'
3048       );
3049     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3050       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3051       (
3052         l_api_name,
3053         G_PKG_NAME,
3054         'OKL_API.G_RET_STS_UNEXP_ERROR',
3055         x_msg_count,
3056         x_msg_data,
3057         '_PVT'
3058       );
3059     WHEN OTHERS THEN
3060       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3061       (
3062         l_api_name,
3063         G_PKG_NAME,
3064         'OTHERS',
3065         x_msg_count,
3066         x_msg_data,
3067         '_PVT'
3068       );
3069   END lock_row;
3070   ---------------------------------------------------------------------------
3071   -- PROCEDURE update_row
3072   ---------------------------------------------------------------------------
3073   --------------------------------------
3074   -- update_row for:OKL_PRTFL_LINES_B --
3075   --------------------------------------
3076   -- Start of comments
3077   --
3078   -- Procedure Name  : update_row
3079   -- Description     : for OKL_PRTFL_LINES_B
3080   -- Business Rules  :
3081   -- Parameters      :
3082   -- Version         : 1.0
3083   -- History         : RABHUPAT 17-DEC-2002 2667636
3084   --                 : modified for multicurrency changes
3085   -- End of comments
3086   PROCEDURE update_row(
3087     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3088     x_return_status                OUT NOCOPY VARCHAR2,
3089     x_msg_count                    OUT NOCOPY NUMBER,
3090     x_msg_data                     OUT NOCOPY VARCHAR2,
3091     p_pfl_rec                      IN pfl_rec_type,
3092     x_pfl_rec                      OUT NOCOPY pfl_rec_type) IS
3093 
3094     l_api_version                  CONSTANT NUMBER := 1;
3095     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3096     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3097     l_pfl_rec                      pfl_rec_type := p_pfl_rec;
3098     l_def_pfl_rec                  pfl_rec_type;
3099     l_row_notfound                 BOOLEAN := TRUE;
3100     ----------------------------------
3101     -- FUNCTION populate_new_record --
3102     ----------------------------------
3103     FUNCTION populate_new_record (
3104       p_pfl_rec IN pfl_rec_type,
3105       x_pfl_rec OUT NOCOPY pfl_rec_type
3106     ) RETURN VARCHAR2 IS
3107       l_pfl_rec                      pfl_rec_type;
3108       l_row_notfound                 BOOLEAN := TRUE;
3109       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3110     BEGIN
3111       x_pfl_rec := p_pfl_rec;
3112       -- Get current database values
3113       l_pfl_rec := get_rec(p_pfl_rec, l_return_status);
3114       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3115         IF (x_pfl_rec.id = OKL_API.G_MISS_NUM)
3116         THEN
3117           x_pfl_rec.id := l_pfl_rec.id;
3118         END IF;
3119         IF (x_pfl_rec.budget_amount = OKL_API.G_MISS_NUM)
3120         THEN
3121           x_pfl_rec.budget_amount := l_pfl_rec.budget_amount;
3122         END IF;
3123         IF (x_pfl_rec.date_strategy_executed = OKL_API.G_MISS_DATE)
3124         THEN
3125           x_pfl_rec.date_strategy_executed := l_pfl_rec.date_strategy_executed;
3126         END IF;
3127         IF (x_pfl_rec.date_strategy_execution_due = OKL_API.G_MISS_DATE)
3128         THEN
3129           x_pfl_rec.date_strategy_execution_due := l_pfl_rec.date_strategy_execution_due;
3130         END IF;
3131         IF (x_pfl_rec.date_budget_amount_last_review = OKL_API.G_MISS_DATE)
3132         THEN
3133           x_pfl_rec.date_budget_amount_last_review := l_pfl_rec.date_budget_amount_last_review;
3134         END IF;
3135         IF (x_pfl_rec.trx_status_code = OKL_API.G_MISS_CHAR)
3136         THEN
3137           x_pfl_rec.trx_status_code := l_pfl_rec.trx_status_code;
3138         END IF;
3139         IF (x_pfl_rec.asset_track_strategy_code = OKL_API.G_MISS_CHAR)
3140         THEN
3141           x_pfl_rec.asset_track_strategy_code := l_pfl_rec.asset_track_strategy_code;
3142         END IF;
3143         IF (x_pfl_rec.pfc_id = OKL_API.G_MISS_NUM)
3144         THEN
3145           x_pfl_rec.pfc_id := l_pfl_rec.pfc_id;
3146         END IF;
3147         IF (x_pfl_rec.tmb_id = OKL_API.G_MISS_NUM)
3148         THEN
3149           x_pfl_rec.tmb_id := l_pfl_rec.tmb_id;
3150         END IF;
3151         IF (x_pfl_rec.kle_id = OKL_API.G_MISS_NUM)
3152         THEN
3153           x_pfl_rec.kle_id := l_pfl_rec.kle_id;
3154         END IF;
3155         IF (x_pfl_rec.fma_id = OKL_API.G_MISS_NUM)
3156         THEN
3157           x_pfl_rec.fma_id := l_pfl_rec.fma_id;
3158         END IF;
3159         IF (x_pfl_rec.object_version_number = OKL_API.G_MISS_NUM)
3160         THEN
3161           x_pfl_rec.object_version_number := l_pfl_rec.object_version_number;
3162         END IF;
3163         IF (x_pfl_rec.request_id = OKL_API.G_MISS_NUM)
3164         THEN
3165           x_pfl_rec.request_id := l_pfl_rec.request_id;
3166         END IF;
3167         IF (x_pfl_rec.program_application_id = OKL_API.G_MISS_NUM)
3168         THEN
3169           x_pfl_rec.program_application_id := l_pfl_rec.program_application_id;
3170         END IF;
3171         IF (x_pfl_rec.program_id = OKL_API.G_MISS_NUM)
3172         THEN
3173           x_pfl_rec.program_id := l_pfl_rec.program_id;
3174         END IF;
3175         IF (x_pfl_rec.program_update_date = OKL_API.G_MISS_DATE)
3176         THEN
3177           x_pfl_rec.program_update_date := l_pfl_rec.program_update_date;
3178         END IF;
3179         IF (x_pfl_rec.attribute_category = OKL_API.G_MISS_CHAR)
3180         THEN
3181           x_pfl_rec.attribute_category := l_pfl_rec.attribute_category;
3182         END IF;
3183         IF (x_pfl_rec.attribute1 = OKL_API.G_MISS_CHAR)
3184         THEN
3185           x_pfl_rec.attribute1 := l_pfl_rec.attribute1;
3186         END IF;
3187         IF (x_pfl_rec.attribute2 = OKL_API.G_MISS_CHAR)
3188         THEN
3189           x_pfl_rec.attribute2 := l_pfl_rec.attribute2;
3190         END IF;
3191         IF (x_pfl_rec.attribute3 = OKL_API.G_MISS_CHAR)
3192         THEN
3193           x_pfl_rec.attribute3 := l_pfl_rec.attribute3;
3194         END IF;
3195         IF (x_pfl_rec.attribute4 = OKL_API.G_MISS_CHAR)
3196         THEN
3197           x_pfl_rec.attribute4 := l_pfl_rec.attribute4;
3198         END IF;
3199         IF (x_pfl_rec.attribute5 = OKL_API.G_MISS_CHAR)
3200         THEN
3201           x_pfl_rec.attribute5 := l_pfl_rec.attribute5;
3202         END IF;
3203         IF (x_pfl_rec.attribute6 = OKL_API.G_MISS_CHAR)
3204         THEN
3205           x_pfl_rec.attribute6 := l_pfl_rec.attribute6;
3206         END IF;
3207         IF (x_pfl_rec.attribute7 = OKL_API.G_MISS_CHAR)
3208         THEN
3209           x_pfl_rec.attribute7 := l_pfl_rec.attribute7;
3210         END IF;
3211         IF (x_pfl_rec.attribute8 = OKL_API.G_MISS_CHAR)
3212         THEN
3213           x_pfl_rec.attribute8 := l_pfl_rec.attribute8;
3214         END IF;
3215         IF (x_pfl_rec.attribute9 = OKL_API.G_MISS_CHAR)
3216         THEN
3217           x_pfl_rec.attribute9 := l_pfl_rec.attribute9;
3218         END IF;
3219         IF (x_pfl_rec.attribute10 = OKL_API.G_MISS_CHAR)
3220         THEN
3221           x_pfl_rec.attribute10 := l_pfl_rec.attribute10;
3222         END IF;
3223         IF (x_pfl_rec.attribute11 = OKL_API.G_MISS_CHAR)
3224         THEN
3225           x_pfl_rec.attribute11 := l_pfl_rec.attribute11;
3226         END IF;
3227         IF (x_pfl_rec.attribute12 = OKL_API.G_MISS_CHAR)
3228         THEN
3229           x_pfl_rec.attribute12 := l_pfl_rec.attribute12;
3230         END IF;
3231         IF (x_pfl_rec.attribute13 = OKL_API.G_MISS_CHAR)
3232         THEN
3233           x_pfl_rec.attribute13 := l_pfl_rec.attribute13;
3234         END IF;
3235         IF (x_pfl_rec.attribute14 = OKL_API.G_MISS_CHAR)
3236         THEN
3237           x_pfl_rec.attribute14 := l_pfl_rec.attribute14;
3238         END IF;
3239         IF (x_pfl_rec.attribute15 = OKL_API.G_MISS_CHAR)
3240         THEN
3241           x_pfl_rec.attribute15 := l_pfl_rec.attribute15;
3242         END IF;
3243         IF (x_pfl_rec.created_by = OKL_API.G_MISS_NUM)
3244         THEN
3245           x_pfl_rec.created_by := l_pfl_rec.created_by;
3246         END IF;
3247         IF (x_pfl_rec.creation_date = OKL_API.G_MISS_DATE)
3248         THEN
3249           x_pfl_rec.creation_date := l_pfl_rec.creation_date;
3250         END IF;
3251         IF (x_pfl_rec.last_updated_by = OKL_API.G_MISS_NUM)
3252         THEN
3253           x_pfl_rec.last_updated_by := l_pfl_rec.last_updated_by;
3254         END IF;
3255         IF (x_pfl_rec.last_update_date = OKL_API.G_MISS_DATE)
3256         THEN
3257           x_pfl_rec.last_update_date := l_pfl_rec.last_update_date;
3258         END IF;
3259         IF (x_pfl_rec.last_update_login = OKL_API.G_MISS_NUM)
3260         THEN
3261           x_pfl_rec.last_update_login := l_pfl_rec.last_update_login;
3262         END IF;
3263       END IF;
3264   -- RABHUPAT - 2667636 - Start
3265      IF (x_pfl_rec.currency_code = OKC_API.G_MISS_CHAR)
3266       THEN
3267         x_pfl_rec.currency_code := l_pfl_rec.currency_code;
3268       END IF;
3269       IF (x_pfl_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
3270       THEN
3271         x_pfl_rec.currency_conversion_code := l_pfl_rec.currency_conversion_code;
3272       END IF;
3273       IF (x_pfl_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
3274       THEN
3275         x_pfl_rec.currency_conversion_type := l_pfl_rec.currency_conversion_type;
3276       END IF;
3277       IF (x_pfl_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
3278       THEN
3279         x_pfl_rec.currency_conversion_rate := l_pfl_rec.currency_conversion_rate;
3280       END IF;
3281       IF (x_pfl_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
3282       THEN
3283         x_pfl_rec.currency_conversion_date := l_pfl_rec.currency_conversion_date;
3284       END IF;
3285   -- RABHUPAT - 2667636 - End
3286       RETURN(l_return_status);
3287     END populate_new_record;
3288     ------------------------------------------
3289     -- Set_Attributes for:OKL_PRTFL_LINES_B --
3290     ------------------------------------------
3291     FUNCTION Set_Attributes (
3292       p_pfl_rec IN pfl_rec_type,
3293       x_pfl_rec OUT NOCOPY pfl_rec_type
3294     ) RETURN VARCHAR2 IS
3295       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3296     BEGIN
3297       x_pfl_rec := p_pfl_rec;
3298       x_pfl_rec.OBJECT_VERSION_NUMBER := p_pfl_rec.OBJECT_VERSION_NUMBER + 1;
3299       RETURN(l_return_status);
3300     END Set_Attributes;
3301   BEGIN
3302     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3303                                               p_init_msg_list,
3304                                               '_PVT',
3305                                               x_return_status);
3306     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3307       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3308     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3309       RAISE OKL_API.G_EXCEPTION_ERROR;
3310     END IF;
3311     --- Setting item attributes
3312     l_return_status := Set_Attributes(
3313       p_pfl_rec,                         -- IN
3314       l_pfl_rec);                        -- OUT
3315     --- If any errors happen abort API
3316     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3317       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3318     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3319       RAISE OKL_API.G_EXCEPTION_ERROR;
3320     END IF;
3321     l_return_status := populate_new_record(l_pfl_rec, l_def_pfl_rec);
3322     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3323       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3324     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3325       RAISE OKL_API.G_EXCEPTION_ERROR;
3326     END IF;
3327     UPDATE OKL_PRTFL_LINES_B
3328     SET BUDGET_AMOUNT = l_def_pfl_rec.budget_amount,
3329         DATE_STRATEGY_EXECUTED = l_def_pfl_rec.date_strategy_executed,
3330         DATE_STRATEGY_EXECUTION_DUE = l_def_pfl_rec.date_strategy_execution_due,
3331         DATE_BUDGET_AMOUNT_LAST_REVIEW = l_def_pfl_rec.date_budget_amount_last_review,
3332         TRX_STATUS_CODE = l_def_pfl_rec.trx_status_code,
3333         ASSET_TRACK_STRATEGY_CODE = l_def_pfl_rec.asset_track_strategy_code,
3334         PFC_ID = l_def_pfl_rec.pfc_id,
3335         TMB_ID = l_def_pfl_rec.tmb_id,
3336         KLE_ID = l_def_pfl_rec.kle_id,
3337         FMA_ID = l_def_pfl_rec.fma_id,
3338         OBJECT_VERSION_NUMBER = l_def_pfl_rec.object_version_number,
3339         REQUEST_ID = l_def_pfl_rec.request_id,
3340         PROGRAM_APPLICATION_ID = l_def_pfl_rec.program_application_id,
3341         PROGRAM_ID = l_def_pfl_rec.program_id,
3342         PROGRAM_UPDATE_DATE = l_def_pfl_rec.program_update_date,
3343         ATTRIBUTE_CATEGORY = l_def_pfl_rec.attribute_category,
3344         ATTRIBUTE1 = l_def_pfl_rec.attribute1,
3345         ATTRIBUTE2 = l_def_pfl_rec.attribute2,
3346         ATTRIBUTE3 = l_def_pfl_rec.attribute3,
3347         ATTRIBUTE4 = l_def_pfl_rec.attribute4,
3348         ATTRIBUTE5 = l_def_pfl_rec.attribute5,
3349         ATTRIBUTE6 = l_def_pfl_rec.attribute6,
3350         ATTRIBUTE7 = l_def_pfl_rec.attribute7,
3351         ATTRIBUTE8 = l_def_pfl_rec.attribute8,
3352         ATTRIBUTE9 = l_def_pfl_rec.attribute9,
3353         ATTRIBUTE10 = l_def_pfl_rec.attribute10,
3354         ATTRIBUTE11 = l_def_pfl_rec.attribute11,
3355         ATTRIBUTE12 = l_def_pfl_rec.attribute12,
3356         ATTRIBUTE13 = l_def_pfl_rec.attribute13,
3357         ATTRIBUTE14 = l_def_pfl_rec.attribute14,
3358         ATTRIBUTE15 = l_def_pfl_rec.attribute15,
3359         CREATED_BY = l_def_pfl_rec.created_by,
3360         CREATION_DATE = l_def_pfl_rec.creation_date,
3361         LAST_UPDATED_BY = l_def_pfl_rec.last_updated_by,
3362         LAST_UPDATE_DATE = l_def_pfl_rec.last_update_date,
3363         LAST_UPDATE_LOGIN = l_def_pfl_rec.last_update_login,
3364   -- RABHUPAT - 2667636 - Start
3365         CURRENCY_CODE = l_def_pfl_rec.currency_code,
3366         CURRENCY_CONVERSION_CODE = l_def_pfl_rec.currency_conversion_code,
3367         CURRENCY_CONVERSION_TYPE = l_def_pfl_rec.currency_conversion_type,
3368         CURRENCY_CONVERSION_RATE = l_def_pfl_rec.currency_conversion_rate,
3369         CURRENCY_CONVERSION_DATE = l_def_pfl_rec.currency_conversion_date
3370   -- RABHUPAT - 2667636 - End
3371     WHERE ID = l_def_pfl_rec.id;
3372 
3373     x_pfl_rec := l_pfl_rec;
3374     x_return_status := l_return_status;
3375     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3376   EXCEPTION
3377     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3378       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3379       (
3380         l_api_name,
3381         G_PKG_NAME,
3382         'OKL_API.G_RET_STS_ERROR',
3383         x_msg_count,
3384         x_msg_data,
3385         '_PVT'
3386       );
3387     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3388       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3389       (
3390         l_api_name,
3391         G_PKG_NAME,
3392         'OKL_API.G_RET_STS_UNEXP_ERROR',
3393         x_msg_count,
3394         x_msg_data,
3395         '_PVT'
3396       );
3397     WHEN OTHERS THEN
3398       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3399       (
3400         l_api_name,
3401         G_PKG_NAME,
3402         'OTHERS',
3403         x_msg_count,
3404         x_msg_data,
3405         '_PVT'
3406       );
3407   END update_row;
3408   ---------------------------------------
3409   -- update_row for:OKL_PRTFL_LINES_TL --
3410   ---------------------------------------
3411   PROCEDURE update_row(
3412     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3413     x_return_status                OUT NOCOPY VARCHAR2,
3414     x_msg_count                    OUT NOCOPY NUMBER,
3415     x_msg_data                     OUT NOCOPY VARCHAR2,
3416     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type,
3417     x_okl_prtfl_lines_tl_rec       OUT NOCOPY okl_prtfl_lines_tl_rec_type) IS
3418 
3419     l_api_version                  CONSTANT NUMBER := 1;
3420     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
3421     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3422     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type := p_okl_prtfl_lines_tl_rec;
3423     l_def_okl_prtfl_lines_tl_rec   okl_prtfl_lines_tl_rec_type;
3424     l_row_notfound                 BOOLEAN := TRUE;
3425     ----------------------------------
3426     -- FUNCTION populate_new_record --
3427     ----------------------------------
3428     FUNCTION populate_new_record (
3429       p_okl_prtfl_lines_tl_rec IN okl_prtfl_lines_tl_rec_type,
3430       x_okl_prtfl_lines_tl_rec OUT NOCOPY okl_prtfl_lines_tl_rec_type
3431     ) RETURN VARCHAR2 IS
3432       l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
3433       l_row_notfound                 BOOLEAN := TRUE;
3434       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3435     BEGIN
3436       x_okl_prtfl_lines_tl_rec := p_okl_prtfl_lines_tl_rec;
3437       -- Get current database values
3438       l_okl_prtfl_lines_tl_rec := get_rec(p_okl_prtfl_lines_tl_rec, l_return_status);
3439       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3440         IF (x_okl_prtfl_lines_tl_rec.id = OKL_API.G_MISS_NUM)
3441         THEN
3442           x_okl_prtfl_lines_tl_rec.id := l_okl_prtfl_lines_tl_rec.id;
3443         END IF;
3444         IF (x_okl_prtfl_lines_tl_rec.language = OKL_API.G_MISS_CHAR)
3445         THEN
3446           x_okl_prtfl_lines_tl_rec.language := l_okl_prtfl_lines_tl_rec.language;
3447         END IF;
3448         IF (x_okl_prtfl_lines_tl_rec.source_lang = OKL_API.G_MISS_CHAR)
3449         THEN
3450           x_okl_prtfl_lines_tl_rec.source_lang := l_okl_prtfl_lines_tl_rec.source_lang;
3451         END IF;
3452         IF (x_okl_prtfl_lines_tl_rec.sfwt_flag = OKL_API.G_MISS_CHAR)
3453         THEN
3454           x_okl_prtfl_lines_tl_rec.sfwt_flag := l_okl_prtfl_lines_tl_rec.sfwt_flag;
3455         END IF;
3456         IF (x_okl_prtfl_lines_tl_rec.comments = OKL_API.G_MISS_CHAR)
3457         THEN
3458           x_okl_prtfl_lines_tl_rec.comments := l_okl_prtfl_lines_tl_rec.comments;
3459         END IF;
3460         IF (x_okl_prtfl_lines_tl_rec.created_by = OKL_API.G_MISS_NUM)
3461         THEN
3462           x_okl_prtfl_lines_tl_rec.created_by := l_okl_prtfl_lines_tl_rec.created_by;
3463         END IF;
3464         IF (x_okl_prtfl_lines_tl_rec.creation_date = OKL_API.G_MISS_DATE)
3465         THEN
3466           x_okl_prtfl_lines_tl_rec.creation_date := l_okl_prtfl_lines_tl_rec.creation_date;
3467         END IF;
3468         IF (x_okl_prtfl_lines_tl_rec.last_updated_by = OKL_API.G_MISS_NUM)
3469         THEN
3470           x_okl_prtfl_lines_tl_rec.last_updated_by := l_okl_prtfl_lines_tl_rec.last_updated_by;
3471         END IF;
3472         IF (x_okl_prtfl_lines_tl_rec.last_update_date = OKL_API.G_MISS_DATE)
3473         THEN
3474           x_okl_prtfl_lines_tl_rec.last_update_date := l_okl_prtfl_lines_tl_rec.last_update_date;
3475         END IF;
3476         IF (x_okl_prtfl_lines_tl_rec.last_update_login = OKL_API.G_MISS_NUM)
3477         THEN
3478           x_okl_prtfl_lines_tl_rec.last_update_login := l_okl_prtfl_lines_tl_rec.last_update_login;
3479         END IF;
3480       END IF;
3481       RETURN(l_return_status);
3482     END populate_new_record;
3483     -------------------------------------------
3484     -- Set_Attributes for:OKL_PRTFL_LINES_TL --
3485     -------------------------------------------
3486     FUNCTION Set_Attributes (
3487       p_okl_prtfl_lines_tl_rec IN okl_prtfl_lines_tl_rec_type,
3488       x_okl_prtfl_lines_tl_rec OUT NOCOPY okl_prtfl_lines_tl_rec_type
3489     ) RETURN VARCHAR2 IS
3490       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3491     BEGIN
3492       x_okl_prtfl_lines_tl_rec := p_okl_prtfl_lines_tl_rec;
3493       x_okl_prtfl_lines_tl_rec.LANGUAGE := USERENV('LANG');
3494       x_okl_prtfl_lines_tl_rec.LANGUAGE := USERENV('LANG');
3495       RETURN(l_return_status);
3496     END Set_Attributes;
3497   BEGIN
3498     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3499                                               p_init_msg_list,
3500                                               '_PVT',
3501                                               x_return_status);
3502     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3503       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3504     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3505       RAISE OKL_API.G_EXCEPTION_ERROR;
3506     END IF;
3507     --- Setting item attributes
3508     l_return_status := Set_Attributes(
3509       p_okl_prtfl_lines_tl_rec,          -- IN
3510       l_okl_prtfl_lines_tl_rec);         -- OUT
3511     --- If any errors happen abort API
3512     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3513       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3514     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3515       RAISE OKL_API.G_EXCEPTION_ERROR;
3516     END IF;
3517     l_return_status := populate_new_record(l_okl_prtfl_lines_tl_rec, l_def_okl_prtfl_lines_tl_rec);
3518     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3519       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3520     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3521       RAISE OKL_API.G_EXCEPTION_ERROR;
3522     END IF;
3523     UPDATE OKL_PRTFL_LINES_TL
3524     SET COMMENTS = l_def_okl_prtfl_lines_tl_rec.comments,
3525         SOURCE_LANG = l_def_okl_prtfl_lines_tl_rec.source_lang, --Fix for bug 3637102
3526         CREATED_BY = l_def_okl_prtfl_lines_tl_rec.created_by,
3527         CREATION_DATE = l_def_okl_prtfl_lines_tl_rec.creation_date,
3528         LAST_UPDATED_BY = l_def_okl_prtfl_lines_tl_rec.last_updated_by,
3529         LAST_UPDATE_DATE = l_def_okl_prtfl_lines_tl_rec.last_update_date,
3530         LAST_UPDATE_LOGIN = l_def_okl_prtfl_lines_tl_rec.last_update_login
3531     WHERE ID = l_def_okl_prtfl_lines_tl_rec.id
3532         AND USERENV('LANG') in (SOURCE_LANG,LANGUAGE); --Fix for 3637102
3533       --AND SOURCE_LANG = USERENV('LANG');
3534 
3535     UPDATE OKL_PRTFL_LINES_TL
3536     SET SFWT_FLAG = 'Y'
3537     WHERE ID = l_def_okl_prtfl_lines_tl_rec.id
3538       AND SOURCE_LANG <> USERENV('LANG');
3539 
3540     x_okl_prtfl_lines_tl_rec := l_okl_prtfl_lines_tl_rec;
3541     x_return_status := l_return_status;
3542     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3543   EXCEPTION
3544     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3545       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3546       (
3547         l_api_name,
3548         G_PKG_NAME,
3549         'OKL_API.G_RET_STS_ERROR',
3550         x_msg_count,
3551         x_msg_data,
3552         '_PVT'
3553       );
3554     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3555       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3556       (
3557         l_api_name,
3558         G_PKG_NAME,
3559         'OKL_API.G_RET_STS_UNEXP_ERROR',
3560         x_msg_count,
3561         x_msg_data,
3562         '_PVT'
3563       );
3564     WHEN OTHERS THEN
3565       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3566       (
3567         l_api_name,
3568         G_PKG_NAME,
3569         'OTHERS',
3570         x_msg_count,
3571         x_msg_data,
3572         '_PVT'
3573       );
3574   END update_row;
3575   --------------------------------------
3576   -- update_row for:OKL_PRTFL_LINES_V --
3577   --------------------------------------
3578   -- Start of comments
3579   --
3580   -- Procedure Name  : update_row
3581   -- Description     : for OKL_PRTFL_LINES_V
3582   -- Business Rules  :
3583   -- Parameters      :
3584   -- Version         : 1.0
3585   -- History         : RABHUPAT 17-DEC-2002 2667636
3586   --                 : modified for multicurrency changes
3587   -- End of comments
3588   PROCEDURE update_row(
3589     p_api_version                  IN NUMBER,
3590     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3591     x_return_status                OUT NOCOPY VARCHAR2,
3592     x_msg_count                    OUT NOCOPY NUMBER,
3593     x_msg_data                     OUT NOCOPY VARCHAR2,
3594     p_pflv_rec                     IN pflv_rec_type,
3595     x_pflv_rec                     OUT NOCOPY pflv_rec_type) IS
3596 
3597     l_api_version                  CONSTANT NUMBER := 1;
3598     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
3599     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3600     l_pflv_rec                     pflv_rec_type := p_pflv_rec;
3601     l_def_pflv_rec                 pflv_rec_type;
3602     l_db_pflv_rec                  pflv_rec_type;
3603     l_pfl_rec                      pfl_rec_type;
3604     lx_pfl_rec                     pfl_rec_type;
3605     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
3606     lx_okl_prtfl_lines_tl_rec      okl_prtfl_lines_tl_rec_type;
3607     -------------------------------
3608     -- FUNCTION fill_who_columns --
3609     -------------------------------
3610     FUNCTION fill_who_columns (
3611       p_pflv_rec IN pflv_rec_type
3612     ) RETURN pflv_rec_type IS
3613       l_pflv_rec pflv_rec_type := p_pflv_rec;
3614     BEGIN
3615       l_pflv_rec.LAST_UPDATE_DATE := SYSDATE;
3616       l_pflv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3617       l_pflv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3618       RETURN(l_pflv_rec);
3619     END fill_who_columns;
3620     ----------------------------------
3621     -- FUNCTION populate_new_record --
3622     ----------------------------------
3623     FUNCTION populate_new_record (
3624       p_pflv_rec IN pflv_rec_type,
3625       x_pflv_rec OUT NOCOPY pflv_rec_type
3626     ) RETURN VARCHAR2 IS
3627       l_row_notfound                 BOOLEAN := TRUE;
3628       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3629     BEGIN
3630       x_pflv_rec := p_pflv_rec;
3631       -- Get current database values
3632       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
3633       --       so it may be verified through LOCK_ROW.
3634       l_db_pflv_rec := get_rec(p_pflv_rec, l_return_status);
3635       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3636         IF (x_pflv_rec.id = OKL_API.G_MISS_NUM)
3637         THEN
3638           x_pflv_rec.id := l_db_pflv_rec.id;
3639         END IF;
3640         IF (x_pflv_rec.sfwt_flag = OKL_API.G_MISS_CHAR)
3641         THEN
3642           x_pflv_rec.sfwt_flag := l_db_pflv_rec.sfwt_flag;
3643         END IF;
3644 -- Added for object version compatibility for now
3645         IF (x_pflv_rec.object_version_number = OKL_API.G_MISS_NUM)
3646         THEN
3647           x_pflv_rec.object_version_number := l_db_pflv_rec.object_version_number;
3648         END IF;
3649 
3650 
3651         IF (x_pflv_rec.budget_amount = OKL_API.G_MISS_NUM)
3652         THEN
3653           x_pflv_rec.budget_amount := l_db_pflv_rec.budget_amount;
3654         END IF;
3655         IF (x_pflv_rec.date_strategy_executed = OKL_API.G_MISS_DATE)
3656         THEN
3657           x_pflv_rec.date_strategy_executed := l_db_pflv_rec.date_strategy_executed;
3658         END IF;
3659         IF (x_pflv_rec.date_strategy_execution_due = OKL_API.G_MISS_DATE)
3660         THEN
3661           x_pflv_rec.date_strategy_execution_due := l_db_pflv_rec.date_strategy_execution_due;
3662         END IF;
3663         IF (x_pflv_rec.date_budget_amount_last_review = OKL_API.G_MISS_DATE)
3664         THEN
3665           x_pflv_rec.date_budget_amount_last_review := l_db_pflv_rec.date_budget_amount_last_review;
3666         END IF;
3667         IF (x_pflv_rec.trx_status_code = OKL_API.G_MISS_CHAR)
3668         THEN
3669           x_pflv_rec.trx_status_code := l_db_pflv_rec.trx_status_code;
3670         END IF;
3671         IF (x_pflv_rec.asset_track_strategy_code = OKL_API.G_MISS_CHAR)
3672         THEN
3673           x_pflv_rec.asset_track_strategy_code := l_db_pflv_rec.asset_track_strategy_code;
3674         END IF;
3675         IF (x_pflv_rec.pfc_id = OKL_API.G_MISS_NUM)
3676         THEN
3677           x_pflv_rec.pfc_id := l_db_pflv_rec.pfc_id;
3678         END IF;
3679         IF (x_pflv_rec.tmb_id = OKL_API.G_MISS_NUM)
3680         THEN
3681           x_pflv_rec.tmb_id := l_db_pflv_rec.tmb_id;
3682         END IF;
3683         IF (x_pflv_rec.kle_id = OKL_API.G_MISS_NUM)
3684         THEN
3685           x_pflv_rec.kle_id := l_db_pflv_rec.kle_id;
3686         END IF;
3687         IF (x_pflv_rec.fma_id = OKL_API.G_MISS_NUM)
3688         THEN
3689           x_pflv_rec.fma_id := l_db_pflv_rec.fma_id;
3690         END IF;
3691         IF (x_pflv_rec.comments = OKL_API.G_MISS_CHAR)
3692         THEN
3693           x_pflv_rec.comments := l_db_pflv_rec.comments;
3694         END IF;
3695         IF (x_pflv_rec.request_id = OKL_API.G_MISS_NUM)
3696         THEN
3697           x_pflv_rec.request_id := l_db_pflv_rec.request_id;
3698         END IF;
3699         IF (x_pflv_rec.program_application_id = OKL_API.G_MISS_NUM)
3700         THEN
3701           x_pflv_rec.program_application_id := l_db_pflv_rec.program_application_id;
3702         END IF;
3703         IF (x_pflv_rec.program_id = OKL_API.G_MISS_NUM)
3704         THEN
3705           x_pflv_rec.program_id := l_db_pflv_rec.program_id;
3706         END IF;
3707         IF (x_pflv_rec.program_update_date = OKL_API.G_MISS_DATE)
3708         THEN
3709           x_pflv_rec.program_update_date := l_db_pflv_rec.program_update_date;
3710         END IF;
3711         IF (x_pflv_rec.attribute_category = OKL_API.G_MISS_CHAR)
3712         THEN
3713           x_pflv_rec.attribute_category := l_db_pflv_rec.attribute_category;
3714         END IF;
3715         IF (x_pflv_rec.attribute1 = OKL_API.G_MISS_CHAR)
3716         THEN
3717           x_pflv_rec.attribute1 := l_db_pflv_rec.attribute1;
3718         END IF;
3719         IF (x_pflv_rec.attribute2 = OKL_API.G_MISS_CHAR)
3720         THEN
3721           x_pflv_rec.attribute2 := l_db_pflv_rec.attribute2;
3722         END IF;
3723         IF (x_pflv_rec.attribute3 = OKL_API.G_MISS_CHAR)
3724         THEN
3725           x_pflv_rec.attribute3 := l_db_pflv_rec.attribute3;
3726         END IF;
3727         IF (x_pflv_rec.attribute4 = OKL_API.G_MISS_CHAR)
3728         THEN
3729           x_pflv_rec.attribute4 := l_db_pflv_rec.attribute4;
3730         END IF;
3731         IF (x_pflv_rec.attribute5 = OKL_API.G_MISS_CHAR)
3732         THEN
3733           x_pflv_rec.attribute5 := l_db_pflv_rec.attribute5;
3734         END IF;
3735         IF (x_pflv_rec.attribute6 = OKL_API.G_MISS_CHAR)
3736         THEN
3737           x_pflv_rec.attribute6 := l_db_pflv_rec.attribute6;
3738         END IF;
3739         IF (x_pflv_rec.attribute7 = OKL_API.G_MISS_CHAR)
3740         THEN
3741           x_pflv_rec.attribute7 := l_db_pflv_rec.attribute7;
3742         END IF;
3743         IF (x_pflv_rec.attribute8 = OKL_API.G_MISS_CHAR)
3744         THEN
3745           x_pflv_rec.attribute8 := l_db_pflv_rec.attribute8;
3746         END IF;
3747         IF (x_pflv_rec.attribute9 = OKL_API.G_MISS_CHAR)
3748         THEN
3749           x_pflv_rec.attribute9 := l_db_pflv_rec.attribute9;
3750         END IF;
3751         IF (x_pflv_rec.attribute10 = OKL_API.G_MISS_CHAR)
3752         THEN
3753           x_pflv_rec.attribute10 := l_db_pflv_rec.attribute10;
3754         END IF;
3755         IF (x_pflv_rec.attribute11 = OKL_API.G_MISS_CHAR)
3756         THEN
3757           x_pflv_rec.attribute11 := l_db_pflv_rec.attribute11;
3758         END IF;
3759         IF (x_pflv_rec.attribute12 = OKL_API.G_MISS_CHAR)
3760         THEN
3761           x_pflv_rec.attribute12 := l_db_pflv_rec.attribute12;
3762         END IF;
3763         IF (x_pflv_rec.attribute13 = OKL_API.G_MISS_CHAR)
3764         THEN
3765           x_pflv_rec.attribute13 := l_db_pflv_rec.attribute13;
3766         END IF;
3767         IF (x_pflv_rec.attribute14 = OKL_API.G_MISS_CHAR)
3768         THEN
3769           x_pflv_rec.attribute14 := l_db_pflv_rec.attribute14;
3770         END IF;
3771         IF (x_pflv_rec.attribute15 = OKL_API.G_MISS_CHAR)
3772         THEN
3773           x_pflv_rec.attribute15 := l_db_pflv_rec.attribute15;
3774         END IF;
3775         IF (x_pflv_rec.created_by = OKL_API.G_MISS_NUM)
3776         THEN
3777           x_pflv_rec.created_by := l_db_pflv_rec.created_by;
3778         END IF;
3779         IF (x_pflv_rec.creation_date = OKL_API.G_MISS_DATE)
3780         THEN
3781           x_pflv_rec.creation_date := l_db_pflv_rec.creation_date;
3782         END IF;
3783         IF (x_pflv_rec.last_updated_by = OKL_API.G_MISS_NUM)
3784         THEN
3785           x_pflv_rec.last_updated_by := l_db_pflv_rec.last_updated_by;
3786         END IF;
3787         IF (x_pflv_rec.last_update_date = OKL_API.G_MISS_DATE)
3788         THEN
3789           x_pflv_rec.last_update_date := l_db_pflv_rec.last_update_date;
3790         END IF;
3791         IF (x_pflv_rec.last_update_login = OKL_API.G_MISS_NUM)
3792         THEN
3793           x_pflv_rec.last_update_login := l_db_pflv_rec.last_update_login;
3794         END IF;
3795   -- RABHUPAT - 2667636 - Start
3796      IF (x_pflv_rec.currency_code = OKC_API.G_MISS_CHAR)
3797       THEN
3798         x_pflv_rec.currency_code := l_db_pflv_rec.currency_code;
3799       END IF;
3800       IF (x_pflv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
3801       THEN
3802         x_pflv_rec.currency_conversion_code := l_db_pflv_rec.currency_conversion_code;
3803       END IF;
3804       IF (x_pflv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
3805       THEN
3806         x_pflv_rec.currency_conversion_type := l_db_pflv_rec.currency_conversion_type;
3807       END IF;
3808       IF (x_pflv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
3809       THEN
3810         x_pflv_rec.currency_conversion_rate := l_db_pflv_rec.currency_conversion_rate;
3811       END IF;
3812       IF (x_pflv_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
3813       THEN
3814         x_pflv_rec.currency_conversion_date := l_db_pflv_rec.currency_conversion_date;
3815       END IF;
3816   -- RABHUPAT - 2667636 - End
3817       END IF;
3818       RETURN(l_return_status);
3819     END populate_new_record;
3820     ------------------------------------------
3821     -- Set_Attributes for:OKL_PRTFL_LINES_V --
3822     ------------------------------------------
3823     FUNCTION Set_Attributes (
3824       p_pflv_rec IN pflv_rec_type,
3825       x_pflv_rec OUT NOCOPY pflv_rec_type
3826     ) RETURN VARCHAR2 IS
3827       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3828     BEGIN
3829       x_pflv_rec := p_pflv_rec;
3830       RETURN(l_return_status);
3831     END Set_Attributes;
3832   BEGIN
3833     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3834                                               G_PKG_NAME,
3835                                               p_init_msg_list,
3836                                               l_api_version,
3837                                               p_api_version,
3838                                               '_PVT',
3839                                               x_return_status);
3840     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3841       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3842     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3843       RAISE OKL_API.G_EXCEPTION_ERROR;
3844     END IF;
3845     --- Setting item attributes
3846     l_return_status := Set_Attributes(
3847       p_pflv_rec,                        -- IN
3848       x_pflv_rec);                       -- OUT
3849     --- If any errors happen abort API
3850     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3851       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3852     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3853       RAISE OKL_API.G_EXCEPTION_ERROR;
3854     END IF;
3855     l_return_status := populate_new_record(l_pflv_rec, l_def_pflv_rec);
3856     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3857       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3858     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3859       RAISE OKL_API.G_EXCEPTION_ERROR;
3860     END IF;
3861     l_def_pflv_rec := fill_who_columns(l_def_pflv_rec);
3862     --- Validate all non-missing attributes (Item Level Validation)
3863     l_return_status := Validate_Attributes(l_def_pflv_rec);
3864     --- If any errors happen abort API
3865     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3866       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3867     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3868       RAISE OKL_API.G_EXCEPTION_ERROR;
3869     END IF;
3870     l_return_status := Validate_Record(l_def_pflv_rec, l_db_pflv_rec);
3871     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3872       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3873     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3874       RAISE OKL_API.G_EXCEPTION_ERROR;
3875     END IF;
3876 
3877 /* -- Removed for object version compatibility for now
3878     -- Lock the Record
3879     lock_row(
3880       p_api_version                  => p_api_version,
3881       p_init_msg_list                => p_init_msg_list,
3882       x_return_status                => l_return_status,
3883       x_msg_count                    => x_msg_count,
3884       x_msg_data                     => x_msg_data,
3885       p_pflv_rec                     => p_pflv_rec);
3886     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3887       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3888     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3889       RAISE OKL_API.G_EXCEPTION_ERROR;
3890     END IF;
3891 */
3892     -----------------------------------------
3893     -- Move VIEW record to "Child" records --
3894     -----------------------------------------
3895     migrate(l_def_pflv_rec, l_pfl_rec);
3896     migrate(l_def_pflv_rec, l_okl_prtfl_lines_tl_rec);
3897     -----------------------------------------------
3898     -- Call the UPDATE_ROW for each child record --
3899     -----------------------------------------------
3900     update_row(
3901       p_init_msg_list,
3902       l_return_status,
3903       x_msg_count,
3904       x_msg_data,
3905       l_pfl_rec,
3906       lx_pfl_rec
3907     );
3908     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3909       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3910     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3911       RAISE OKL_API.G_EXCEPTION_ERROR;
3912     END IF;
3913     migrate(lx_pfl_rec, l_def_pflv_rec);
3914     update_row(
3915       p_init_msg_list,
3916       l_return_status,
3917       x_msg_count,
3918       x_msg_data,
3919       l_okl_prtfl_lines_tl_rec,
3920       lx_okl_prtfl_lines_tl_rec
3921     );
3922     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3923       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3924     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3925       RAISE OKL_API.G_EXCEPTION_ERROR;
3926     END IF;
3927     migrate(lx_okl_prtfl_lines_tl_rec, l_def_pflv_rec);
3928     x_pflv_rec := l_def_pflv_rec;
3929     x_return_status := l_return_status;
3930     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3931   EXCEPTION
3932     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3933       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3934       (
3935         l_api_name,
3936         G_PKG_NAME,
3937         'OKL_API.G_RET_STS_ERROR',
3938         x_msg_count,
3939         x_msg_data,
3940         '_PVT'
3941       );
3942     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3943       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3944       (
3945         l_api_name,
3946         G_PKG_NAME,
3947         'OKL_API.G_RET_STS_UNEXP_ERROR',
3948         x_msg_count,
3949         x_msg_data,
3950         '_PVT'
3951       );
3952     WHEN OTHERS THEN
3953       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3954       (
3955         l_api_name,
3956         G_PKG_NAME,
3957         'OTHERS',
3958         x_msg_count,
3959         x_msg_data,
3960         '_PVT'
3961       );
3962   END update_row;
3963   ----------------------------------------
3964   -- PL/SQL TBL update_row for:pflv_tbl --
3965   ----------------------------------------
3966   PROCEDURE update_row(
3967     p_api_version                  IN NUMBER,
3968     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3969     x_return_status                OUT NOCOPY VARCHAR2,
3970     x_msg_count                    OUT NOCOPY NUMBER,
3971     x_msg_data                     OUT NOCOPY VARCHAR2,
3972     p_pflv_tbl                     IN pflv_tbl_type,
3973     x_pflv_tbl                     OUT NOCOPY pflv_tbl_type,
3974     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3975 
3976     l_api_version                  CONSTANT NUMBER := 1;
3977     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
3978     i                              NUMBER := 0;
3979   BEGIN
3980     OKL_API.init_msg_list(p_init_msg_list);
3981     -- Make sure PL/SQL table has records in it before passing
3982     IF (p_pflv_tbl.COUNT > 0) THEN
3983       i := p_pflv_tbl.FIRST;
3984       LOOP
3985         DECLARE
3986           l_error_rec         OKL_API.ERROR_REC_TYPE;
3987         BEGIN
3988           l_error_rec.api_name := l_api_name;
3989           l_error_rec.api_package := G_PKG_NAME;
3990           l_error_rec.idx := i;
3991           update_row (
3992             p_api_version                  => p_api_version,
3993             p_init_msg_list                => OKL_API.G_FALSE,
3994             x_return_status                => l_error_rec.error_type,
3995             x_msg_count                    => l_error_rec.msg_count,
3996             x_msg_data                     => l_error_rec.msg_data,
3997             p_pflv_rec                     => p_pflv_tbl(i),
3998             x_pflv_rec                     => x_pflv_tbl(i));
3999           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4000             l_error_rec.sqlcode := SQLCODE;
4001             load_error_tbl(l_error_rec, px_error_tbl);
4002           ELSE
4003             x_msg_count := l_error_rec.msg_count;
4004             x_msg_data := l_error_rec.msg_data;
4005           END IF;
4006         EXCEPTION
4007           WHEN OKL_API.G_EXCEPTION_ERROR THEN
4008             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4009             l_error_rec.sqlcode := SQLCODE;
4010             load_error_tbl(l_error_rec, px_error_tbl);
4011           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4012             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4013             l_error_rec.sqlcode := SQLCODE;
4014             load_error_tbl(l_error_rec, px_error_tbl);
4015           WHEN OTHERS THEN
4016             l_error_rec.error_type := 'OTHERS';
4017             l_error_rec.sqlcode := SQLCODE;
4018             load_error_tbl(l_error_rec, px_error_tbl);
4019         END;
4020         EXIT WHEN (i = p_pflv_tbl.LAST);
4021         i := p_pflv_tbl.NEXT(i);
4022       END LOOP;
4023     END IF;
4024     -- Loop through the error_tbl to find the error with the highest severity
4025     -- and return it.
4026     x_return_status := find_highest_exception(px_error_tbl);
4027     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4028   EXCEPTION
4029     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4030       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4031       (
4032         l_api_name,
4033         G_PKG_NAME,
4034         'OKL_API.G_RET_STS_ERROR',
4035         x_msg_count,
4036         x_msg_data,
4037         '_PVT'
4038       );
4039     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4040       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4041       (
4042         l_api_name,
4043         G_PKG_NAME,
4044         'OKL_API.G_RET_STS_UNEXP_ERROR',
4045         x_msg_count,
4046         x_msg_data,
4047         '_PVT'
4048       );
4049     WHEN OTHERS THEN
4050       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4051       (
4052         l_api_name,
4053         G_PKG_NAME,
4054         'OTHERS',
4055         x_msg_count,
4056         x_msg_data,
4057         '_PVT'
4058       );
4059   END update_row;
4060 
4061   ----------------------------------------
4062   -- PL/SQL TBL update_row for:PFLV_TBL --
4063   ----------------------------------------
4064   PROCEDURE update_row(
4065     p_api_version                  IN NUMBER,
4066     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4067     x_return_status                OUT NOCOPY VARCHAR2,
4068     x_msg_count                    OUT NOCOPY NUMBER,
4069     x_msg_data                     OUT NOCOPY VARCHAR2,
4070     p_pflv_tbl                     IN pflv_tbl_type,
4071     x_pflv_tbl                     OUT NOCOPY pflv_tbl_type) IS
4072 
4073     l_api_version                  CONSTANT NUMBER := 1;
4074     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4075     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4076     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4077   BEGIN
4078     OKL_API.init_msg_list(p_init_msg_list);
4079     -- Make sure PL/SQL table has records in it before passing
4080     IF (p_pflv_tbl.COUNT > 0) THEN
4081       update_row (
4082         p_api_version                  => p_api_version,
4083         p_init_msg_list                => OKL_API.G_FALSE,
4084         x_return_status                => x_return_status,
4085         x_msg_count                    => x_msg_count,
4086         x_msg_data                     => x_msg_data,
4087         p_pflv_tbl                     => p_pflv_tbl,
4088         x_pflv_tbl                     => x_pflv_tbl,
4089         px_error_tbl                   => l_error_tbl);
4090     END IF;
4091     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4092   EXCEPTION
4093     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4094       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4095       (
4096         l_api_name,
4097         G_PKG_NAME,
4098         'OKL_API.G_RET_STS_ERROR',
4099         x_msg_count,
4100         x_msg_data,
4101         '_PVT'
4102       );
4103     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4104       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4105       (
4106         l_api_name,
4107         G_PKG_NAME,
4108         'OKL_API.G_RET_STS_UNEXP_ERROR',
4109         x_msg_count,
4110         x_msg_data,
4111         '_PVT'
4112       );
4113     WHEN OTHERS THEN
4114       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4115       (
4116         l_api_name,
4117         G_PKG_NAME,
4118         'OTHERS',
4119         x_msg_count,
4120         x_msg_data,
4121         '_PVT'
4122       );
4123   END update_row;
4124 
4125   ---------------------------------------------------------------------------
4126   -- PROCEDURE delete_row
4127   ---------------------------------------------------------------------------
4128   --------------------------------------
4129   -- delete_row for:OKL_PRTFL_LINES_B --
4130   --------------------------------------
4131   PROCEDURE delete_row(
4132     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4133     x_return_status                OUT NOCOPY VARCHAR2,
4134     x_msg_count                    OUT NOCOPY NUMBER,
4135     x_msg_data                     OUT NOCOPY VARCHAR2,
4136     p_pfl_rec                      IN pfl_rec_type) IS
4137 
4138     l_api_version                  CONSTANT NUMBER := 1;
4139     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
4140     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4141     l_pfl_rec                      pfl_rec_type := p_pfl_rec;
4142     l_row_notfound                 BOOLEAN := TRUE;
4143   BEGIN
4144     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4145                                               p_init_msg_list,
4146                                               '_PVT',
4147                                               x_return_status);
4148     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4149       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4150     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4151       RAISE OKL_API.G_EXCEPTION_ERROR;
4152     END IF;
4153 
4154     DELETE FROM OKL_PRTFL_LINES_B
4155      WHERE ID = p_pfl_rec.id;
4156 
4157     x_return_status := l_return_status;
4158     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4159   EXCEPTION
4160     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4161       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4162       (
4163         l_api_name,
4164         G_PKG_NAME,
4165         'OKL_API.G_RET_STS_ERROR',
4166         x_msg_count,
4167         x_msg_data,
4168         '_PVT'
4169       );
4170     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4171       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4172       (
4173         l_api_name,
4174         G_PKG_NAME,
4175         'OKL_API.G_RET_STS_UNEXP_ERROR',
4176         x_msg_count,
4177         x_msg_data,
4178         '_PVT'
4179       );
4180     WHEN OTHERS THEN
4181       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4182       (
4183         l_api_name,
4184         G_PKG_NAME,
4185         'OTHERS',
4186         x_msg_count,
4187         x_msg_data,
4188         '_PVT'
4189       );
4190   END delete_row;
4191   ---------------------------------------
4192   -- delete_row for:OKL_PRTFL_LINES_TL --
4193   ---------------------------------------
4194   PROCEDURE delete_row(
4195     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4196     x_return_status                OUT NOCOPY VARCHAR2,
4197     x_msg_count                    OUT NOCOPY NUMBER,
4198     x_msg_data                     OUT NOCOPY VARCHAR2,
4199     p_okl_prtfl_lines_tl_rec       IN okl_prtfl_lines_tl_rec_type) IS
4200 
4201     l_api_version                  CONSTANT NUMBER := 1;
4202     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
4203     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4204     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type := p_okl_prtfl_lines_tl_rec;
4205     l_row_notfound                 BOOLEAN := TRUE;
4206   BEGIN
4207     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4208                                               p_init_msg_list,
4209                                               '_PVT',
4210                                               x_return_status);
4211     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4212       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4213     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4214       RAISE OKL_API.G_EXCEPTION_ERROR;
4215     END IF;
4216 
4217     DELETE FROM OKL_PRTFL_LINES_TL
4218      WHERE ID = p_okl_prtfl_lines_tl_rec.id;
4219 
4220     x_return_status := l_return_status;
4221     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4222   EXCEPTION
4223     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4224       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4225       (
4226         l_api_name,
4227         G_PKG_NAME,
4228         'OKL_API.G_RET_STS_ERROR',
4229         x_msg_count,
4230         x_msg_data,
4231         '_PVT'
4232       );
4233     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4234       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4235       (
4236         l_api_name,
4237         G_PKG_NAME,
4238         'OKL_API.G_RET_STS_UNEXP_ERROR',
4239         x_msg_count,
4240         x_msg_data,
4241         '_PVT'
4242       );
4243     WHEN OTHERS THEN
4244       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4245       (
4246         l_api_name,
4247         G_PKG_NAME,
4248         'OTHERS',
4249         x_msg_count,
4250         x_msg_data,
4251         '_PVT'
4252       );
4253   END delete_row;
4254   --------------------------------------
4255   -- delete_row for:OKL_PRTFL_LINES_V --
4256   --------------------------------------
4257   PROCEDURE delete_row(
4258     p_api_version                  IN NUMBER,
4259     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4260     x_return_status                OUT NOCOPY VARCHAR2,
4261     x_msg_count                    OUT NOCOPY NUMBER,
4262     x_msg_data                     OUT NOCOPY VARCHAR2,
4263     p_pflv_rec                     IN pflv_rec_type) IS
4264 
4265     l_api_version                  CONSTANT NUMBER := 1;
4266     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
4267     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4268     l_pflv_rec                     pflv_rec_type := p_pflv_rec;
4269     l_okl_prtfl_lines_tl_rec       okl_prtfl_lines_tl_rec_type;
4270     l_pfl_rec                      pfl_rec_type;
4271   BEGIN
4272     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4273                                               G_PKG_NAME,
4274                                               p_init_msg_list,
4275                                               l_api_version,
4276                                               p_api_version,
4277                                               '_PVT',
4278                                               x_return_status);
4279     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4280       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4281     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4282       RAISE OKL_API.G_EXCEPTION_ERROR;
4283     END IF;
4284     -----------------------------------------
4285     -- Move VIEW record to "Child" records --
4286     -----------------------------------------
4287     migrate(l_pflv_rec, l_okl_prtfl_lines_tl_rec);
4288     migrate(l_pflv_rec, l_pfl_rec);
4289     -----------------------------------------------
4290     -- Call the DELETE_ROW for each child record --
4291     -----------------------------------------------
4292     delete_row(
4293       p_init_msg_list,
4294       l_return_status,
4295       x_msg_count,
4296       x_msg_data,
4297       l_okl_prtfl_lines_tl_rec
4298     );
4299     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4300       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4301     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4302       RAISE OKL_API.G_EXCEPTION_ERROR;
4303     END IF;
4304     delete_row(
4305       p_init_msg_list,
4306       l_return_status,
4307       x_msg_count,
4308       x_msg_data,
4309       l_pfl_rec
4310     );
4311     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4312       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4313     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4314       RAISE OKL_API.G_EXCEPTION_ERROR;
4315     END IF;
4316     x_return_status := l_return_status;
4317     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4318   EXCEPTION
4319     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4320       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4321       (
4322         l_api_name,
4323         G_PKG_NAME,
4324         'OKL_API.G_RET_STS_ERROR',
4325         x_msg_count,
4326         x_msg_data,
4327         '_PVT'
4328       );
4329     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4330       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4331       (
4332         l_api_name,
4333         G_PKG_NAME,
4334         'OKL_API.G_RET_STS_UNEXP_ERROR',
4335         x_msg_count,
4336         x_msg_data,
4337         '_PVT'
4338       );
4339     WHEN OTHERS THEN
4340       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4341       (
4342         l_api_name,
4343         G_PKG_NAME,
4344         'OTHERS',
4345         x_msg_count,
4346         x_msg_data,
4347         '_PVT'
4348       );
4349   END delete_row;
4350   -------------------------------------------------
4351   -- PL/SQL TBL delete_row for:OKL_PRTFL_LINES_V --
4352   -------------------------------------------------
4353   PROCEDURE delete_row(
4354     p_api_version                  IN NUMBER,
4355     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4356     x_return_status                OUT NOCOPY VARCHAR2,
4357     x_msg_count                    OUT NOCOPY NUMBER,
4358     x_msg_data                     OUT NOCOPY VARCHAR2,
4359     p_pflv_tbl                     IN pflv_tbl_type,
4360     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
4361 
4362     l_api_version                  CONSTANT NUMBER := 1;
4363     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
4364     i                              NUMBER := 0;
4365   BEGIN
4366     OKL_API.init_msg_list(p_init_msg_list);
4367     -- Make sure PL/SQL table has records in it before passing
4368     IF (p_pflv_tbl.COUNT > 0) THEN
4369       i := p_pflv_tbl.FIRST;
4370       LOOP
4371         DECLARE
4372           l_error_rec         OKL_API.ERROR_REC_TYPE;
4373         BEGIN
4374           l_error_rec.api_name := l_api_name;
4375           l_error_rec.api_package := G_PKG_NAME;
4376           l_error_rec.idx := i;
4377           delete_row (
4378             p_api_version                  => p_api_version,
4379             p_init_msg_list                => OKL_API.G_FALSE,
4380             x_return_status                => l_error_rec.error_type,
4381             x_msg_count                    => l_error_rec.msg_count,
4382             x_msg_data                     => l_error_rec.msg_data,
4383             p_pflv_rec                     => p_pflv_tbl(i));
4384           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
4385             l_error_rec.sqlcode := SQLCODE;
4386             load_error_tbl(l_error_rec, px_error_tbl);
4387           ELSE
4388             x_msg_count := l_error_rec.msg_count;
4389             x_msg_data := l_error_rec.msg_data;
4390           END IF;
4391         EXCEPTION
4392           WHEN OKL_API.G_EXCEPTION_ERROR THEN
4393             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
4394             l_error_rec.sqlcode := SQLCODE;
4395             load_error_tbl(l_error_rec, px_error_tbl);
4396           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4397             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
4398             l_error_rec.sqlcode := SQLCODE;
4399             load_error_tbl(l_error_rec, px_error_tbl);
4400           WHEN OTHERS THEN
4401             l_error_rec.error_type := 'OTHERS';
4402             l_error_rec.sqlcode := SQLCODE;
4403             load_error_tbl(l_error_rec, px_error_tbl);
4404         END;
4405         EXIT WHEN (i = p_pflv_tbl.LAST);
4406         i := p_pflv_tbl.NEXT(i);
4407       END LOOP;
4408     END IF;
4409     -- Loop through the error_tbl to find the error with the highest severity
4410     -- and return it.
4411     x_return_status := find_highest_exception(px_error_tbl);
4412     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4413   EXCEPTION
4414     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4415       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4416       (
4417         l_api_name,
4418         G_PKG_NAME,
4419         'OKL_API.G_RET_STS_ERROR',
4420         x_msg_count,
4421         x_msg_data,
4422         '_PVT'
4423       );
4424     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4425       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4426       (
4427         l_api_name,
4428         G_PKG_NAME,
4429         'OKL_API.G_RET_STS_UNEXP_ERROR',
4430         x_msg_count,
4431         x_msg_data,
4432         '_PVT'
4433       );
4434     WHEN OTHERS THEN
4435       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4436       (
4437         l_api_name,
4438         G_PKG_NAME,
4439         'OTHERS',
4440         x_msg_count,
4441         x_msg_data,
4442         '_PVT'
4443       );
4444   END delete_row;
4445 
4446   -------------------------------------------------
4447   -- PL/SQL TBL delete_row for:OKL_PRTFL_LINES_V --
4448   -------------------------------------------------
4449   PROCEDURE delete_row(
4450     p_api_version                  IN NUMBER,
4451     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4452     x_return_status                OUT NOCOPY VARCHAR2,
4453     x_msg_count                    OUT NOCOPY NUMBER,
4454     x_msg_data                     OUT NOCOPY VARCHAR2,
4455     p_pflv_tbl                     IN pflv_tbl_type) IS
4456 
4457     l_api_version                  CONSTANT NUMBER := 1;
4458     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
4459     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4460     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
4461   BEGIN
4462     OKL_API.init_msg_list(p_init_msg_list);
4463     -- Make sure PL/SQL table has records in it before passing
4464     IF (p_pflv_tbl.COUNT > 0) THEN
4465       delete_row (
4466         p_api_version                  => p_api_version,
4467         p_init_msg_list                => OKL_API.G_FALSE,
4468         x_return_status                => x_return_status,
4469         x_msg_count                    => x_msg_count,
4470         x_msg_data                     => x_msg_data,
4471         p_pflv_tbl                     => p_pflv_tbl,
4472         px_error_tbl                   => l_error_tbl);
4473     END IF;
4474     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4475   EXCEPTION
4476     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4477       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4478       (
4479         l_api_name,
4480         G_PKG_NAME,
4481         'OKL_API.G_RET_STS_ERROR',
4482         x_msg_count,
4483         x_msg_data,
4484         '_PVT'
4485       );
4486     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4487       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4488       (
4489         l_api_name,
4490         G_PKG_NAME,
4491         'OKL_API.G_RET_STS_UNEXP_ERROR',
4492         x_msg_count,
4493         x_msg_data,
4494         '_PVT'
4495       );
4496     WHEN OTHERS THEN
4497       x_return_status := OKL_API.HANDLE_EXCEPTIONS
4498       (
4499         l_api_name,
4500         G_PKG_NAME,
4501         'OTHERS',
4502         x_msg_count,
4503         x_msg_data,
4504         '_PVT'
4505       );
4506   END delete_row;
4507 
4508 END OKL_PFL_PVT;