[Home] [Help]
PACKAGE BODY: APPS.AMS_OBJECTATTRIBUTE_PVT
Source
1 PACKAGE BODY AMS_ObjectAttribute_PVT AS
2 /* $Header: amsvobab.pls 115.21 2001/12/17 16:15:20 pkm ship $ */
3
4
5 g_pkg_name CONSTANT VARCHAR2(30) := 'AMS_ObjectAttribute_PVT';
6
7
8 -----------------------------------------------------------------
9 -- PROCEDURE
10 -- create_attribute
11 -----------------------------------------------------------------
12 PROCEDURE create_attribute(
13 x_object_type IN VARCHAR2,
14 x_object_id IN NUMBER,
15 x_custom_setup_id IN NUMBER,
16 x_display_sequence_no IN NUMBER,
17 x_object_attribute IN VARCHAR2,
18 x_attribute_defined_flag IN VARCHAR2,
19
20 x_return_status OUT VARCHAR2
21 )
22 IS
23
24 CURSOR c_get_attr_seq IS
25 SELECT AMS_OBJECT_ATTRIBUTES_S.NEXTVAL
26 FROM DUAL;
27
28 l_attribute_id NUMBER;
29 l_api_name CONSTANT VARCHAR2(30) := 'create_attribute';
30
31 BEGIN
32
33 x_return_status := FND_API.g_ret_sts_success;
34
35 open c_get_attr_seq;
36 fetch c_get_attr_seq into l_attribute_id;
37 close c_get_attr_seq;
38
39 insert into ams_object_attributes(
40 object_attribute_id,
41 last_update_date,
42 last_updated_by,
43 creation_date,
44 created_by,
45 last_update_login,
46 object_version_number,
47 object_type,
48 object_id,
49 custom_setup_id,
50 display_sequence_no,
51 object_attribute,
52 attribute_defined_flag
53 )
54 values(
55 l_attribute_id,
56 SYSDATE,
57 FND_GLOBAL.user_id,
58 SYSDATE,
59 FND_GLOBAL.user_id,
60 FND_GLOBAL.conc_login_id,
61 1, -- object_version_number,
62 x_object_type,
63 x_object_id,
64 x_custom_setup_id,
65 x_display_sequence_no,
66 x_object_attribute,
67 x_attribute_defined_flag
68 );
69
70 EXCEPTION
71
72 WHEN OTHERS THEN
73 x_return_status := FND_API.g_ret_sts_unexp_error ;
74
75 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
76 THEN
77 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
78 END IF;
79
80 END create_attribute;
81
82
83 -----------------------------------------------------------------
84 -- PROCEDURE
85 -- create_object_attributes
86 -----------------------------------------------------------------
87 PROCEDURE create_object_attributes(
88 p_api_version IN NUMBER,
89 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
90 p_commit IN VARCHAR2 := FND_API.g_false,
91 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
92
93 x_return_status OUT VARCHAR2,
94 x_msg_count OUT NUMBER,
95 x_msg_data OUT VARCHAR2,
96
97 p_object_type IN VARCHAR2,
98 p_object_id IN NUMBER,
99 p_setup_id IN NUMBER
100 )
101 IS
102
103 l_api_version CONSTANT NUMBER := 1.0;
104 l_api_name CONSTANT VARCHAR2(30) := 'create_object_attributes';
105 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
106
107 CURSOR c_get_custom_attributes IS
108 SELECT display_sequence_no, object_attribute
109 FROM ams_custom_setup_attr
110 WHERE custom_setup_id = p_setup_id
111 AND attr_available_flag = 'Y';
112
113 CURSOR c_get_object_attr_count IS
114 SELECT count(object_attribute)
115 FROM ams_custom_setup_attr
116 WHERE custom_setup_id = p_setup_id;
117
118 l_return_status VARCHAR2(1);
119 l_attr_count NUMBER;
120 l_seq_no NUMBER;
121 l_obj_attr VARCHAR2(10);
122
123 BEGIN
124
125 -- initialize
126 SAVEPOINT create_object_attributes;
127 AMS_Utility_PVT.debug_message(l_full_name||': start');
128
129 IF FND_API.to_boolean(p_init_msg_list) THEN
130 FND_MSG_PUB.initialize;
131 END IF;
132
133 IF NOT FND_API.compatible_api_call(
134 l_api_version,
135 p_api_version,
136 l_api_name,
137 g_pkg_name
138 ) THEN
139 RAISE FND_API.g_exc_unexpected_error;
140 END IF;
141
142 x_return_status := FND_API.g_ret_sts_success;
143
144
145 AMS_Utility_PVT.debug_message(l_full_name ||': checking setup id');
146
147 -- check arc object
148 -- Following code is modified by ptendulk on 30-Jan-2001 to add attributes to schedules.
149 -- IF p_object_type NOT IN ('CAMP','DELV','EVEH','EVEO','FUND','MESG','OFFR','CLAM','PROD','PRIC') THEN
150 -- end of code Modified by ptendulk
151 IF p_object_type NOT IN ('CAMP','DELV','EVEH','EVEO','FUND','MESG','OFFR','CLAM','PROD','PRIC','CSCH') THEN
152 AMS_Utility_PVT.error_message('AMS_SCG_BAD_ARC_OBJECT');
153 RAISE FND_API.g_exc_error;
154 END IF;
155
156 -- check if the setup type is valid and if there are any attributes
157 open c_get_object_attr_count;
158 fetch c_get_object_attr_count into l_attr_count;
159 close c_get_object_attr_count;
160
161 if l_attr_count = 0 then
162 -- raise an error -- setup type / attributes does not exist
163 AMS_Utility_PVT.error_message('AMS_OBA_BAD_SETUP_TYPE');
164 RAISE FND_API.g_exc_error;
165 end if;
166
167
168 AMS_Utility_PVT.debug_message(l_full_name ||': get attributes');
169
170 open c_get_custom_attributes;
171 loop
172 fetch c_get_custom_attributes into l_seq_no, l_obj_attr;
173 exit when c_get_custom_attributes%notfound;
174
175 AMS_Utility_PVT.debug_message(l_full_name ||': '||l_obj_attr);
176
177 --insert attribute row;
178 create_attribute(
179 x_object_type => p_object_type,
180 x_object_id => p_object_id,
181 x_custom_setup_id => p_setup_id,
182 x_display_sequence_no => l_seq_no,
183 x_object_attribute => l_obj_attr,
184 x_attribute_defined_flag => 'N',
185
186 x_return_status => l_return_status
187 );
188
189 IF l_return_status = FND_API.g_ret_sts_error THEN
190 close c_get_custom_attributes;
191 RAISE FND_API.g_exc_error;
192 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
193 close c_get_custom_attributes;
194 RAISE FND_API.g_exc_unexpected_error;
195 END IF;
196
197 end loop;
198 close c_get_custom_attributes;
199
200 AMS_Utility_PVT.debug_message(l_full_name ||': insert general attribute');
201
202 create_attribute(
203 x_object_type => p_object_type,
204 x_object_id => p_object_id,
205 x_custom_setup_id => p_setup_id,
206 x_display_sequence_no => 0,
207 x_object_attribute => 'DETL' ,
208 x_attribute_defined_flag => 'Y',
209 x_return_status => l_return_status
210 );
211
212 IF l_return_status = FND_API.g_ret_sts_error THEN
213 RAISE FND_API.g_exc_error;
214 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
215 RAISE FND_API.g_exc_unexpected_error;
216 END IF;
217
218 AMS_Utility_PVT.debug_message(l_full_name ||': End');
219
220 IF FND_API.to_boolean(p_commit) THEN
221 COMMIT;
222 END IF;
223
224 FND_MSG_PUB.count_and_get(
225 p_encoded => FND_API.g_false,
226 p_count => x_msg_count,
227 p_data => x_msg_data
228 );
229
230 EXCEPTION
231
232 WHEN FND_API.g_exc_error THEN
233 ROLLBACK TO create_object_attributes;
234 x_return_status := FND_API.g_ret_sts_error;
235 FND_MSG_PUB.count_and_get(
236 p_encoded => FND_API.g_false,
237 p_count => x_msg_count,
238 p_data => x_msg_data
239 );
240
241 WHEN FND_API.g_exc_unexpected_error THEN
242 ROLLBACK TO create_object_attributes;
243 x_return_status := FND_API.g_ret_sts_unexp_error ;
244 FND_MSG_PUB.count_and_get(
245 p_encoded => FND_API.g_false,
246 p_count => x_msg_count,
247 p_data => x_msg_data
248 );
249
250
251 WHEN OTHERS THEN
252 ROLLBACK TO create_object_attributes;
253 x_return_status := FND_API.g_ret_sts_unexp_error ;
254
255 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
256 THEN
257 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
258 END IF;
259
260 FND_MSG_PUB.count_and_get(
261 p_encoded => FND_API.g_false,
262 p_count => x_msg_count,
263 p_data => x_msg_data
264 );
265
266 END create_object_attributes;
267
268
269 -----------------------------------------------------------------
270 -- PROCEDURE
271 -- process_object_attribute
272 -----------------------------------------------------------------
273 PROCEDURE modify_object_attribute(
274 p_api_version IN NUMBER,
275 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
276 p_commit IN VARCHAR2 := FND_API.g_false,
277 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
278
279 x_return_status OUT VARCHAR2,
280 x_msg_count OUT NUMBER,
281 x_msg_data OUT VARCHAR2,
282
283 p_object_type IN VARCHAR2,
284 p_object_id IN NUMBER,
285 p_attr IN VARCHAR2,
286 p_attr_defined_flag IN VARCHAR2
287 )
288 IS
289
290 l_api_version CONSTANT NUMBER := 1.0;
291 l_api_name CONSTANT VARCHAR2(30) := 'modify_object_attribute';
292 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
293
294 CURSOR c_get_object_attribute IS
295 SELECT attribute_defined_flag
296 FROM ams_object_attributes
297 WHERE object_type = p_object_type
298 AND object_id = p_object_id
299 AND object_attribute = p_attr;
300
301 l_return_status VARCHAR2(1);
302 l_attr_flag VARCHAR2(1);
303
304 BEGIN
305
306 --------------------- initialize -----------------------
307 SAVEPOINT modify_object_attribute;
308
309 AMS_Utility_PVT.debug_message(l_full_name||': start');
310
311 IF FND_API.to_boolean(p_init_msg_list) THEN
312 FND_MSG_PUB.initialize;
313 END IF;
314
315 IF NOT FND_API.compatible_api_call(
316 l_api_version,
317 p_api_version,
318 l_api_name,
319 g_pkg_name
320 ) THEN
321 RAISE FND_API.g_exc_unexpected_error;
322 END IF;
323
324 x_return_status := FND_API.g_ret_sts_success;
325
326 -- check arc object
327 -- Following code is modified by ptendulk on 30-Jan-2001 to add attributes to schedules.
328 --IF p_object_type NOT IN ('CAMP','DELV','EVEH','EVEO','FUND','MESG','OFFR','CLAM','PROD','PRIC') THEN
329 IF p_object_type NOT IN ('CAMP','DELV','EVEH','EVEO','FUND','MESG','OFFR','CLAM','PROD','PRIC','CSCH') THEN
330 -- End of code modified by ptendulk on 30-Jan-2001 to add attributes to schedules.
331 AMS_Utility_PVT.error_message('AMS_SCG_BAD_ARC_OBJECT');
332 RAISE FND_API.g_exc_error;
333 END IF;
334
335 IF p_attr_defined_flag NOT IN ( 'Y', 'N') THEN
336 AMS_Utility_PVT.error_message('AMS_OBA_BAD_ATTR_FLAG');
337 RAISE FND_API.g_exc_error;
338 END IF;
339
340 open c_get_object_attribute;
341 fetch c_get_object_attribute into l_attr_flag;
342 if c_get_object_attribute%notfound then
343 close c_get_object_attribute;
344 AMS_Utility_PVT.error_message('AMS_OBA_BAD_SETUP_ATTR');
345 RAISE FND_API.g_exc_error;
346 else
347 AMS_Utility_PVT.debug_message(l_full_name ||': updating object attribute');
348 close c_get_object_attribute;
349 UPDATE ams_object_attributes
350 SET attribute_defined_flag = p_attr_defined_flag,
351 object_version_number = object_version_number + 1
352 WHERE object_type = p_object_type
353 AND object_id = p_object_id
354 AND object_attribute = p_attr;
355 end if;
356
357
358 IF FND_API.to_boolean(p_commit) THEN
359 COMMIT;
360 END IF;
361
362 AMS_Utility_PVT.debug_message(l_full_name ||': End');
363
364 FND_MSG_PUB.count_and_get(
365 p_encoded => FND_API.g_false,
366 p_count => x_msg_count,
367 p_data => x_msg_data
368 );
369
370 EXCEPTION
371
372 WHEN FND_API.g_exc_error THEN
373 ROLLBACK TO modify_object_attribute;
374 x_return_status := FND_API.g_ret_sts_error;
375 FND_MSG_PUB.count_and_get(
376 p_encoded => FND_API.g_false,
377 p_count => x_msg_count,
378 p_data => x_msg_data
379 );
380
381 WHEN FND_API.g_exc_unexpected_error THEN
382 ROLLBACK TO modify_object_attribute;
383 x_return_status := FND_API.g_ret_sts_unexp_error ;
384 FND_MSG_PUB.count_and_get(
385 p_encoded => FND_API.g_false,
386 p_count => x_msg_count,
387 p_data => x_msg_data
388 );
389
390
391 WHEN OTHERS THEN
392 ROLLBACK TO modify_object_attribute;
393 x_return_status := FND_API.g_ret_sts_unexp_error ;
394
395 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
396 THEN
397 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
398 END IF;
399
400 FND_MSG_PUB.count_and_get(
401 p_encoded => FND_API.g_false,
402 p_count => x_msg_count,
403 p_data => x_msg_data
404 );
405
406 END modify_object_attribute;
407
408
409 -----------------------------------------------------------------------
410 -- FUNCTION
411 -- check_object_attribute
412 -- HISTORY
413 -- 05/08/2000 holiu Created.
414 -----------------------------------------------------------------------
415 FUNCTION check_object_attribute(
416 p_obj_type IN VARCHAR2,
417 p_obj_id IN NUMBER,
418 p_attribute IN VARCHAR2
419 )
420 RETURN VARCHAR2 --FND_API.g_true/g_false
421 IS
422
423 l_dummy NUMBER;
424
425 CURSOR c_object_attr IS
426 SELECT 1
427 FROM DUAL
428 WHERE EXISTS (
429 SELECT 1
430 FROM ams_object_attributes
431 WHERE object_type = p_obj_type
432 AND object_id = p_obj_id
433 AND object_attribute = p_attribute);
434
435 BEGIN
436
437 OPEN c_object_attr;
438 FETCH c_object_attr INTO l_dummy;
439 CLOSE c_object_attr;
440
441 IF l_dummy IS NULL THEN
442 RETURN FND_API.g_false;
443 ELSE
444 RETURN FND_API.g_true;
445 END IF;
446
447 END check_object_attribute;
448
449
450 END AMS_ObjectAttribute_PVT;