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