DBA Data[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;