DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_OBJECT_EXTENSIONS_PVT

Source


1 PACKAGE BODY BIS_OBJECT_EXTENSIONS_PVT AS
2 /* $Header: BISVEXTB.pls 120.2 2005/12/12 12:35:45 hengliu noship $ */
3 /*
4 REM +=======================================================================+
5 REM |    Copyright (c) 2004 Oracle Corporation, Redwood Shores, CA, USA     |
6 REM |                         All rights reserved.                          |
7 REM +=======================================================================+
8 REM | FILENAME                                                              |
9 REM |     BISVEXTB.pls                                                      |
10 REM |                                                                       |
11 REM | DESCRIPTION                                                           |
12 REM |     Module: Wrapper for populating the extension tables               |
13 REM |             - BIS_MEASURES_EXTENSION_TL                               |
14 REM |             - BIS_FORM_FUNCTION_EXTENSION_TL                          |
15 REM | NOTES                                                                 |
16 REM | 24-NOV-2004 Krishna  Created.                                         |
17 REM | 31-Jan-2005 rpenneru Modified for #4153331, BIS_MEASURES_EXTENSION_TL |
18 REM |             Name and Description should not be updated, if the values |
19 REM |             are BIS_COMMON_UTILS.G_DEF_CHAR                           |
20 REM |       19-MAY-2005  visuri   GSCC Issues bug 4363854                   |
21 REM |       24-Aug-2005  hengliu  bug#4572274: issue in loading seed data   |
22 REM +=======================================================================+
23 */
24 
25 G_PKG_NAME CONSTANT VARCHAR2(30):='BIS_OBJECT_EXTENSIONS_PVT';
26 
27 /*********************************************************************************************
28         FUNCTION Name :- Create_Form_Func_Extension
29         PARAMETERS    :-
30             p_Form_Func_Extn_Rec :- The Details of form function sent from UI for create
31         DESCRIPTION   :- Creates the new form function
32         AUTHOR        :- KRISHNA
33 *********************************************************************************************/
34 PROCEDURE Create_Form_Func_Extension(
35     p_Api_Version         IN          NUMBER
36  ,  p_Commit              IN          VARCHAR2
37  ,  p_Form_Func_Extn_Rec  IN          BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
38  ,  x_Return_Status       OUT NOCOPY  VARCHAR2
39  ,  x_Msg_Count           OUT NOCOPY  NUMBER
40  ,  x_Msg_Data            OUT NOCOPY  VARCHAR2
41 )IS
42     l_Commit        VARCHAR2(30);
43     l_Form_Func_Extn_Rec BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type;
44 BEGIN
45     SAVEPOINT  CreateFormFuncSP_Pvt;
46     FND_MSG_PUB.Initialize;
47     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
48     IF( p_Commit IS NULL) THEN
49         l_Commit    := FND_API.G_FALSE;
50     ELSE
51         l_Commit := p_Commit;
52     END IF;
53     --dbms_output.put_line('i am calling validate from create ');
54     l_Form_Func_Extn_Rec := p_Form_Func_Extn_Rec;
55 
56     IF ( l_Form_Func_Extn_Rec.Name = BIS_COMMON_UTILS.G_DEF_CHAR ) THEN
57       l_Form_Func_Extn_Rec.Name := NULL;
58     END IF;
59 
60     IF ( l_Form_Func_Extn_Rec.Description =  BIS_COMMON_UTILS.G_DEF_CHAR) THEN
61       l_Form_Func_Extn_Rec.Description := NULL;
62     END IF;
63 
64     -- Insert into base tables
65     INSERT INTO BIS_FORM_FUNCTION_EXTENSION
66     (
67           OBJECT_TYPE
68         , OBJECT_NAME
69         , APPLICATION_ID
70         , FUNCTIONAL_AREA_ID
71         , CREATED_BY
72         , CREATION_DATE
73         , LAST_UPDATED_BY
74         , LAST_UPDATE_DATE
75         , LAST_UPDATE_LOGIN
76     )
77     VALUES
78     (
79         l_Form_Func_Extn_Rec.Object_Type
80       , TRIM(l_Form_Func_Extn_Rec.Object_Name)
81       , l_Form_Func_Extn_Rec.Application_Id
82       , l_Form_Func_Extn_Rec.Func_Area_Id
83       , NVL(l_Form_Func_Extn_Rec.Created_By,FND_GLOBAL.USER_ID)
84       , NVL(l_Form_Func_Extn_Rec.Last_Update_Date,SYSDATE)
85       , NVL(l_Form_Func_Extn_Rec.Last_Updated_By,FND_GLOBAL.USER_ID)
86       , NVL(l_Form_Func_Extn_Rec.Last_Update_Date,SYSDATE)
87       , NVL(l_Form_Func_Extn_Rec.Last_Update_Login,FND_GLOBAL.LOGIN_ID)
88     );
89 
90     INSERT INTO BIS_FORM_FUNCTION_EXTENSION_TL
91     (
92           OBJECT_NAME
93         , NAME
94         , DESCRIPTION
95         , LANGUAGE
96         , SOURCE_LANG
97         , CREATED_BY
98         , CREATION_DATE
99         , LAST_UPDATED_BY
100         , LAST_UPDATE_DATE
101         , LAST_UPDATE_LOGIN
102     )
103     SELECT
104         l_Form_Func_Extn_Rec.Object_Name
105       , l_Form_Func_Extn_Rec.Name
106       , l_Form_Func_Extn_Rec.Description
107       , L.LANGUAGE_CODE
108       , USERENV('LANG')
109       , NVL(l_Form_Func_Extn_Rec.Created_By,FND_GLOBAL.USER_ID)
110       , NVL(l_Form_Func_Extn_Rec.Last_Update_Date,SYSDATE)
111       , NVL(l_Form_Func_Extn_Rec.Last_Updated_By,FND_GLOBAL.USER_ID)
112       , NVL(l_Form_Func_Extn_Rec.Last_Update_Date,SYSDATE)
113       , NVL(l_Form_Func_Extn_Rec.Last_Update_Login,FND_GLOBAL.LOGIN_ID)
114     FROM FND_LANGUAGES L
115     WHERE L.INSTALLED_FLAG IN ('I', 'B')
116     AND NOT EXISTS
117         (
118           SELECT NULL
119           FROM   BIS_FORM_FUNCTION_EXTENSION_TL T
120           WHERE  T.OBJECT_NAME = l_Form_Func_Extn_Rec.Object_Name
121           AND    T.LANGUAGE    = L.LANGUAGE_CODE
122         );
123 
124   IF (l_Commit = FND_API.G_TRUE) THEN
125       COMMIT;
126     END IF;
127 
128 EXCEPTION
129     WHEN FND_API.G_EXC_ERROR THEN
130         ROLLBACK TO CreateFormFuncSP_Pvt;
131         IF (x_msg_data IS NULL) THEN
132             FND_MSG_PUB.Count_And_Get
133             (      p_encoded   =>  FND_API.G_FALSE
134                ,   p_count     =>  x_msg_count
135                ,   p_data      =>  x_msg_data
136             );
137         END IF;
138         x_return_status :=  FND_API.G_RET_STS_ERROR;
139     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
140         ROLLBACK TO CreateFormFuncSP_Pvt;
141         IF (x_msg_data IS NULL) THEN
142             FND_MSG_PUB.Count_And_Get
143             (      p_encoded   =>  FND_API.G_FALSE
144                ,   p_count     =>  x_msg_count
145                ,   p_data      =>  x_msg_data
146             );
147         END IF;
148         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
149     WHEN NO_DATA_FOUND THEN
150         ROLLBACK TO CreateFormFuncSP_Pvt;
151         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
152         IF (x_msg_data IS NOT NULL) THEN
153             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Create_Form_Func_Extension ';
154         ELSE
155             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Create_Form_Func_Extension ';
156         END IF;
157     WHEN OTHERS THEN
158         ROLLBACK TO CreateFormFuncSP_Pvt;
159         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
160         IF (x_msg_data IS NOT NULL) THEN
161             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Create_Form_Func_Extension ';
162         ELSE
163             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Create_Form_Func_Extension ';
164         END IF;
165 END Create_Form_Func_Extension;
166 
167 
168 
169 /*********************************************************************************************
170         FUNCTION Name :- Update_Form_Func_Extension
171         PARAMETERS    :-
172             p_Form_Func_Extn_Rec :- The Details of form function sent from UI for update
173         DESCRIPTION   :- This basically updates the properties for form functions
174                          This can be called from UI also
175         AUTHOR        :- KRISHNA
176 *********************************************************************************************/
177 PROCEDURE Update_Form_Func_Extension(
178   p_Api_Version         IN          NUMBER
179  ,p_Commit              IN          VARCHAR2
180  ,p_Form_Func_Extn_Rec  IN          BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
181  ,x_Return_Status       OUT NOCOPY  VARCHAR2
182  ,x_Msg_Count           OUT NOCOPY  NUMBER
183  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
184 )IS
185     l_Commit                VARCHAR2(30);
186     l_Form_Func_Extn_Rec    BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type;
187 BEGIN
188     SAVEPOINT  UpdateFormFuncSP;
189     FND_MSG_PUB.Initialize;
190     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
191     IF( p_Commit IS NULL) THEN
192         l_Commit    := FND_API.G_FALSE;
193     ELSE
194         l_Commit := p_Commit;
195     END IF;
196 
197     BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Form_Func_Extension(
198         p_Form_Func_Extn_Rec  =>  p_Form_Func_Extn_Rec
199      ,  x_Form_Func_Extn_Rec  =>  l_Form_Func_Extn_Rec
200      ,  x_Return_Status       =>  x_Return_Status
201      ,  x_Msg_Count           =>  x_Msg_Count
202      ,  x_Msg_Data            =>  x_Msg_Data
203     );
204     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
205         RAISE  FND_API.G_EXC_ERROR;
206     END IF;
207 
208     IF(p_Form_Func_Extn_Rec.Application_Id IS NOT NULL) THEN
209         l_Form_Func_Extn_Rec.Application_Id := p_Form_Func_Extn_Rec.Application_Id;
210     END IF;
211     IF(p_Form_Func_Extn_Rec.Func_Area_Id IS NOT NULL) THEN
212         l_Form_Func_Extn_Rec.Func_Area_Id:= p_Form_Func_Extn_Rec.Func_Area_Id;
213     END IF;
214 
215     IF(p_Form_Func_Extn_Rec.Last_Update_Date IS NULL) THEN
216         l_Form_Func_Extn_Rec.Last_Update_Date := SYSDATE;
217     ELSE
218         l_Form_Func_Extn_Rec.Last_Update_Date := p_Form_Func_Extn_Rec.Last_Update_Date;
219     END IF;
220 
221     IF (p_Form_Func_Extn_Rec.Last_Updated_By IS NULL) THEN
222       l_Form_Func_Extn_Rec.Last_Updated_By := FND_GLOBAL.USER_ID;
223     ELSE
224       l_Form_Func_Extn_Rec.Last_Updated_By := p_Form_Func_Extn_Rec.Last_Updated_By;
225     END IF;
226 
227     IF (p_Form_Func_Extn_Rec.Last_Update_Login IS NULL) THEN
228       l_Form_Func_Extn_Rec.Last_Update_Login := FND_GLOBAL.LOGIN_ID;
229     ELSE
230       l_Form_Func_Extn_Rec.Last_Update_Login := p_Form_Func_Extn_Rec.Last_Update_Login;
231     END IF;
232 
233     UPDATE BIS_FORM_FUNCTION_EXTENSION
234     SET
235         APPLICATION_ID     = l_Form_Func_Extn_Rec.Application_id
236       , FUNCTIONAL_AREA_ID = l_Form_Func_Extn_Rec.Func_Area_Id
237       , LAST_UPDATED_BY    = l_Form_Func_Extn_Rec.Last_Updated_By
238       , LAST_UPDATE_DATE   = l_Form_Func_Extn_Rec.Last_Update_Date
239       , LAST_UPDATE_LOGIN  = l_Form_Func_Extn_Rec.Last_Update_Login
240     WHERE OBJECT_NAME      = l_Form_Func_Extn_Rec.Object_Name;
241 
242 
243     BIS_OBJECT_EXTENSIONS_PVT.Translate_Form_Func_Extension(
244         p_Api_Version         =>  p_Api_Version
245      ,  p_Commit              =>  p_Commit
246      ,  p_Form_Func_Extn_Rec  =>  p_Form_Func_Extn_Rec
247      ,  x_Return_Status       =>  x_Return_Status
248      ,  x_Msg_Count           =>  x_Msg_Count
249      ,  x_Msg_Data            =>  x_Msg_Data
250     );
251     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
252         RAISE  FND_API.G_EXC_ERROR;
253     END IF;
254     IF (l_Commit = FND_API.G_TRUE) THEN
255       COMMIT;
256     END IF;
257 
258 EXCEPTION
259     WHEN FND_API.G_EXC_ERROR THEN
260         ROLLBACK TO UpdateFormFuncSP;
261         IF (x_msg_data IS NULL) THEN
262             FND_MSG_PUB.Count_And_Get
263             (      p_encoded   =>  FND_API.G_FALSE
264                ,   p_count     =>  x_msg_count
265                ,   p_data      =>  x_msg_data
266             );
267         END IF;
268         x_return_status :=  FND_API.G_RET_STS_ERROR;
269     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
270         ROLLBACK TO UpdateFormFuncSP;
271         IF (x_msg_data IS NULL) THEN
272             FND_MSG_PUB.Count_And_Get
273             (      p_encoded   =>  FND_API.G_FALSE
274                ,   p_count     =>  x_msg_count
275                ,   p_data      =>  x_msg_data
276             );
277         END IF;
278         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
279     WHEN NO_DATA_FOUND THEN
280         ROLLBACK TO UpdateFormFuncSP;
281         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
282         IF (x_msg_data IS NOT NULL) THEN
283             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Update_Form_Func_Extension ';
284         ELSE
285             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Update_Form_Func_Extension ';
286         END IF;
287     WHEN OTHERS THEN
288         ROLLBACK TO UpdateFormFuncSP;
289         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
290         IF (x_msg_data IS NOT NULL) THEN
291             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Update_Form_Func_Extension ';
292         ELSE
293             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Update_Form_Func_Extension ';
294         END IF;
295 END Update_Form_Func_Extension;
296 
297 /*********************************************************************************************
298         FUNCTION Name :- Translate_Form_Func_Extension
299         PARAMETERS    :-
300             p_Form_Func_Extn_Rec :- The Details of form function sent from UI
301         DESCRIPTION   :- This basically updates the properties for form functions
302                          This can be called from UI directly also
303         AUTHOR        :- KRISHNA
304 *********************************************************************************************/
305 
306 PROCEDURE Translate_Form_Func_Extension(
307   p_Api_Version         IN          NUMBER
308  ,p_Commit              IN          VARCHAR2
309  ,p_Form_Func_Extn_Rec  IN          BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
310  ,x_Return_Status       OUT NOCOPY  VARCHAR2
311  ,x_Msg_Count           OUT NOCOPY  NUMBER
312  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
313 )IS
314     l_Commit                VARCHAR2(30);
315     l_Form_Func_Extn_Rec    BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type;
316     l_valid_func_ext_rec    BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type;
317 BEGIN
318     SAVEPOINT  TransalteFormFuncSP;
319     FND_MSG_PUB.Initialize;
320     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
321     IF( p_Commit IS NULL) THEN
322         l_Commit    := FND_API.G_FALSE;
323     ELSE
324         l_Commit := p_Commit;
325     END IF;
326     --dbms_output.put_line('calling validate from trans');
327 
328     --dbms_output.put_line('calling validate from trans after');
329     BIS_OBJECT_EXTENSIONS_PUB.Retrieve_Form_Func_Extension(
330         p_Form_Func_Extn_Rec  =>  p_Form_Func_Extn_Rec
331      ,  x_Form_Func_Extn_Rec  =>  l_Form_Func_Extn_Rec
332      ,  x_Return_Status       =>  x_Return_Status
333      ,  x_Msg_Count           =>  x_Msg_Count
334      ,  x_Msg_Data            =>  x_Msg_Data
335     );
336     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
337         RAISE  FND_API.G_EXC_ERROR;
338     END IF;
339 
340     IF ( p_Form_Func_Extn_Rec.Name IS NULL ) THEN
341       l_Form_Func_Extn_Rec.Name := NULL;
342     ELSIF ((p_Form_Func_Extn_Rec.Name <> BIS_COMMON_UTILS.G_DEF_CHAR)
343 		  AND ((l_Form_Func_Extn_Rec.Name IS NULL) OR (l_Form_Func_Extn_Rec.Name <> p_Form_Func_Extn_Rec.Name))) THEN
344       l_Form_Func_Extn_Rec.Name := p_Form_Func_Extn_Rec.Name;
345     END IF;
346 
347     IF ( p_Form_Func_Extn_Rec.Description IS NULL ) THEN
348       l_Form_Func_Extn_Rec.Description := NULL;
349     ELSIF ( (p_Form_Func_Extn_Rec.Description <>  BIS_COMMON_UTILS.G_DEF_CHAR)
350 	   AND ((l_Form_Func_Extn_Rec.Description IS NULL) OR (l_Form_Func_Extn_Rec.Description <> p_Form_Func_Extn_Rec.Description))) THEN
351       l_Form_Func_Extn_Rec.Description := p_Form_Func_Extn_Rec.Description;
352     END IF;
353 
354     IF(p_Form_Func_Extn_Rec.Last_Update_Date IS NULL) THEN
355         l_Form_Func_Extn_Rec.Last_Update_Date := SYSDATE;
356     ELSE
357         l_Form_Func_Extn_Rec.Last_Update_Date := p_Form_Func_Extn_Rec.Last_Update_Date;
358     END IF;
359 
360     IF (p_Form_Func_Extn_Rec.Last_Updated_By IS NULL) THEN
361       l_Form_Func_Extn_Rec.Last_Updated_By := FND_GLOBAL.USER_ID;
362     ELSE
363       l_Form_Func_Extn_Rec.Last_Updated_By := p_Form_Func_Extn_Rec.Last_Updated_By;
364     END IF;
365 
366     IF (p_Form_Func_Extn_Rec.Last_Update_Login IS NULL) THEN
367       l_Form_Func_Extn_Rec.Last_Update_Login := FND_GLOBAL.LOGIN_ID;
368     ELSE
369       l_Form_Func_Extn_Rec.Last_Update_Login := p_Form_Func_Extn_Rec.Last_Update_Login;
370     END IF;
371 
372     UPDATE BIS_FORM_FUNCTION_EXTENSION_TL
373     SET
374         NAME               = l_Form_Func_Extn_Rec.Name
375       , DESCRIPTION        = l_Form_Func_Extn_Rec.Description
376       , LAST_UPDATED_BY    = l_Form_Func_Extn_Rec.Last_Updated_By
377       , LAST_UPDATE_DATE   = l_Form_Func_Extn_Rec.Last_Update_Date
378       , LAST_UPDATE_LOGIN  = l_Form_Func_Extn_Rec.Last_Update_Login
379       , SOURCE_LANG        = USERENV('LANG')
380     WHERE OBJECT_NAME      = l_Form_Func_Extn_Rec.Object_Name
381     AND USERENV('LANG')      IN (LANGUAGE, SOURCE_LANG);
382 ----dbms_output.put_line('after updating    BIS_FORM_FUNCTION_EXTENSION_TL in tras');
383 
384     IF (l_Commit = FND_API.G_TRUE) THEN
385       COMMIT;
386     END IF;
387 EXCEPTION
388     WHEN FND_API.G_EXC_ERROR THEN
389         ROLLBACK TO TransalteFormFuncSP;
390         IF (x_msg_data IS NULL) THEN
391             FND_MSG_PUB.Count_And_Get
392             (      p_encoded   =>  FND_API.G_FALSE
393                ,   p_count     =>  x_msg_count
394                ,   p_data      =>  x_msg_data
395             );
396         END IF;
397         x_return_status :=  FND_API.G_RET_STS_ERROR;
398     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
399         ROLLBACK TO TransalteFormFuncSP;
400         IF (x_msg_data IS NULL) THEN
401             FND_MSG_PUB.Count_And_Get
402             (      p_encoded   =>  FND_API.G_FALSE
403                ,   p_count     =>  x_msg_count
404                ,   p_data      =>  x_msg_data
405             );
406         END IF;
407         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
408     WHEN NO_DATA_FOUND THEN
409         ROLLBACK TO TransalteFormFuncSP;
410         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
411         IF (x_msg_data IS NOT NULL) THEN
412             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Translate_Form_Func_Extension ';
413         ELSE
414             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Translate_Form_Func_Extension ';
415         END IF;
416     WHEN OTHERS THEN
417         ROLLBACK TO TransalteFormFuncSP;
418         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
419         IF (x_msg_data IS NOT NULL) THEN
420             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Translate_Form_Func_Extension ';
421         ELSE
422             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Translate_Form_Func_Extension ';
423         END IF;
424 END Translate_Form_Func_Extension;
425 
426 
427 /*********************************************************************************************
428         FUNCTION Name :- Retrieve_Form_Func_Extension
429         PARAMETERS    :-
430             p_Form_Func_Extn_Rec :- This record details sent from UI
431             x_Form_Func_Extn_Rec :- This record sends the details for form given form function to caller
432         DESCRIPTION   :- This retrieves the details of give form function name
433         AUTHOR        :- KRISHNA
434 *********************************************************************************************/
435 PROCEDURE Retrieve_Form_Func_Extension(
436     p_Form_Func_Extn_Rec      IN          BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
437  ,  x_Form_Func_Extn_Rec      OUT NOCOPY  BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
438  ,  x_Return_Status           OUT NOCOPY  VARCHAR2
439  ,  x_Msg_Count               OUT NOCOPY  NUMBER
440  ,  x_Msg_Data                OUT NOCOPY  VARCHAR2
441 )IS
442 
443 BEGIN
444     FND_MSG_PUB.Initialize;
445     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
446 
447 ----dbms_output.put_line('before retrieve');
448 
449     SELECT  F.OBJECT_TYPE
450            ,F.OBJECT_NAME
451            ,F.NAME
452            ,F.DESCRIPTION
453            ,F.APPLICATION_ID
454            ,F.FUNCTIONAL_AREA_ID
455            ,F.CREATED_BY
456            ,F.CREATION_DATE
457            ,F.LAST_UPDATED_BY
458            ,F.LAST_UPDATE_DATE
459            ,F.LAST_UPDATE_LOGIN
460     INTO    x_Form_Func_Extn_Rec.Object_Type
461            ,x_Form_Func_Extn_Rec.Object_Name
462            ,x_Form_Func_Extn_Rec.Name
463            ,x_Form_Func_Extn_Rec.Description
464            ,x_Form_Func_Extn_Rec.Application_Id
465            ,x_Form_Func_Extn_Rec.Func_Area_Id
466            ,x_Form_Func_Extn_Rec.Created_By
467            ,x_Form_Func_Extn_Rec.Creation_Date
468            ,x_Form_Func_Extn_Rec.Last_Updated_By
469            ,x_Form_Func_Extn_Rec.Last_Update_Date
470            ,x_Form_Func_Extn_Rec.Last_Update_Login
471     FROM   BIS_FORM_FUNCTION_EXTENSION_VL F
472     WHERE  F.OBJECT_NAME = trim(p_Form_Func_Extn_Rec.Object_Name);
473 ----dbms_output.put_line('after retrieve');
474 EXCEPTION
475     WHEN FND_API.G_EXC_ERROR THEN
476         IF (x_msg_data IS NULL) THEN
477             FND_MSG_PUB.Count_And_Get
478             (      p_encoded   =>  FND_API.G_FALSE
479                ,   p_count     =>  x_msg_count
480                ,   p_data      =>  x_msg_data
481             );
482         END IF;
483         x_return_status :=  FND_API.G_RET_STS_ERROR;
484     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
485         IF (x_msg_data IS NULL) THEN
486             FND_MSG_PUB.Count_And_Get
487             (      p_encoded   =>  FND_API.G_FALSE
488                ,   p_count     =>  x_msg_count
489                ,   p_data      =>  x_msg_data
490             );
491         END IF;
492         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
493     WHEN NO_DATA_FOUND THEN
494         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
495         IF (x_msg_data IS NOT NULL) THEN
496             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Form_Func_Extension ';
497         ELSE
498             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Form_Func_Extension ';
499         END IF;
500     WHEN OTHERS THEN
501         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
502         IF (x_msg_data IS NOT NULL) THEN
503             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Form_Func_Extension ';
504         ELSE
505             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Form_Func_Extension ';
506         END IF;
507 END Retrieve_Form_Func_Extension;
508 
509 /*********************************************************************************************
510         FUNCTION Name :- Retrieve_Form_Func_Extension
511         PARAMETERS    :-
512             p_Form_Func_Extn_Rec :- This record details sent from UI
513             DESCRIPTION   :- This delete the record in BIS_FORM_FUNCTION_EXTENSION table
514         AUTHOR        :- KRISHNA
515 *********************************************************************************************/
516 PROCEDURE Delete_Form_Func_Extension(
517     p_Api_Version         IN          NUMBER
518  ,  p_Commit              IN          VARCHAR2
519  ,  p_Form_Func_Extn_Rec  IN          BIS_OBJECT_EXTENSIONS_PUB.Form_Function_Extension_Type
520  ,  x_Return_Status       OUT NOCOPY  VARCHAR2
521  ,  x_Msg_Count           OUT NOCOPY  NUMBER
522  ,  x_Msg_Data            OUT NOCOPY  VARCHAR2
523 )IS
524 BEGIN
525     SAVEPOINT  DeleteFormFuncSP_Pvt;
526     FND_MSG_PUB.Initialize;
527     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
528     -- Delete from base table
529     DELETE FROM  BIS_FORM_FUNCTION_EXTENSION
530     WHERE  OBJECT_NAME =   TRIM(p_Form_Func_Extn_Rec.Object_Name);
531 
532     DELETE FROM  BIS_FORM_FUNCTION_EXTENSION_TL
533     WHERE  OBJECT_NAME =   TRIM(p_Form_Func_Extn_Rec.Object_Name);
534 
535     IF (p_Commit = FND_API.G_TRUE) THEN
536         COMMIT;
537     END IF;
538 
539 EXCEPTION
540     WHEN FND_API.G_EXC_ERROR THEN
541         ROLLBACK TO DeleteFormFuncSP_Pvt;
542         IF (x_msg_data IS NULL) THEN
543             FND_MSG_PUB.Count_And_Get
544             (      p_encoded   =>  FND_API.G_FALSE
545                ,   p_count     =>  x_msg_count
546                ,   p_data      =>  x_msg_data
547             );
548         END IF;
549         x_return_status :=  FND_API.G_RET_STS_ERROR;
550     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
551         ROLLBACK TO DeleteFormFuncSP_Pvt;
552         IF (x_msg_data IS NULL) THEN
553             FND_MSG_PUB.Count_And_Get
554             (      p_encoded   =>  FND_API.G_FALSE
555                ,   p_count     =>  x_msg_count
556                ,   p_data      =>  x_msg_data
557             );
558         END IF;
559         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
560     WHEN NO_DATA_FOUND THEN
561         ROLLBACK TO DeleteFormFuncSP_Pvt;
562         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
563         IF (x_msg_data IS NOT NULL) THEN
564             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Delete_Form_Func_Extension ';
565         ELSE
566             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Delete_Form_Func_Extension ';
567         END IF;
568     WHEN OTHERS THEN
569         ROLLBACK TO DeleteFormFuncSP_Pvt;
570         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
571         IF (x_msg_data IS NOT NULL) THEN
572             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Delete_Form_Func_Extension ';
573         ELSE
574             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Delete_Form_Func_Extension ';
575         END IF;
576 END Delete_Form_Func_Extension;
577 
578 
579 
580 PROCEDURE Create_Measure_Extension(
581   p_Api_Version         IN          NUMBER
582  ,p_Commit              IN          VARCHAR2
583  ,p_Meas_Extn_Rec       IN          BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
584  ,x_Return_Status       OUT NOCOPY  VARCHAR2
585  ,x_Msg_Count           OUT NOCOPY  NUMBER
586  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
587 ) IS
588     l_Count           NUMBER;
589     l_Meas_Extn_Rec   BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type;
590 BEGIN
591     SAVEPOINT CreateMeasExtnSP;
592     FND_MSG_PUB.Initialize;
593 
594     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
595     l_Meas_Extn_Rec := p_Meas_Extn_Rec;
596 
597     l_Count := 0;
598 
599     -- rpenneru bug#4153331
600     -- Create_Measures_Extension will be called from BISPMFLD.lct (Uploading Measures)
601     -- in the case Name and Description fields should be inserted as NULL values.
602     -- The value of the Name and Description from BISPMFLD.lct will be BIS_COMMON_UTILS.G_DEF_CHAR
603 
604     IF ( l_Meas_Extn_Rec.Name = BIS_COMMON_UTILS.G_DEF_CHAR ) THEN
605       l_Meas_Extn_Rec.Name := NULL;
606     END IF;
607 
608     IF ( l_Meas_Extn_Rec.Description =  BIS_COMMON_UTILS.G_DEF_CHAR) THEN
609       l_Meas_Extn_Rec.Description := NULL;
610     END IF;
611 
612 
613     INSERT INTO BIS_MEASURES_EXTENSION
614     (
615        MEASURE_SHORT_NAME
616       ,FUNCTIONAL_AREA_ID
617       ,CREATED_BY
618       ,CREATION_DATE
619       ,LAST_UPDATED_BY
620       ,LAST_UPDATE_DATE
621       ,LAST_UPDATE_LOGIN
622     )
623     VALUES
624     (
625        TRIM(l_Meas_Extn_Rec.Measure_Short_Name)
626       ,l_Meas_Extn_Rec.Functional_Area_Id
627       ,NVL(l_Meas_Extn_Rec.Created_By, FND_GLOBAL.USER_ID)
628       ,NVL(l_Meas_Extn_Rec.Last_Update_Date,SYSDATE)
629       ,NVL(l_Meas_Extn_Rec.Created_By, FND_GLOBAL.USER_ID)
630       ,NVL(l_Meas_Extn_Rec.Last_Update_Date,SYSDATE)
631       ,NVL(l_Meas_Extn_Rec.Last_Update_Login, FND_GLOBAL.LOGIN_ID)
632     );
633 
634     INSERT INTO BIS_MEASURES_EXTENSION_TL
635     (
636        MEASURE_SHORT_NAME
637       ,NAME
638       ,DESCRIPTION
639       ,LANGUAGE
640       ,SOURCE_LANG
641       ,CREATED_BY
642       ,CREATION_DATE
643       ,LAST_UPDATED_BY
644       ,LAST_UPDATE_DATE
645       ,LAST_UPDATE_LOGIN
646     )
647     SELECT
648        l_Meas_Extn_Rec.Measure_Short_Name
649       ,l_Meas_Extn_Rec.Name
650       ,l_Meas_Extn_Rec.Description
651       ,L.LANGUAGE_CODE
652       ,USERENV('LANG')
653       ,NVL(l_Meas_Extn_Rec.Created_By, FND_GLOBAL.USER_ID)
654       ,NVL(l_Meas_Extn_Rec.Last_Update_Date,SYSDATE)
655       ,NVL(l_Meas_Extn_Rec.Created_By, FND_GLOBAL.USER_ID)
656       ,NVL(l_Meas_Extn_Rec.Last_Update_Date,SYSDATE)
657       ,NVL(l_Meas_Extn_Rec.Last_Update_Login, FND_GLOBAL.LOGIN_ID)
658     FROM FND_LANGUAGES L
659     WHERE L.INSTALLED_FLAG IN ('I', 'B')
660     AND NOT EXISTS
661         (
662           SELECT NULL
663           FROM   BIS_MEASURES_EXTENSION_TL T
664           WHERE  T.MEASURE_SHORT_NAME = l_Meas_Extn_Rec.Measure_Short_Name
665           AND    T.LANGUAGE           = L.LANGUAGE_CODE
666         );
667   -- Commit if required
668   IF (p_Commit = FND_API.G_TRUE) THEN
669     COMMIT;
670   END IF;
671 
672 EXCEPTION
673     WHEN FND_API.G_EXC_ERROR THEN
674         ROLLBACK TO CreateMeasExtnSP;
675         IF (x_msg_data IS NULL) THEN
676             FND_MSG_PUB.Count_And_Get
677             (      p_encoded   =>  FND_API.G_FALSE
678                ,   p_count     =>  x_msg_count
679                ,   p_data      =>  x_msg_data
680             );
681         END IF;
682         x_return_status :=  FND_API.G_RET_STS_ERROR;
683     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
684         ROLLBACK TO CreateMeasExtnSP;
685         IF (x_msg_data IS NULL) THEN
686             FND_MSG_PUB.Count_And_Get
687             (      p_encoded   =>  FND_API.G_FALSE
688                ,   p_count     =>  x_msg_count
689                ,   p_data      =>  x_msg_data
690             );
691         END IF;
692         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
693     WHEN NO_DATA_FOUND THEN
694         ROLLBACK TO CreateMeasExtnSP;
695         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
696         IF (x_msg_data IS NOT NULL) THEN
697             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Create_Measure_Extension ';
698         ELSE
699             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Create_Measure_Extension ';
700         END IF;
701     WHEN OTHERS THEN
702         ROLLBACK TO CreateMeasExtnSP;
703         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
704         IF (x_msg_data IS NOT NULL) THEN
705             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Create_Measure_Extension ';
706         ELSE
707             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Create_Measure_Extension ';
708         END IF;
709 
710 END Create_Measure_Extension;
711 
712 
713 PROCEDURE Retrieve_Measure_Extension(
714   p_Meas_Extn_Rec       IN          BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
715  ,x_Meas_Extn_Rec       OUT NOCOPY  BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
716  ,x_Return_Status       OUT NOCOPY  VARCHAR2
717  ,x_Msg_Count           OUT NOCOPY  NUMBER
718  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
719 ) IS
720 
721     l_Flag  BOOLEAN;
722 
723     CURSOR cMeasurExtension IS
724      SELECT  B.MEASURE_SHORT_NAME
725             ,B.NAME
726             ,B.DESCRIPTION
727             ,B.FUNCTIONAL_AREA_ID
728             ,B.CREATED_BY
729             ,B.CREATION_DATE
730             ,B.LAST_UPDATED_BY
731             ,B.LAST_UPDATE_DATE
732             ,B.LAST_UPDATE_LOGIN
733      FROM   BIS_MEASURES_EXTENSION_VL B
734      WHERE  B.MEASURE_SHORT_NAME = TRIM(p_Meas_Extn_Rec.Measure_Short_Name);
735 
736 BEGIN
737     FND_MSG_PUB.Initialize;
738     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
739 
740     l_Flag := FALSE;
741 
742     FOR cME IN cMeasurExtension LOOP
743         x_Meas_Extn_Rec.Measure_Short_Name := cME.MEASURE_SHORT_NAME;
744         x_Meas_Extn_Rec.Name               := cME.NAME;
745         x_Meas_Extn_Rec.Description        := cME.DESCRIPTION;
746         x_Meas_Extn_Rec.Functional_Area_Id := cME.FUNCTIONAL_AREA_ID;
747         x_Meas_Extn_Rec.Created_By         := cME.CREATED_BY;
748         x_Meas_Extn_Rec.Creation_Date      := cME.CREATION_DATE;
749         x_Meas_Extn_Rec.Last_Updated_By    := cME.LAST_UPDATED_BY;
750         x_Meas_Extn_Rec.Last_Update_Date   := cME.LAST_UPDATE_DATE;
751         x_Meas_Extn_Rec.Last_Update_Login  := cME.LAST_UPDATE_LOGIN;
752         l_Flag := TRUE;
753     END LOOP;
754 
755     IF(l_Flag = FALSE) THEN
756         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
757     END IF;
758 
759 EXCEPTION
760     WHEN FND_API.G_EXC_ERROR THEN
761         IF (x_msg_data IS NULL) THEN
762             FND_MSG_PUB.Count_And_Get
763             (      p_encoded   =>  FND_API.G_FALSE
764                ,   p_count     =>  x_msg_count
765                ,   p_data      =>  x_msg_data
766             );
767         END IF;
768         x_return_status :=  FND_API.G_RET_STS_ERROR;
769     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
770         IF (x_msg_data IS NULL) THEN
771             FND_MSG_PUB.Count_And_Get
772             (      p_encoded   =>  FND_API.G_FALSE
773                ,   p_count     =>  x_msg_count
774                ,   p_data      =>  x_msg_data
775             );
776         END IF;
777         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
778     WHEN NO_DATA_FOUND THEN
779         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
780         IF (x_msg_data IS NOT NULL) THEN
781             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension ';
782         ELSE
783             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension ';
784         END IF;
785     WHEN OTHERS THEN
786         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
787         IF (x_msg_data IS NOT NULL) THEN
788             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension ';
789         ELSE
790             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension ';
791         END IF;
792 END Retrieve_Measure_Extension;
793 
794 PROCEDURE Translate_Measure_Extension(
795   p_Api_Version         IN          NUMBER
796  ,p_Commit              IN          VARCHAR2
797  ,p_Meas_Extn_Rec       IN          BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
798  ,x_Return_Status       OUT NOCOPY  VARCHAR2
799  ,x_Msg_Count           OUT NOCOPY  NUMBER
800  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
801 ) IS
802     l_Meas_Extn_Rec   BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type;
803 BEGIN
804 
805     SAVEPOINT TranslateMeasExtnSP;
806     FND_MSG_PUB.Initialize;
807 
808     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
809 
810   ------dbms_output.put_line ('l_Meas_Extn_Rec.Measure_Short_Name - ' || l_Meas_Extn_Rec.Measure_Short_Name);
811 
812 
813     BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension(
814       p_Meas_Extn_Rec  => p_Meas_Extn_Rec
815      ,x_Meas_Extn_Rec  => l_Meas_Extn_Rec
816      ,x_Return_Status  => x_Return_Status
817      ,x_Msg_Count      => x_Msg_Count
818      ,x_Msg_Data       => x_Msg_Data
819     );
820     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
821         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
822     END IF;
823 
824     -- rpenneru bug#4153331
825     -- Translate_Measures_Extension will be called from BISPMFLD.lct (Uploading Measures)
826     -- in the case Name and Description fields should not be updated.
827     -- The value of the Name and Description from BISPMFLD.lct will be BIS_COMMON_UTILS.G_DEF_CHAR
828     IF ( p_Meas_Extn_Rec.Name IS NULL ) THEN
829       l_Meas_Extn_Rec.Name := NULL;
830     ELSIF ((p_Meas_Extn_Rec.Name <> BIS_COMMON_UTILS.G_DEF_CHAR)
831 		  AND ((l_Meas_Extn_Rec.Name IS NULL) OR (l_Meas_Extn_Rec.Name <> p_Meas_Extn_Rec.Name))) THEN
832       l_Meas_Extn_Rec.Name := p_Meas_Extn_Rec.Name;
833     END IF;
834 
835     IF ( p_Meas_Extn_Rec.Description IS NULL ) THEN
836       l_Meas_Extn_Rec.Description := NULL;
837     ELSIF ( (p_Meas_Extn_Rec.Description <>  BIS_COMMON_UTILS.G_DEF_CHAR)
838 	   AND ((l_Meas_Extn_Rec.Description IS NULL) OR (l_Meas_Extn_Rec.Description <> p_Meas_Extn_Rec.Description))) THEN
839       l_Meas_Extn_Rec.Description := p_Meas_Extn_Rec.Description;
840     END IF;
841 
842     IF(p_Meas_Extn_Rec.Last_Update_Date IS NULL ) THEN
843         l_Meas_Extn_Rec.Last_Update_Date := SYSDATE;
844     ELSE
845         l_Meas_Extn_Rec.Last_Update_Date := p_Meas_Extn_Rec.Last_Update_Date;
846     END IF;
847 
848     IF (p_Meas_Extn_Rec.Last_Updated_By IS NULL) THEN
849       l_Meas_Extn_Rec.Last_Updated_By := FND_GLOBAL.USER_ID;
850     ELSE
851       l_Meas_Extn_Rec.Last_Updated_By := p_Meas_Extn_Rec.Last_Updated_By;
852     END IF;
853 
854     IF (p_Meas_Extn_Rec.Last_Update_Login IS NULL) THEN
855       l_Meas_Extn_Rec.Last_Update_Login := FND_GLOBAL.LOGIN_ID;
856     ELSE
857       l_Meas_Extn_Rec.Last_Update_Login := p_Meas_Extn_Rec.Last_Update_Login;
858     END IF;
859 
860     -- Update the trans table
861     UPDATE BIS_MEASURES_EXTENSION_TL B
862     SET
863         B.NAME               = l_Meas_Extn_Rec.Name
864       , B.DESCRIPTION        = l_Meas_Extn_Rec.Description
865       , B.LAST_UPDATED_BY    = l_Meas_Extn_Rec.Last_Updated_By
866       , B.LAST_UPDATE_DATE   = l_Meas_Extn_Rec.Last_Update_Date
867       , B.LAST_UPDATE_LOGIN  = l_Meas_Extn_Rec.Last_Update_Login
868       , B.SOURCE_LANG        = USERENV('LANG')
869     WHERE
870         B.MEASURE_SHORT_NAME = l_Meas_Extn_Rec.Measure_Short_Name
871     AND USERENV('LANG')    IN (B.LANGUAGE, B.SOURCE_LANG);
872 
873     -- Commit if required
874     IF (p_Commit = FND_API.G_TRUE) THEN
875       COMMIT;
876     END IF;
877 
878 EXCEPTION
879     WHEN FND_API.G_EXC_ERROR THEN
880         ROLLBACK TO TranslateMeasExtnSP;
881         IF (x_msg_data IS NULL) THEN
882             FND_MSG_PUB.Count_And_Get
883             (      p_encoded   =>  FND_API.G_FALSE
884                ,   p_count     =>  x_msg_count
885                ,   p_data      =>  x_msg_data
886             );
887         END IF;
888         x_return_status :=  FND_API.G_RET_STS_ERROR;
889     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
890         ROLLBACK TO TranslateMeasExtnSP;
891         IF (x_msg_data IS NULL) THEN
892             FND_MSG_PUB.Count_And_Get
893             (      p_encoded   =>  FND_API.G_FALSE
894                ,   p_count     =>  x_msg_count
895                ,   p_data      =>  x_msg_data
896             );
897         END IF;
898         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
899     WHEN NO_DATA_FOUND THEN
900         ROLLBACK TO TranslateMeasExtnSP;
901         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
902         IF (x_msg_data IS NOT NULL) THEN
903             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Translate_Measure_Extension ';
904         ELSE
905             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Translate_Measure_Extension ';
906         END IF;
907     WHEN OTHERS THEN
908         ROLLBACK TO TranslateMeasExtnSP;
909         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
910         IF (x_msg_data IS NOT NULL) THEN
911             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Translate_Measure_Extension ';
912         ELSE
913             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Translate_Measure_Extension ';
914         END IF;
915 
916 END Translate_Measure_Extension;
917 
918 -- Update the Measure Extensions
919 PROCEDURE Update_Measure_Extension(
920   p_Api_Version         IN          NUMBER
921  ,p_Commit              IN          VARCHAR2
922  ,p_Meas_Extn_Rec       IN          BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
923  ,x_Return_Status       OUT NOCOPY  VARCHAR2
924  ,x_Msg_Count           OUT NOCOPY  NUMBER
925  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
926 ) IS
927     l_Meas_Extn_Rec   BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type;
928 
929 BEGIN
930     SAVEPOINT UpdateMeasExtnSP;
931     FND_MSG_PUB.Initialize;
932 
933     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
934 
935     -- Since there is no base table, a direct transalation
936     -- should suffice.
937 
938     BIS_OBJECT_EXTENSIONS_PVT.Retrieve_Measure_Extension(
939       p_Meas_Extn_Rec  => p_Meas_Extn_Rec
940      ,x_Meas_Extn_Rec  => l_Meas_Extn_Rec
941      ,x_Return_Status  => x_Return_Status
942      ,x_Msg_Count      => x_Msg_Count
943      ,x_Msg_Data       => x_Msg_Data
944     );
945     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
946         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
947     END IF;
948 
949     IF((p_Meas_Extn_Rec.Functional_Area_Id  IS NOT NULL)
950            AND (p_Meas_Extn_Rec.Functional_Area_Id <> l_Meas_Extn_Rec.Functional_Area_Id)) THEN
951         l_Meas_Extn_Rec.Functional_Area_Id:= p_Meas_Extn_Rec.Functional_Area_Id;
952     END IF;
953 
954 
955     IF(p_Meas_Extn_Rec.Last_Update_Date IS NULL ) THEN
956         l_Meas_Extn_Rec.Last_Update_Date := SYSDATE;
957     ELSE
958         l_Meas_Extn_Rec.Last_Update_Date := p_Meas_Extn_Rec.Last_Update_Date;
959     END IF;
960 
961     IF (p_Meas_Extn_Rec.Last_Updated_By IS NULL) THEN
962       l_Meas_Extn_Rec.Last_Updated_By := FND_GLOBAL.USER_ID;
963     ELSE
964       l_Meas_Extn_Rec.Last_Updated_By := p_Meas_Extn_Rec.Last_Updated_By;
965     END IF;
966 
967     IF (p_Meas_Extn_Rec.Last_Update_Login IS NULL) THEN
968       l_Meas_Extn_Rec.Last_Update_Login := FND_GLOBAL.LOGIN_ID;
969     ELSE
970       l_Meas_Extn_Rec.Last_Update_Login := p_Meas_Extn_Rec.Last_Update_Login;
971     END IF;
972 
973     UPDATE BIS_MEASURES_EXTENSION
974     SET
975         FUNCTIONAL_AREA_ID = l_Meas_Extn_Rec.Functional_Area_Id
976       , LAST_UPDATED_BY    = l_Meas_Extn_Rec.Last_Updated_By
977       , LAST_UPDATE_DATE   = l_Meas_Extn_Rec.Last_Update_Date
978       , LAST_UPDATE_LOGIN  = l_Meas_Extn_Rec.Last_Update_Login
979     WHERE
980         MEASURE_SHORT_NAME = l_Meas_Extn_Rec.Measure_Short_Name;
981 
982     BIS_OBJECT_EXTENSIONS_PVT.Translate_Measure_Extension(
983       p_Api_Version     => p_Api_Version
984      ,p_Commit          => p_Commit
985      ,p_Meas_Extn_Rec   => p_Meas_Extn_Rec
986      ,x_Return_Status   => x_Return_Status
987      ,x_Msg_Count       => x_Msg_Count
988      ,x_Msg_Data        => x_Msg_Data
989     );
990     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
991         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
992     END IF;
993     -- Commit if required
994     IF (p_Commit = FND_API.G_TRUE) THEN
995       COMMIT;
996     END IF;
997 
998 EXCEPTION
999     WHEN FND_API.G_EXC_ERROR THEN
1000         ROLLBACK TO UpdateMeasExtnSP;
1001         IF (x_msg_data IS NULL) THEN
1002             FND_MSG_PUB.Count_And_Get
1003             (      p_encoded   =>  FND_API.G_FALSE
1004                ,   p_count     =>  x_msg_count
1005                ,   p_data      =>  x_msg_data
1006             );
1007         END IF;
1008         x_return_status :=  FND_API.G_RET_STS_ERROR;
1009     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1010         ROLLBACK TO UpdateMeasExtnSP;
1011         IF (x_msg_data IS NULL) THEN
1012             FND_MSG_PUB.Count_And_Get
1013             (      p_encoded   =>  FND_API.G_FALSE
1014                ,   p_count     =>  x_msg_count
1015                ,   p_data      =>  x_msg_data
1016             );
1017         END IF;
1018         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1019     WHEN NO_DATA_FOUND THEN
1020         ROLLBACK TO UpdateMeasExtnSP;
1021         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1022         IF (x_msg_data IS NOT NULL) THEN
1023             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Update_Measure_Extension ';
1024         ELSE
1025             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Update_Measure_Extension ';
1026         END IF;
1027     WHEN OTHERS THEN
1028         ROLLBACK TO UpdateMeasExtnSP;
1029         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1030         IF (x_msg_data IS NOT NULL) THEN
1031             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Update_Measure_Extension ';
1032         ELSE
1033             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Update_Measure_Extension ';
1034         END IF;
1035 END Update_Measure_Extension;
1036 /*********************************************************************************************
1037         FUNCTION Name :- Retrieve_Form_Func_Extension
1038         PARAMETERS    :-
1039             p_Meas_Extn_Rec :- This record details sent from UI
1040             DESCRIPTION   :- This delete the record in BIS_MEASURES_EXTENSION table
1041         AUTHOR        :- KRISHNA
1042 *********************************************************************************************/
1043 PROCEDURE Delete_Measure_Extension(
1044   p_Api_Version         IN          NUMBER
1045  ,p_Commit              IN          VARCHAR2
1046  ,p_Meas_Extn_Rec       IN          BIS_OBJECT_EXTENSIONS_PUB.Measure_Extension_Type
1047  ,x_Return_Status       OUT NOCOPY  VARCHAR2
1048  ,x_Msg_Count           OUT NOCOPY  NUMBER
1049  ,x_Msg_Data            OUT NOCOPY  VARCHAR2
1050 ) IS
1051 
1052 BEGIN
1053     SAVEPOINT DeleteMeasExtnSP;
1054     FND_MSG_PUB.Initialize;
1055     x_Return_Status := FND_API.G_RET_STS_SUCCESS;
1056 
1057     DELETE FROM BIS_MEASURES_EXTENSION
1058     WHERE MEASURE_SHORT_NAME = TRIM(p_Meas_Extn_Rec.Measure_Short_Name);
1059 
1060     DELETE FROM BIS_MEASURES_EXTENSION_TL
1061     WHERE MEASURE_SHORT_NAME = TRIM(p_Meas_Extn_Rec.Measure_Short_Name);
1062 
1063 
1064   -- Commit if required
1065     IF (p_Commit = FND_API.G_TRUE) THEN
1066         COMMIT;
1067     END IF;
1068 
1069 EXCEPTION
1070     WHEN FND_API.G_EXC_ERROR THEN
1071         ROLLBACK TO DeleteMeasExtnSP;
1072         IF (x_msg_data IS NULL) THEN
1073             FND_MSG_PUB.Count_And_Get
1074             (      p_encoded   =>  FND_API.G_FALSE
1075                ,   p_count     =>  x_msg_count
1076                ,   p_data      =>  x_msg_data
1077             );
1078         END IF;
1079         x_return_status :=  FND_API.G_RET_STS_ERROR;
1080     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1081         ROLLBACK TO DeleteMeasExtnSP;
1082         IF (x_msg_data IS NULL) THEN
1083             FND_MSG_PUB.Count_And_Get
1084             (      p_encoded   =>  FND_API.G_FALSE
1085                ,   p_count     =>  x_msg_count
1086                ,   p_data      =>  x_msg_data
1087             );
1088         END IF;
1089         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1090     WHEN NO_DATA_FOUND THEN
1091         ROLLBACK TO DeleteMeasExtnSP;
1092         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1093         IF (x_msg_data IS NOT NULL) THEN
1094             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Delete_Measure_Extension ';
1095         ELSE
1096             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Delete_Measure_Extension ';
1097         END IF;
1098     WHEN OTHERS THEN
1099         ROLLBACK TO DeleteMeasExtnSP;
1100         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1101         IF (x_msg_data IS NOT NULL) THEN
1102             x_msg_data      :=  x_msg_data||' -> BIS_OBJECT_EXTENSIONS_PVT.Delete_Measure_Extension ';
1103         ELSE
1104             x_msg_data      :=  SQLERRM||' at BIS_OBJECT_EXTENSIONS_PVT.Delete_Measure_Extension ';
1105         END IF;
1106 
1107 END Delete_Measure_Extension;
1108 
1109 -- Get the Functional Area ID from Functional Short_Name
1110 FUNCTION Get_FA_Id_By_Short_Name (
1111   p_Functional_Area_Short_Name IN VARCHAR2
1112 )RETURN NUMBER IS
1113   l_FA_Id   NUMBER;
1114 BEGIN
1115   SELECT FUNCTIONAL_AREA_ID
1116   INTO   l_FA_Id
1117   FROM   BIS_FUNCTIONAL_AREAS
1118   WHERE  UPPER(SHORT_NAME) = UPPER(Trim(p_Functional_Area_Short_Name));
1119 
1120   RETURN l_FA_Id;
1121 
1122 EXCEPTION
1123   WHEN OTHERS THEN
1124      RETURN BIS_OBJECT_EXTENSIONS_PUB.C_INVALID;
1125 END Get_FA_Id_By_Short_Name;
1126 
1127 -- procedure to add a language.
1128 PROCEDURE Add_Language IS
1129 BEGIN
1130 
1131 
1132     -- Add language for the BIS_MEASURES_EXTENSION_TL
1133    BEGIN
1134         DELETE FROM BIS_MEASURES_EXTENSION_TL T
1135         WHERE NOT EXISTS
1136         (
1137           SELECT NULL
1138           FROM   BIS_MEASURES_EXTENSION B
1139           WHERE  B.MEASURE_SHORT_NAME = T.MEASURE_SHORT_NAME
1140         );
1141 
1142         UPDATE BIS_MEASURES_EXTENSION_TL T SET (
1143             NAME,
1144             DESCRIPTION
1145         ) = (SELECT
1146                 B.NAME,
1147                 B.DESCRIPTION
1148              FROM  BIS_MEASURES_EXTENSION_TL B
1149              WHERE B.MEASURE_SHORT_NAME = T.MEASURE_SHORT_NAME
1150              AND   B.LANGUAGE           = T.SOURCE_LANG)
1151              WHERE (
1152                 T.MEASURE_SHORT_NAME,
1153                 T.LANGUAGE
1154              ) IN (SELECT
1155                     SUBT.MEASURE_SHORT_NAME,
1156                     SUBT.LANGUAGE
1157                     FROM  BIS_MEASURES_EXTENSION_TL SUBB, BIS_MEASURES_EXTENSION_TL SUBT
1158                     WHERE SUBB.MEASURE_SHORT_NAME = SUBT.MEASURE_SHORT_NAME
1159                     AND   SUBB.LANGUAGE           = SUBT.SOURCE_LANG
1160                     AND (
1161                          SUBB.NAME              <> SUBT.NAME
1162                          OR SUBB.DESCRIPTION    <> SUBT.DESCRIPTION
1163                         )
1164                     );
1165 
1166         INSERT INTO BIS_MEASURES_EXTENSION_TL
1167         (
1168            MEASURE_SHORT_NAME
1169           ,NAME
1170           ,DESCRIPTION
1171           ,LANGUAGE
1172           ,SOURCE_LANG
1173           ,CREATED_BY
1174           ,CREATION_DATE
1175           ,LAST_UPDATED_BY
1176           ,LAST_UPDATE_DATE
1177           ,LAST_UPDATE_LOGIN
1178         )
1179         SELECT
1180             B.MEASURE_SHORT_NAME
1181           , B.NAME
1182           , B.DESCRIPTION
1183           , L.LANGUAGE_CODE
1184           , B.SOURCE_LANG
1185           , B.CREATED_BY
1186           , B.CREATION_DATE
1187           , B.LAST_UPDATED_BY
1188           , B.LAST_UPDATE_DATE
1189           , B.LAST_UPDATE_LOGIN
1190        FROM  BIS_MEASURES_EXTENSION_TL B, FND_LANGUAGES L
1191        WHERE L.INSTALLED_FLAG IN ('I', 'B')
1192        AND   B.LANGUAGE = USERENV('LANG')
1193        AND   NOT EXISTS
1194             (
1195               SELECT NULL
1196               FROM   BIS_MEASURES_EXTENSION_TL T
1197               WHERE  UPPER(T.MEASURE_SHORT_NAME) = UPPER(B.MEASURE_SHORT_NAME)
1198               AND    T.LANGUAGE           = L.LANGUAGE_CODE
1199             );
1200    EXCEPTION
1201       WHEN OTHERS THEN
1202          NULL;
1203    END;
1204 
1205     -- Add language for the BIS_MEASURES_EXTENSION_TL
1206 
1207    BEGIN
1208         DELETE FROM BIS_FORM_FUNCTION_EXTENSION_TL T
1209         WHERE NOT EXISTS
1210         (
1211           SELECT NULL
1212           FROM   BIS_FORM_FUNCTION_EXTENSION B
1213           WHERE  B.OBJECT_NAME = T.OBJECT_NAME
1214         );
1215 
1216         UPDATE BIS_FORM_FUNCTION_EXTENSION_TL T SET (
1217             NAME,
1218             DESCRIPTION
1219         ) = (SELECT
1220                 B.NAME,
1221                 B.DESCRIPTION
1222              FROM  BIS_FORM_FUNCTION_EXTENSION_TL B
1223              WHERE B.OBJECT_NAME  = T.OBJECT_NAME
1224              AND   B.LANGUAGE     = T.SOURCE_LANG)
1225              WHERE (
1226                 T.OBJECT_NAME,
1227                 T.LANGUAGE
1228              ) IN (SELECT
1229                     SUBT.OBJECT_NAME,
1230                     SUBT.LANGUAGE
1231                     FROM  BIS_FORM_FUNCTION_EXTENSION_TL SUBB, BIS_FORM_FUNCTION_EXTENSION_TL SUBT
1232                     WHERE SUBB.OBJECT_NAME = SUBT.OBJECT_NAME
1233                     AND   SUBB.LANGUAGE    = SUBT.SOURCE_LANG
1234                     AND (
1235                          SUBB.NAME              <> SUBT.NAME
1236                          OR SUBB.DESCRIPTION    <> SUBT.DESCRIPTION
1237                         )
1238                     );
1239 
1240         INSERT INTO BIS_FORM_FUNCTION_EXTENSION_TL
1241         (
1242            OBJECT_NAME
1243           ,NAME
1244           ,DESCRIPTION
1245           ,LANGUAGE
1246           ,SOURCE_LANG
1247           ,CREATED_BY
1248           ,CREATION_DATE
1249           ,LAST_UPDATED_BY
1250           ,LAST_UPDATE_DATE
1251           ,LAST_UPDATE_LOGIN
1252         )
1253         SELECT
1254             B.OBJECT_NAME
1255           , B.NAME
1256           , B.DESCRIPTION
1257           , L.LANGUAGE_CODE
1258           , B.SOURCE_LANG
1259           , B.CREATED_BY
1260           , B.CREATION_DATE
1261           , B.LAST_UPDATED_BY
1262           , B.LAST_UPDATE_DATE
1263           , B.LAST_UPDATE_LOGIN
1264        FROM  BIS_FORM_FUNCTION_EXTENSION_TL B, FND_LANGUAGES L
1265        WHERE L.INSTALLED_FLAG IN ('I', 'B')
1266        AND   B.LANGUAGE = USERENV('LANG')
1267        AND   NOT EXISTS
1268             (
1269               SELECT NULL
1270               FROM   BIS_FORM_FUNCTION_EXTENSION_TL T
1271               WHERE  T.OBJECT_NAME = B.OBJECT_NAME
1272               AND    T.LANGUAGE    = L.LANGUAGE_CODE
1273             );
1274    EXCEPTION
1275       WHEN OTHERS THEN
1276          NULL;
1277    END;
1278 END Add_Language;
1279 
1280 END BIS_OBJECT_EXTENSIONS_PVT;