[Home] [Help]
PACKAGE BODY: APPS.CSC_PROF_TABLE_COLUMNS_PKG
Source
1 PACKAGE BODY CSC_PROF_TABLE_COLUMNS_PKG as
2 /* $Header: csctptcb.pls 120.2 2005/09/18 23:33:50 vshastry noship $ */
3 -- Start of Comments
4 -- Package name : CSC_PROF_TABLE_COLUMNS_PKG
5 -- Purpose :
6 -- History : 25-Nov-02 JAmose Fnd_Api_G_MISS*,NOCOPY related changes
7 -- History : 24-Feb-2003, Introduced new procedure delete_existing_row to
8 -- delete before loading a row
9 -- 19-09-2005 vshastry Bug 4596220. Added condition in insert row
10 -- NOTE :
11 -- End of Comments
12
13
14 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSC_PROF_TABLE_COLUMNS_PKG';
15 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csctuvab.pls';
16
17 PROCEDURE Insert_Row(
18 px_TABLE_COLUMN_ID IN OUT NOCOPY NUMBER,
19 p_BLOCK_ID NUMBER,
20 p_TABLE_NAME VARCHAR2,
21 p_COLUMN_NAME VARCHAR2,
22 p_LABEL VARCHAR2,
23 p_TABLE_ALIAS VARCHAR2,
24 p_COLUMN_SEQUENCE NUMBER,
25 p_DRILLDOWN_COLUMN_FLAG VARCHAR2,
26 p_LAST_UPDATE_DATE DATE,
27 p_LAST_UPDATED_BY NUMBER,
28 p_CREATION_DATE DATE,
29 p_CREATED_BY NUMBER,
30 p_LAST_UPDATE_LOGIN NUMBER,
31 p_SEEDED_FLAG VARCHAR2,
32 x_OBJECT_VERSION_NUMBER OUT NOCOPY NUMBER)
33
34 IS
35 CURSOR C2 IS SELECT CSC_PROF_TABLE_COLUMNS_S.nextval FROM sys.dual;
36 l_object_version_number NUMBER := 1;
37 ps_SEEDED_FLAG Varchar2(3);
38 BEGIN
39
40 /* added the below 2 lines for bug 4596220 */
41 ps_seeded_flag := p_seeded_flag;
42 IF NVL(p_seeded_flag, 'N') <> 'Y' THEN
43
44 /* Added This If Condition for Bug 1944040*/
45 If p_Created_by=1 then
46 ps_seeded_flag:='Y';
47 Else
48 ps_seeded_flag:='N';
49 End If;
50 END IF;
51
52 If (px_TABLE_COLUMN_ID IS NULL) OR (px_TABLE_COLUMN_ID = CSC_CORE_UTILS_PVT.G_MISS_NUM) then
53 OPEN C2;
54 FETCH C2 INTO px_TABLE_COLUMN_ID;
55 CLOSE C2;
56 End If;
57 INSERT INTO CSC_PROF_TABLE_COLUMNS_B(
58 TABLE_COLUMN_ID,
59 BLOCK_ID,
60 TABLE_NAME,
61 COLUMN_NAME,
62 ALIAS_NAME,
63 COLUMN_SEQUENCE,
64 DRILLDOWN_COLUMN_FLAG,
65 LAST_UPDATE_DATE,
66 LAST_UPDATED_BY,
67 CREATION_DATE,
68 CREATED_BY,
69 LAST_UPDATE_LOGIN,
70 SEEDED_FLAG,
71 OBJECT_VERSION_NUMBER
72 ) VALUES (
73 px_TABLE_COLUMN_ID,
74 decode( p_BLOCK_ID, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_BLOCK_ID),
75 decode( p_TABLE_NAME, CSC_CORE_UTILS_PVT.G_MISS_CHAR, NULL, p_TABLE_NAME),
76 decode( p_COLUMN_NAME, CSC_CORE_UTILS_PVT.G_MISS_CHAR, NULL, p_COLUMN_NAME),
77 decode( p_TABLE_ALIAS, CSC_CORE_UTILS_PVT.G_MISS_CHAR,NULL,p_TABLE_ALIAS),
78 decode( p_COLUMN_SEQUENCE,CSC_CORE_UTILS_PVT.G_MISS_NUM,NULL,p_COLUMN_SEQUENCE),
79 decode( p_DRILLDOWN_COLUMN_FLAG,CSC_CORE_UTILS_PVT.G_MISS_CHAR,NULL,p_DRILLDOWN_COLUMN_FLAG),
80 decode( p_LAST_UPDATE_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, NULL, p_LAST_UPDATE_DATE),
81 decode( p_LAST_UPDATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_LAST_UPDATED_BY),
82 decode( p_CREATION_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, NULL, p_CREATION_DATE),
83 decode( p_CREATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_CREATED_BY),
84 decode( p_LAST_UPDATE_LOGIN, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_LAST_UPDATE_LOGIN),
85 decode( p_SEEDED_FLAG, CSC_CORE_UTILS_PVT.G_MISS_CHAR,NULL,ps_SEEDED_FLAG),
86 l_OBJECT_VERSION_NUMBER);
87
88 -- assign out parameters
89 x_object_version_number := l_object_version_number;
90
91 INSERT INTO CSC_PROF_TABLE_COLUMNS_TL(
92 TABLE_COLUMN_ID,
93 LABEL,
94 CREATED_BY,
95 CREATION_DATE,
96 LAST_UPDATED_BY,
97 LAST_UPDATE_DATE,
98 LAST_UPDATE_LOGIN,
99 LANGUAGE,
100 SOURCE_LANG
101 ) select
102 px_TABLE_COLUMN_ID,
103 decode( p_LABEL, CSC_CORE_UTILS_PVT.G_MISS_CHAR, NULL, p_LABEL),
104 decode( p_CREATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_CREATED_BY),
105 decode( p_CREATION_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, NULL, p_CREATION_DATE),
106 decode( p_LAST_UPDATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_LAST_UPDATED_BY),
107 decode( p_LAST_UPDATE_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, NULL, p_LAST_UPDATE_DATE),
108 decode( p_LAST_UPDATE_LOGIN, CSC_CORE_UTILS_PVT.G_MISS_NUM, NULL, p_LAST_UPDATE_LOGIN),
109 L.LANGUAGE_CODE,
110 userenv('LANG')
111 from FND_LANGUAGES L
112 where L.INSTALLED_FLAG in ('I', 'B')
113 and not exists
114 (select NULL
115 from CSC_PROF_TABLE_COLUMNS_TL T
116 where T.TABLE_COLUMN_ID = Px_TABLE_COLUMN_ID
117 and T.LANGUAGE = L.LANGUAGE_CODE);
118
119
120 End Insert_Row;
121
122 PROCEDURE Update_Row(
123 p_TABLE_COLUMN_ID NUMBER,
124 p_BLOCK_ID NUMBER,
125 p_TABLE_NAME VARCHAR2,
126 p_COLUMN_NAME VARCHAR2,
127 p_LABEL VARCHAR2,
128 p_TABLE_ALIAS VARCHAR2,
129 p_COLUMN_SEQUENCE NUMBER,
130 p_DRILLDOWN_COLUMN_FLAG VARCHAR2,
131 p_LAST_UPDATE_DATE DATE,
132 p_LAST_UPDATED_BY NUMBER,
133 p_LAST_UPDATE_LOGIN NUMBER,
134 p_SEEDED_FLAG VARCHAR2,
135 px_OBJECT_VERSION_NUMBER IN OUT NOCOPY NUMBER)
136
137 IS
138 BEGIN
139
140 Update CSC_PROF_TABLE_COLUMNS_B
141 SET
142 BLOCK_ID = decode( p_BLOCK_ID, CSC_CORE_UTILS_PVT.G_MISS_NUM, BLOCK_ID, p_BLOCK_ID),
143 TABLE_NAME = decode( p_TABLE_NAME, CSC_CORE_UTILS_PVT.G_MISS_CHAR, TABLE_NAME, p_TABLE_NAME),
144 COLUMN_NAME = decode( p_COLUMN_NAME, CSC_CORE_UTILS_PVT.G_MISS_CHAR, COLUMN_NAME, p_COLUMN_NAME),
145 -- LABEL = decode( p_LABEL, CSC_CORE_UTILS_PVT.G_MISS_CHAR, LABEL, p_LABEL),
146 ALIAS_NAME = decode(p_TABLE_ALIAS,CSC_CORE_UTILS_PVT.G_MISS_CHAR,ALIAS_NAME,p_TABLE_ALIAS),
147 COLUMN_SEQUENCE = decode(p_COLUMN_SEQUENCE, CSC_CORE_UTILS_PVT.G_MISS_NUM,COLUMN_SEQUENCE,p_COLUMN_SEQUENCE),
148 DRILLDOWN_COLUMN_FLAG = decode(p_DRILLDOWN_COLUMN_FLAG,CSC_CORE_UTILS_PVT.G_MISS_CHAR,DRILLDOWN_COLUMN_FLAG,p_DRILLDOWN_COLUMN_FLAG),
149 LAST_UPDATE_DATE = decode( p_LAST_UPDATE_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, LAST_UPDATE_DATE, p_LAST_UPDATE_DATE),
150 LAST_UPDATED_BY = decode( p_LAST_UPDATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, LAST_UPDATED_BY, p_LAST_UPDATED_BY),
151 LAST_UPDATE_LOGIN = decode( p_LAST_UPDATE_LOGIN, CSC_CORE_UTILS_PVT.G_MISS_NUM, LAST_UPDATE_LOGIN, p_LAST_UPDATE_LOGIN),
152 SEEDED_FLAG = decode( p_SEEDED_FLAG, CSC_CORE_UTILS_PVT.G_MISS_CHAR,SEEDED_FLAG, NVL(p_SEEDED_FLAG,SEEDED_FLAG)),
153 OBJECT_VERSION_NUMBER = object_version_number + 1
154 where TABLE_COLUMN_ID = p_TABLE_COLUMN_ID
155 RETURNING OBJECT_VERSION_NUMBER INTO px_OBJECT_VERSION_NUMBER;
156
157 Update CSC_PROF_TABLE_COLUMNS_TL
158 SET
159 LABEL = decode( p_LABEL, CSC_CORE_UTILS_PVT.G_MISS_CHAR, LABEL, p_LABEL),
160 LAST_UPDATE_DATE = decode( p_LAST_UPDATE_DATE, CSC_CORE_UTILS_PVT.G_MISS_DATE, LAST_UPDATE_DATE, p_LAST_UPDATE_DATE),
161 LAST_UPDATED_BY = decode( p_LAST_UPDATED_BY, CSC_CORE_UTILS_PVT.G_MISS_NUM, LAST_UPDATED_BY, p_LAST_UPDATED_BY),
162 LAST_UPDATE_LOGIN = decode( p_LAST_UPDATE_LOGIN, CSC_CORE_UTILS_PVT.G_MISS_NUM, LAST_UPDATE_LOGIN, p_LAST_UPDATE_LOGIN),
163 SOURCE_LANG = userenv('LANG')
164 where TABLE_COLUMN_ID = P_TABLE_COLUMN_ID
165 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
166
167 if (sql%rowcount = 0 ) then
168 raise no_data_found;
169 end if;
170 END Update_Row;
171
172 procedure LOCK_ROW (
173 P_TABLE_COLUMN_ID in NUMBER,
174 P_OBJECT_VERSION_NUMBER in NUMBER
175 ) is
176 cursor c is select
177 BLOCK_ID,
178 TABLE_NAME,
179 ALIAS_NAME,
180 COLUMN_NAME,
181 COLUMN_SEQUENCE,
182 OBJECT_VERSION_NUMBER
183 from CSC_PROF_TABLE_COLUMNS_B
184 where TABLE_COLUMN_ID = P_TABLE_COLUMN_ID
185 and object_version_number = p_object_version_number
186 for update of TABLE_COLUMN_ID nowait;
187 recinfo c%rowtype;
188
189 cursor c1 is select
190 LABEL,
191 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
192 from CSC_PROF_TABLE_COLUMNS_TL
193 where TABLE_COLUMN_ID = P_TABLE_COLUMN_ID
194 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
195 for update of TABLE_COLUMN_ID nowait;
196 begin
197 open c;
198 fetch c into recinfo;
199 if (c%notfound) then
200 close c;
201 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
202 app_exception.raise_exception;
203 end if;
204 close c;
205 return;
206 end LOCK_ROW;
207
208 procedure DELETE_ROW (
209 P_TABLE_COLUMN_ID NUMBER,
210 P_OBJECT_VERSION_NUMBER NUMBER
211 ) is
212 begin
213 delete from CSC_PROF_TABLE_COLUMNS_TL
214 where TABLE_COLUMN_ID = P_TABLE_COLUMN_ID;
215
216 if (sql%notfound) then
217 raise no_data_found;
218 end if;
219
220 delete from CSC_PROF_TABLE_COLUMNS_B
221 where TABLE_COLUMN_ID = P_TABLE_COLUMN_ID
222 and OBJECT_VERSION_NUMBER = p_OBJECT_VERSION_NUMBER;
223
224 if (sql%notfound) then
225 raise no_data_found;
226 end if;
227 end DELETE_ROW;
228
229 Procedure DELETE_EXISTING_ROW (
230 p_BLOCK_ID NUMBER,
231 p_TABLE_NAME VARCHAR2,
232 p_COLUMN_NAME VARCHAR2) IS
233 Begin
234 DELETE FROM CSC_PROF_TABLE_COLUMNS_TL
235 WHERE TABLE_COLUMN_ID IN (SELECT TABLE_COLUMN_ID FROM CSC_PROF_TABLE_COLUMNS_B
236 WHERE BLOCK_ID = p_BLOCK_ID
237 AND TABLE_NAME = p_TABLE_NAME
238 AND COLUMN_NAME = p_COLUMN_NAME);
239 IF (SQL%FOUND) THEN
240 DELETE FROM CSC_PROF_TABLE_COLUMNS_B
241 WHERE BLOCK_ID = p_BLOCK_ID
242 AND TABLE_NAME = p_TABLE_NAME
243 AND COLUMN_NAME = p_COLUMN_NAME ;
244 END IF;
245 End Delete_Existing_Row;
246
247 procedure ADD_LANGUAGE
248 is
249 begin
250 delete from CSC_PROF_TABLE_COLUMNS_TL T
251 where not exists
252 (select NULL
253 from CSC_PROF_TABLE_COLUMNS_B B
254 where B.TABLE_COLUMN_ID = T.TABLE_COLUMN_ID
255 );
256
257 update CSC_PROF_TABLE_COLUMNS_TL T set (
258 LABEL
259 ) = (select
260 B.LABEL
261 from CSC_PROF_TABLE_COLUMNS_TL B
262 where B.TABLE_COLUMN_ID = T.TABLE_COLUMN_ID
263 and B.LANGUAGE = T.SOURCE_LANG)
264 where (
265 T.TABLE_COLUMN_ID,
266 T.LANGUAGE
267 ) in (select
268 SUBT.TABLE_COLUMN_ID,
269 SUBT.LANGUAGE
270 from CSC_PROF_TABLE_COLUMNS_TL SUBB, CSC_PROF_TABLE_COLUMNS_TL SUBT
271 where SUBB.TABLE_COLUMN_ID = SUBT.TABLE_COLUMN_ID
272 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
273 and (SUBB.LABEL <> SUBT.LABEL
274 or (SUBB.LABEL is null and SUBT.LABEL is not null)
275 or (SUBB.LABEL is not null and SUBT.LABEL is null)
276 ));
277
278 insert into CSC_PROF_TABLE_COLUMNS_TL (
279 TABLE_COLUMN_ID,
280 LABEL,
281 CREATED_BY,
282 CREATION_DATE,
283 LAST_UPDATED_BY,
284 LAST_UPDATE_DATE,
285 LAST_UPDATE_LOGIN,
286 LANGUAGE,
287 SOURCE_LANG
288 ) select
289 B.TABLE_COLUMN_ID,
290 B.LABEL,
291 B.CREATED_BY,
292 B.CREATION_DATE,
293 B.LAST_UPDATED_BY,
294 B.LAST_UPDATE_DATE,
295 B.LAST_UPDATE_LOGIN,
296 L.LANGUAGE_CODE,
297 B.SOURCE_LANG
298 from CSC_PROF_TABLE_COLUMNS_TL B, FND_LANGUAGES L
299 where L.INSTALLED_FLAG in ('I', 'B')
300 and B.LANGUAGE = userenv('LANG')
301 and not exists
302 (select NULL
303 from CSC_PROF_TABLE_COLUMNS_TL T
304 where T.TABLE_COLUMN_ID = B.TABLE_COLUMN_ID
305 and T.LANGUAGE = L.LANGUAGE_CODE);
306 end ADD_LANGUAGE;
307
308 Procedure TRANSLATE_ROW (
309 p_LABEL in varchar2,
310 p_TABLE_COLUMN_ID in number,
311 p_OWNER in varchar2 ) is
312
313 Begin
314 Update Csc_Prof_Table_Columns_TL set
315 label = nvl(P_LABEL,label),
316 last_update_date = sysdate,
317 last_updated_by = decode(p_OWNER,'SEED',1,0),
318 last_update_login = 0,
319 source_lang = userenv('LANG')
320 Where table_column_id = P_TABLE_COLUMN_ID
321 and userenv('LANG') in (language, source_lang);
322
323 end TRANSLATE_ROW;
324
325 Procedure LOAD_ROW (
326 p_TABLE_COLUMN_ID in number,
327 p_BLOCK_ID in number,
328 p_TABLE_NAME in varchar2,
329 p_COLUMN_NAME in varchar2,
330 p_LABEL in varchar2,
331 p_ALIAS_NAME in varchar2,
332 p_COLUMN_SEQUENCE in number,
333 p_DRILLDOWN_COLUMN_FLAG in varchar2,
334 p_SEEDED_FLAG in varchar2,
335 p_last_update_date IN DATE,
336 p_last_updated_by IN NUMBER,
337 p_last_update_login IN NUMBER
338 ) is
339
340 l_object_version_number number := 0;
341 l_table_column_id number := p_table_column_id;
342 Begin
343
344
345 Csc_Prof_Table_Columns_Pkg.Update_Row(
346 p_TABLE_COLUMN_ID => P_TABLE_COLUMN_ID,
347 p_BLOCK_ID => P_BLOCK_ID,
348 p_TABLE_NAME => P_TABLE_NAME,
349 p_COLUMN_NAME => P_COLUMN_NAME,
350 p_LABEL => P_LABEL,
351 p_TABLE_ALIAS => P_ALIAS_NAME,
352 p_COLUMN_SEQUENCE => P_COLUMN_SEQUENCE,
353 p_drilldown_column_flag => P_DRILLDOWN_COLUMN_FLAG,
354 p_LAST_UPDATE_DATE => p_last_update_date,
355 p_LAST_UPDATED_BY => p_last_updated_by,
356 p_LAST_UPDATE_LOGIN => p_last_update_login,
357 p_SEEDED_FLAG => p_SEEDED_FLAG,
358 px_OBJECT_VERSION_NUMBER => l_object_version_number);
359
360 Exception
361 When no_data_found then
362 /* Added this procedure not to cause the duplicate records while
363 loading the seeded table columns. The reason being is if the seeded
364 profile are changed it removes the records and recreates brand new
365 records with new sequence number. So in the customer site it will
366 introduce new set of records with diff sequence numbers. So the following
367 procedure will check and will remove the existing record first before
368 uploading new set of records -jamose */
369 Csc_Prof_Table_Columns_Pkg.Delete_Existing_Row(
370 p_BLOCK_ID =>p_block_id,
371 p_TABLE_NAME =>p_table_name,
372 p_COLUMN_NAME =>p_column_name
373 );
374
375 Csc_Prof_Table_Columns_Pkg.Insert_Row(
376 px_TABLE_COLUMN_ID => l_table_column_id,
377 p_BLOCK_ID => P_block_id,
378 p_TABLE_NAME => P_table_name,
379 p_COLUMN_NAME => P_column_name,
380 p_LABEL => P_label,
381 p_TABLE_ALIAS => P_alias_name,
382 p_COLUMN_SEQUENCE => P_column_sequence,
383 p_drilldown_column_flag =>P_drilldown_column_flag,
384 p_LAST_UPDATE_DATE => p_last_update_date,
385 p_LAST_UPDATED_BY => p_last_updated_by,
386 p_CREATION_DATE => p_last_update_date,
387 p_CREATED_BY => p_last_updated_by,
388 p_LAST_UPDATE_LOGIN => p_last_update_login,
389 p_SEEDED_FLAG => p_SEEDED_FLAG,
390 x_OBJECT_VERSION_NUMBER => l_object_version_number);
391
392 End LOAD_ROW;
393
394
395 End CSC_PROF_TABLE_COLUMNS_PKG;