DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_FMA_PVT

Source


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