DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEC_G_REP_COLS_PKG

Source


1 package body IEC_G_REP_COLS_PKG as
2 /* $Header: IECREPCB.pls 115.12 2003/08/22 20:42:25 hhuang ship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID out nocopy VARCHAR2,
6   X_COLUMN_ID in NUMBER,
7   X_OBJECT_VERSION_NUMBER in NUMBER,
8   X_VALUE in VARCHAR2,
9   X_NAME in VARCHAR2,
10   X_INTERNAL_COLUMN_NAME in VARCHAR2,
11   X_CREATION_DATE in DATE,
12   X_CREATED_BY in NUMBER,
13   X_LAST_UPDATE_DATE in DATE,
14   X_LAST_UPDATED_BY in NUMBER,
15   X_LAST_UPDATE_LOGIN in NUMBER
16 ) is
17   cursor C is select ROWID from IEC_G_REP_COLS_B
18     where COLUMN_ID = X_COLUMN_ID
19     ;
20 begin
21   x_rowid := NULL;
22 
23   insert into IEC_G_REP_COLS_B (
24     COLUMN_ID,
25     OBJECT_VERSION_NUMBER,
26     CREATION_DATE,
27     CREATED_BY,
28     LAST_UPDATE_DATE,
29     LAST_UPDATED_BY,
30     LAST_UPDATE_LOGIN
31   ) values (
32     X_COLUMN_ID,
33     X_OBJECT_VERSION_NUMBER,
34     X_CREATION_DATE,
35     X_CREATED_BY,
36     X_LAST_UPDATE_DATE,
37     X_LAST_UPDATED_BY,
38     X_LAST_UPDATE_LOGIN
39   );
40 
41   insert into IEC_G_REP_COLS_TL (
42     VALUE,
43     NAME,
44     INTERNAL_COLUMN_NAME,
45     COLUMN_ID,
46     CREATED_BY,
47     CREATION_DATE,
48     LAST_UPDATE_DATE,
49     LAST_UPDATED_BY,
50     LAST_UPDATE_LOGIN,
51     OBJECT_VERSION_NUMBER,
52     LANGUAGE,
53     SOURCE_LANG
54   ) select
55     X_VALUE,
56     X_NAME,
57     X_INTERNAL_COLUMN_NAME,
58     X_COLUMN_ID,
59     X_CREATED_BY,
60     X_CREATION_DATE,
61     X_LAST_UPDATE_DATE,
62     X_LAST_UPDATED_BY,
63     X_LAST_UPDATE_LOGIN,
64     X_OBJECT_VERSION_NUMBER,
65     L.LANGUAGE_CODE,
66     userenv('LANG')
67   from FND_LANGUAGES L
68   where L.INSTALLED_FLAG in ('I', 'B')
69   and not exists
70     (select NULL
71     from IEC_G_REP_COLS_TL T
72     where T.COLUMN_ID = X_COLUMN_ID
73     and T.LANGUAGE = L.LANGUAGE_CODE);
74 
75   open c;
76   fetch c into X_ROWID;
77   if (c%notfound) then
78     close c;
79     raise no_data_found;
80   end if;
81   close c;
82 
83 end INSERT_ROW;
84 
85 procedure LOCK_ROW (
86   X_COLUMN_ID in NUMBER,
87   X_OBJECT_VERSION_NUMBER in NUMBER,
88   X_VALUE in VARCHAR2,
89   X_NAME in VARCHAR2,
90   X_INTERNAL_COLUMN_NAME in VARCHAR2
91 ) is
92   cursor c is select
93       OBJECT_VERSION_NUMBER
94     from IEC_G_REP_COLS_B
95     where COLUMN_ID = X_COLUMN_ID
96     for update of COLUMN_ID nowait;
97   recinfo c%rowtype;
98 
99   cursor c1 is select
100       VALUE,
101       NAME,
102       INTERNAL_COLUMN_NAME,
103       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
104     from IEC_G_REP_COLS_TL
105     where COLUMN_ID = X_COLUMN_ID
106     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
107     for update of COLUMN_ID nowait;
108 begin
109   open c;
110   fetch c into recinfo;
111   if (c%notfound) then
112     close c;
113     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
114     app_exception.raise_exception;
115   end if;
116   close c;
117   if recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER then
118     null;
119   else
120     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
121     app_exception.raise_exception;
122   end if;
123 
124   for tlinfo in c1 loop
125     if (tlinfo.BASELANG = 'Y') then
126       if (    ((tlinfo.VALUE = X_VALUE)
127                OR ((tlinfo.VALUE is null) AND (X_VALUE is null)))
128           AND ((tlinfo.NAME = X_NAME)
129                OR ((tlinfo.NAME is null) AND (X_NAME is null)))
130           AND (tlinfo.INTERNAL_COLUMN_NAME = X_INTERNAL_COLUMN_NAME)
131       ) then
132         null;
133       else
134         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
135         app_exception.raise_exception;
136       end if;
137     end if;
138   end loop;
139   return;
140 end LOCK_ROW;
141 
142 procedure UPDATE_ROW (
143   X_COLUMN_ID in NUMBER,
144   X_OBJECT_VERSION_NUMBER in NUMBER,
145   X_VALUE in VARCHAR2,
146   X_NAME in VARCHAR2,
147   X_INTERNAL_COLUMN_NAME in VARCHAR2,
148   X_LAST_UPDATE_DATE in DATE,
149   X_LAST_UPDATED_BY in NUMBER,
150   X_LAST_UPDATE_LOGIN in NUMBER
151 ) is
152 begin
153   update IEC_G_REP_COLS_B set
154     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
155     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
156     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
157     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
158   where COLUMN_ID = X_COLUMN_ID;
159 
160   if (sql%notfound) then
161     raise no_data_found;
162   end if;
163 
164   update IEC_G_REP_COLS_TL set
165     VALUE = X_VALUE,
166     NAME = X_NAME,
167     INTERNAL_COLUMN_NAME = X_INTERNAL_COLUMN_NAME,
168     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
169     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
170     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
171     SOURCE_LANG = userenv('LANG')
172   where COLUMN_ID = X_COLUMN_ID
173   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
174 
175   if (sql%notfound) then
176     raise no_data_found;
177   end if;
178 end UPDATE_ROW;
179 
180 procedure DELETE_ROW (
181   X_COLUMN_ID in NUMBER
182 ) is
183 begin
184   delete from IEC_G_REP_COLS_TL
185   where COLUMN_ID = X_COLUMN_ID;
186 
187   if (sql%notfound) then
188     raise no_data_found;
189   end if;
190 
191   delete from IEC_G_REP_COLS_B
192   where COLUMN_ID = X_COLUMN_ID;
193 
194   if (sql%notfound) then
195     raise no_data_found;
196   end if;
197 end DELETE_ROW;
198 
199 procedure ADD_LANGUAGE
200 is
201 begin
202   delete from IEC_G_REP_COLS_TL T
203   where not exists
204     (select NULL
205     from IEC_G_REP_COLS_B B
206     where B.COLUMN_ID = T.COLUMN_ID
207     );
208 
209   update IEC_G_REP_COLS_TL T set (
210       VALUE,
211       NAME,
212       INTERNAL_COLUMN_NAME
213     ) = (select
214       B.VALUE,
215       B.NAME,
216       B.INTERNAL_COLUMN_NAME
217     from IEC_G_REP_COLS_TL B
218     where B.COLUMN_ID = T.COLUMN_ID
219     and B.LANGUAGE = T.SOURCE_LANG)
220   where (
221       T.COLUMN_ID,
222       T.LANGUAGE
223   ) in (select
224       SUBT.COLUMN_ID,
225       SUBT.LANGUAGE
226     from IEC_G_REP_COLS_TL SUBB, IEC_G_REP_COLS_TL SUBT
227     where SUBB.COLUMN_ID = SUBT.COLUMN_ID
228     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
229     and (SUBB.VALUE <> SUBT.VALUE
230       or (SUBB.VALUE is null and SUBT.VALUE is not null)
231       or (SUBB.VALUE is not null and SUBT.VALUE is null)
232       or SUBB.NAME <> SUBT.NAME
233       or (SUBB.NAME is null and SUBT.NAME is not null)
234       or (SUBB.NAME is not null and SUBT.NAME is null)
235       or SUBB.INTERNAL_COLUMN_NAME <> SUBT.INTERNAL_COLUMN_NAME
236   ));
237 
238   insert into IEC_G_REP_COLS_TL (
239     VALUE,
240     NAME,
241     INTERNAL_COLUMN_NAME,
242     COLUMN_ID,
243     CREATED_BY,
244     CREATION_DATE,
245     LAST_UPDATE_DATE,
246     LAST_UPDATED_BY,
247     LAST_UPDATE_LOGIN,
248     OBJECT_VERSION_NUMBER,
249     LANGUAGE,
250     SOURCE_LANG
251   ) select /*+ ORDERED */
252     B.VALUE,
253     B.NAME,
254     B.INTERNAL_COLUMN_NAME,
255     B.COLUMN_ID,
256     B.CREATED_BY,
257     B.CREATION_DATE,
258     B.LAST_UPDATE_DATE,
259     B.LAST_UPDATED_BY,
260     B.LAST_UPDATE_LOGIN,
261     B.OBJECT_VERSION_NUMBER,
262     L.LANGUAGE_CODE,
263     B.SOURCE_LANG
264   from IEC_G_REP_COLS_TL B, FND_LANGUAGES L
265   where L.INSTALLED_FLAG in ('I', 'B')
266   and B.LANGUAGE = userenv('LANG')
267   and not exists
268     (select NULL
269     from IEC_G_REP_COLS_TL T
270     where T.COLUMN_ID = B.COLUMN_ID
271     and T.LANGUAGE = L.LANGUAGE_CODE);
272 end ADD_LANGUAGE;
273 
274 procedure LOAD_ROW (
275   X_COLUMN_ID in NUMBER,
276   X_VALUE in VARCHAR2,
277   X_NAME in VARCHAR2,
278   X_INTERNAL_COLUMN_NAME in VARCHAR2,
279   X_OWNER in VARCHAR2
280 ) is
281 
282   USER_ID NUMBER := 0;
283   ROW_ID  VARCHAR2(500);
284 begin
285 
286   if (X_OWNER = 'SEED') then
287     USER_ID := 1;
288   end if;
289 
290   UPDATE_ROW (X_COLUMN_ID, 0, X_VALUE, X_NAME, X_INTERNAL_COLUMN_NAME, SYSDATE, USER_ID, 0);
291 
292 exception
293   when no_data_found then
294     INSERT_ROW (ROW_ID, X_COLUMN_ID, 0, X_VALUE, X_NAME, X_INTERNAL_COLUMN_NAME, SYSDATE, USER_ID, SYSDATE, USER_ID, 0);
295 
296 end LOAD_ROW;
297 
298 procedure TRANSLATE_ROW (
299   X_COLUMN_ID in NUMBER,
300   X_VALUE in VARCHAR2,
301   X_NAME in VARCHAR2,
302   X_INTERNAL_COLUMN_NAME in VARCHAR2,
303   X_OWNER in VARCHAR2
304 ) is
305 begin
306 
307   -- only UPDATE rows that have not been altered by user
308 
309   update IEC_G_REP_COLS_TL set
310   VALUE = X_VALUE,
311   SOURCE_LANG = userenv('LANG'),
312   NAME = X_NAME,
313   INTERNAL_COLUMN_NAME = X_INTERNAL_COLUMN_NAME,
314   LAST_UPDATE_DATE = SYSDATE,
315   LAST_UPDATED_BY = DECODE(X_OWNER, 'SEED', 1, 0),
316   LAST_UPDATE_LOGIN = 0
317   where COLUMN_ID = X_COLUMN_ID
318   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
319 
320 end TRANSLATE_ROW;
321 
322 end IEC_G_REP_COLS_PKG;