1 package body FEM_BASIC_ACCT_TYPES_PKG as
2 /* $Header: fem_bsaccttp_pkb.plb 120.0 2005/06/06 21:54:16 appldev noship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out NOCOPY VARCHAR2,
5 X_BASIC_ACCOUNT_TYPE_CODE in VARCHAR2,
6 X_ENABLED_FLAG in VARCHAR2,
7 X_PERSONAL_FLAG in VARCHAR2,
8 X_READ_ONLY_FLAG in VARCHAR2,
9 X_BASIC_ACCOUNT_TYPE_NAME in VARCHAR2,
10 X_DESCRIPTION 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 FEM_BASIC_ACCT_TYPES_B
18 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE
19 ;
20 begin
21 insert into FEM_BASIC_ACCT_TYPES_B (
22 BASIC_ACCOUNT_TYPE_CODE,
23 ENABLED_FLAG,
24 PERSONAL_FLAG,
25 READ_ONLY_FLAG,
26 CREATION_DATE,
27 CREATED_BY,
28 LAST_UPDATE_DATE,
29 LAST_UPDATED_BY,
30 LAST_UPDATE_LOGIN
31 ) values (
32 X_BASIC_ACCOUNT_TYPE_CODE,
33 X_ENABLED_FLAG,
34 X_PERSONAL_FLAG,
35 X_READ_ONLY_FLAG,
36 X_CREATION_DATE,
37 X_CREATED_BY,
38 X_LAST_UPDATE_DATE,
39 X_LAST_UPDATED_BY,
40 X_LAST_UPDATE_LOGIN
41 );
42
43 insert into FEM_BASIC_ACCT_TYPES_TL (
44 BASIC_ACCOUNT_TYPE_CODE,
45 BASIC_ACCOUNT_TYPE_NAME,
46 DESCRIPTION,
47 CREATION_DATE,
48 CREATED_BY,
49 LAST_UPDATED_BY,
50 LAST_UPDATE_DATE,
51 LAST_UPDATE_LOGIN,
52 LANGUAGE,
53 SOURCE_LANG
54 ) select
55 X_BASIC_ACCOUNT_TYPE_CODE,
56 X_BASIC_ACCOUNT_TYPE_NAME,
57 X_DESCRIPTION,
58 X_CREATION_DATE,
59 X_CREATED_BY,
60 X_LAST_UPDATED_BY,
61 X_LAST_UPDATE_DATE,
62 X_LAST_UPDATE_LOGIN,
63 L.LANGUAGE_CODE,
64 userenv('LANG')
65 from FND_LANGUAGES L
66 where L.INSTALLED_FLAG in ('I', 'B')
67 and not exists
68 (select NULL
69 from FEM_BASIC_ACCT_TYPES_TL T
70 where T.BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE
71 and T.LANGUAGE = L.LANGUAGE_CODE);
72
73 open c;
74 fetch c into X_ROWID;
75 if (c%notfound) then
76 close c;
77 raise no_data_found;
78 end if;
79 close c;
80
81 end INSERT_ROW;
82
83 procedure LOCK_ROW (
84 X_BASIC_ACCOUNT_TYPE_CODE in VARCHAR2,
85 X_ENABLED_FLAG in VARCHAR2,
86 X_PERSONAL_FLAG in VARCHAR2,
87 X_READ_ONLY_FLAG in VARCHAR2,
88 X_BASIC_ACCOUNT_TYPE_NAME in VARCHAR2,
89 X_DESCRIPTION in VARCHAR2
90 ) is
91 cursor c is select
92 ENABLED_FLAG,
93 PERSONAL_FLAG,
94 READ_ONLY_FLAG
95 from FEM_BASIC_ACCT_TYPES_B
96 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE
97 for update of BASIC_ACCOUNT_TYPE_CODE nowait;
98 recinfo c%rowtype;
99
100 cursor c1 is select
101 BASIC_ACCOUNT_TYPE_NAME,
102 DESCRIPTION,
103 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
104 from FEM_BASIC_ACCT_TYPES_TL
105 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE
106 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
107 for update of BASIC_ACCOUNT_TYPE_CODE 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.ENABLED_FLAG = X_ENABLED_FLAG)
118 AND (recinfo.PERSONAL_FLAG = X_PERSONAL_FLAG)
119 AND (recinfo.READ_ONLY_FLAG = X_READ_ONLY_FLAG)
120 ) then
121 null;
122 else
123 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
124 app_exception.raise_exception;
125 end if;
126
127 for tlinfo in c1 loop
128 if (tlinfo.BASELANG = 'Y') then
129 if ( (tlinfo.BASIC_ACCOUNT_TYPE_NAME = X_BASIC_ACCOUNT_TYPE_NAME)
130 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
131 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
132 ) then
133 null;
134 else
135 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
136 app_exception.raise_exception;
137 end if;
138 end if;
139 end loop;
140 return;
141 end LOCK_ROW;
142
143 procedure UPDATE_ROW (
144 X_BASIC_ACCOUNT_TYPE_CODE in VARCHAR2,
145 X_ENABLED_FLAG in VARCHAR2,
146 X_PERSONAL_FLAG in VARCHAR2,
147 X_READ_ONLY_FLAG in VARCHAR2,
148 X_BASIC_ACCOUNT_TYPE_NAME in VARCHAR2,
149 X_DESCRIPTION in VARCHAR2,
150 X_LAST_UPDATE_DATE in DATE,
151 X_LAST_UPDATED_BY in NUMBER,
152 X_LAST_UPDATE_LOGIN in NUMBER
153 ) is
154 begin
155 update FEM_BASIC_ACCT_TYPES_B set
156 ENABLED_FLAG = X_ENABLED_FLAG,
157 PERSONAL_FLAG = X_PERSONAL_FLAG,
158 READ_ONLY_FLAG = X_READ_ONLY_FLAG,
159 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
160 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
161 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
162 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE;
163
164 if (sql%notfound) then
165 raise no_data_found;
166 end if;
167
168 update FEM_BASIC_ACCT_TYPES_TL set
169 BASIC_ACCOUNT_TYPE_NAME = X_BASIC_ACCOUNT_TYPE_NAME,
170 DESCRIPTION = X_DESCRIPTION,
171 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
172 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
173 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
174 SOURCE_LANG = userenv('LANG')
175 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE
176 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
177
178 if (sql%notfound) then
179 raise no_data_found;
180 end if;
181 end UPDATE_ROW;
182
183 procedure DELETE_ROW (
184 X_BASIC_ACCOUNT_TYPE_CODE in VARCHAR2
185 ) is
186 begin
187 delete from FEM_BASIC_ACCT_TYPES_TL
188 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE;
189
190 if (sql%notfound) then
191 raise no_data_found;
192 end if;
193
194 delete from FEM_BASIC_ACCT_TYPES_B
195 where BASIC_ACCOUNT_TYPE_CODE = X_BASIC_ACCOUNT_TYPE_CODE;
196
197 if (sql%notfound) then
198 raise no_data_found;
199 end if;
200 end DELETE_ROW;
201
202 procedure ADD_LANGUAGE
203 is
204 begin
205 delete from FEM_BASIC_ACCT_TYPES_TL T
206 where not exists
207 (select NULL
208 from FEM_BASIC_ACCT_TYPES_B B
209 where B.BASIC_ACCOUNT_TYPE_CODE = T.BASIC_ACCOUNT_TYPE_CODE
210 );
211
212 update FEM_BASIC_ACCT_TYPES_TL T set (
213 BASIC_ACCOUNT_TYPE_NAME,
214 DESCRIPTION
215 ) = (select
216 B.BASIC_ACCOUNT_TYPE_NAME,
217 B.DESCRIPTION
218 from FEM_BASIC_ACCT_TYPES_TL B
219 where B.BASIC_ACCOUNT_TYPE_CODE = T.BASIC_ACCOUNT_TYPE_CODE
220 and B.LANGUAGE = T.SOURCE_LANG)
221 where (
222 T.BASIC_ACCOUNT_TYPE_CODE,
223 T.LANGUAGE
224 ) in (select
225 SUBT.BASIC_ACCOUNT_TYPE_CODE,
226 SUBT.LANGUAGE
227 from FEM_BASIC_ACCT_TYPES_TL SUBB, FEM_BASIC_ACCT_TYPES_TL SUBT
228 where SUBB.BASIC_ACCOUNT_TYPE_CODE = SUBT.BASIC_ACCOUNT_TYPE_CODE
229 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
230 and (SUBB.BASIC_ACCOUNT_TYPE_NAME <> SUBT.BASIC_ACCOUNT_TYPE_NAME
231 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
232 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
233 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
234 ));
235
236 insert into FEM_BASIC_ACCT_TYPES_TL (
237 BASIC_ACCOUNT_TYPE_CODE,
238 BASIC_ACCOUNT_TYPE_NAME,
239 DESCRIPTION,
240 CREATION_DATE,
241 CREATED_BY,
242 LAST_UPDATED_BY,
243 LAST_UPDATE_DATE,
244 LAST_UPDATE_LOGIN,
245 LANGUAGE,
246 SOURCE_LANG
247 ) select /*+ ORDERED */
248 B.BASIC_ACCOUNT_TYPE_CODE,
249 B.BASIC_ACCOUNT_TYPE_NAME,
250 B.DESCRIPTION,
251 B.CREATION_DATE,
252 B.CREATED_BY,
253 B.LAST_UPDATED_BY,
254 B.LAST_UPDATE_DATE,
255 B.LAST_UPDATE_LOGIN,
256 L.LANGUAGE_CODE,
257 B.SOURCE_LANG
258 from FEM_BASIC_ACCT_TYPES_TL B, FND_LANGUAGES L
259 where L.INSTALLED_FLAG in ('I', 'B')
260 and B.LANGUAGE = userenv('LANG')
261 and not exists
262 (select NULL
263 from FEM_BASIC_ACCT_TYPES_TL T
264 where T.BASIC_ACCOUNT_TYPE_CODE = B.BASIC_ACCOUNT_TYPE_CODE
265 and T.LANGUAGE = L.LANGUAGE_CODE);
266 end ADD_LANGUAGE;
267 PROCEDURE TRANSLATE_ROW(
268 x_BASIC_ACCOUNT_TYPE_CODE in varchar2,
269 x_owner in varchar2,
270 x_last_update_date in varchar2,
271 x_BASIC_ACCOUNT_TYPE_NAME in varchar2,
272 x_description in varchar2,
273 x_custom_mode in varchar2) is
274
275 owner_id number;
276 ludate date;
277 row_id varchar2(64);
278 f_luby number; -- entity owner in file
279 f_ludate date; -- entity update date in file
280 db_luby number; -- entity owner in db
281 db_ludate date; -- entity update date in db
282 begin
283
284
285 -- Translate owner to file_last_updated_by
286 f_luby := fnd_load_util.owner_id(x_owner);
287
288 -- Translate char last_update_date to date
289 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
290 begin
291 select LAST_UPDATED_BY, LAST_UPDATE_DATE
292 into db_luby, db_ludate
293 from FEM_BASIC_ACCT_TYPES_TL
294 where BASIC_ACCOUNT_TYPE_CODE = x_BASIC_ACCOUNT_TYPE_CODE
295 and LANGUAGE = userenv('LANG');
296
297 -- Test for customization and version
298 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
299 db_ludate, x_custom_mode)) then
300 -- Update translations for this language
301 update FEM_BASIC_ACCT_TYPES_TL set
302 BASIC_ACCOUNT_TYPE_NAME = decode(x_BASIC_ACCOUNT_TYPE_NAME,
303 fnd_load_util.null_value, null, -- Real null
304 null, x_BASIC_ACCOUNT_TYPE_NAME, -- No change
305 x_BASIC_ACCOUNT_TYPE_NAME),
306 DESCRIPTION = nvl(x_description, DESCRIPTION),
307 LAST_UPDATE_DATE = f_ludate,
308 LAST_UPDATED_BY = f_luby,
309 LAST_UPDATE_LOGIN = 0,
310 SOURCE_LANG = userenv('LANG')
311 where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
312 and BASIC_ACCOUNT_TYPE_CODE = x_BASIC_ACCOUNT_TYPE_CODE;
313 end if;
314 exception
315 when no_data_found then
316 -- Do not insert missing translations, skip this row
317 null;
318 end;
319 end TRANSLATE_ROW;
320
321
322 end FEM_BASIC_ACCT_TYPES_PKG;