1 PACKAGE BODY CSM_PROFILE_PKG AS
2 /* $Header: csmuprfb.pls 120.9.12020000.2 2013/04/09 11:05:18 saradhak ship $ */
3
4 -- MODIFICATION HISTORY
5 -- Person Date Comments
6 -- Melvin P 04/30/02 Base creation
7 -- --------- ------ ------------------------------------------
8 -- Enter procedure, function bodies as shown below
9
10 v_DefaultStatusResponsibility number;
11 v_CurrentUser varchar2(30);
12
13 G_RESP_LEVEL_ID CONSTANT NUMBER := 10003;
14 G_USER_LEVEL_ID CONSTANT NUMBER := 10004;
15
16 Function value_specific(p_profile_option_name in varchar2,
17 p_user_id in fnd_user.user_id%type,
18 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
19 p_application_id fnd_application.application_id%type default null)
20 return varchar2
21 is
22 l_retvalue varchar2(255);
23 l_user_id fnd_user.user_id%type;
24 l_responsibility_id fnd_user_resp_groups.responsibility_id%type;
25 l_application_id fnd_application.application_id%type;
26
27 -- will always return 1 row as of now for a publication
28 cursor l_resp_app_id_csr(c_user_id NUMBER)
29 is
30 SELECT responsibility_id,app_id
31 FROM asg_user
32 WHERE user_id = c_user_id;
33
34
35 begin
36 -- initialize the user_id and the application_id
37 l_user_id := p_user_id;
38
39 -- R12 get the responsibility_id and application_id for the publication
40 open l_resp_app_id_csr(l_user_id);
41 fetch l_resp_app_id_csr into l_responsibility_id,l_application_id;
42 close l_resp_app_id_csr;
43
44 if p_application_id is not null THEN
45 l_application_id := p_application_id;
46 end if;
47
48 if p_responsibility_id is not null then
49 l_responsibility_id := p_responsibility_id;
50 end if;
51
52 l_retvalue := fnd_profile.value_specific(p_profile_option_name, l_user_id,
53 l_responsibility_id, l_application_id);
54
55 return l_retvalue;
56 end value_specific;
57
58 function get_master_organization_id (p_user_id in fnd_user.user_id%type,
59 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
60 p_application_id fnd_application.application_id%type default null)
61 return number
62 IS
63 begin
64 -- return fnd_profile.value('ASO_PRODUCT_ORGANIZATION_ID');
65 return value_specific('ASO_PRODUCT_ORGANIZATION_ID', p_user_id,
66 p_responsibility_id, p_application_id);
67 end get_master_organization_id;
68
69 function get_service_validation_org(p_user_id in fnd_user.user_id%type,
70 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
71 p_application_id fnd_application.application_id%type default null)
72 return number
73 IS
74 l_profile_option_value NUMBER;
75
76 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
77 SELECT acc.profile_option_value
78 FROM csm_profile_option_values_acc acc,
79 fnd_profile_options po
80 WHERE acc.user_id = p_user_id
81 AND acc.profile_option_id = po.profile_option_id
82 AND po.profile_option_name = 'CS_INV_VALIDATION_ORG';
83
84 BEGIN
85 -- get profile option from acc table to improve performance
86 OPEN l_profile_opt_value_csr(p_user_id);
87 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
88 IF l_profile_opt_value_csr%FOUND THEN
89 CLOSE l_profile_opt_value_csr;
90 RETURN l_profile_option_value;
91 END IF;
92 CLOSE l_profile_opt_value_csr;
93
94 return value_specific('CS_INV_VALIDATION_ORG', p_user_id,
95 p_responsibility_id, p_application_id);
96 end get_service_validation_org;
97
98 function get_organization_id(p_user_id in fnd_user.user_id%type,
99 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
100 p_application_id fnd_application.application_id%type default null)
101 return number
102 IS
103 l_profile_option_value NUMBER;
104
105 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
106 SELECT acc.profile_option_value
107 FROM csm_profile_option_values_acc acc,
108 fnd_profile_options po
109 WHERE acc.user_id = p_user_id
110 AND acc.profile_option_id = po.profile_option_id
111 AND po.profile_option_name = 'CS_INV_VALIDATION_ORG';
112
113 BEGIN
114 -- get profile option from acc table to improve performance
115 OPEN l_profile_opt_value_csr(p_user_id);
116 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
117 IF l_profile_opt_value_csr%FOUND THEN
118 CLOSE l_profile_opt_value_csr;
119 RETURN l_profile_option_value;
120 END IF;
121 CLOSE l_profile_opt_value_csr;
122
123 return value_specific('CS_INV_VALIDATION_ORG', p_user_id,
124 p_responsibility_id, p_application_id);
125 end get_organization_id;
126
127 Function get_category_set_id(p_user_id fnd_user.user_id%type,
128 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
129 p_application_id fnd_application.application_id%type default null
130 )
131 return number
132 IS
133 l_profile_option_value NUMBER;
134
135 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
136 SELECT acc.profile_option_value
137 FROM csm_profile_option_values_acc acc,
138 fnd_profile_options po
139 WHERE acc.user_id = p_user_id
140 AND acc.profile_option_id = po.profile_option_id
141 AND po.profile_option_name = 'CSM_ITEM_CATEGORY_SET_FILTER';
142
143 BEGIN
144 -- get profile option from acc table to improve performance
145 OPEN l_profile_opt_value_csr(p_user_id);
146 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
147 IF l_profile_opt_value_csr%FOUND THEN
148 CLOSE l_profile_opt_value_csr;
149 RETURN l_profile_option_value;
150 END IF;
151 CLOSE l_profile_opt_value_csr;
152
153 return value_specific('CSM_ITEM_CATEGORY_SET_FILTER', p_user_id,
154 p_responsibility_id, p_application_id);
155 END get_category_set_id;
156
157 Function get_category_id(p_user_id fnd_user.user_id%type,
158 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
159 p_application_id fnd_application.application_id%type default null
160 )
161 return number
162 IS
163 l_profile_option_value NUMBER;
164
165 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
166 SELECT acc.profile_option_value
167 FROM csm_profile_option_values_acc acc,
168 fnd_profile_options po
169 WHERE acc.user_id = p_user_id
170 AND acc.profile_option_id = po.profile_option_id
171 AND po.profile_option_name = 'CSM_ITEM_CATEGORY_FILTER';
172
173 BEGIN
174 -- get profile option from acc table to improve performance
175 OPEN l_profile_opt_value_csr(p_user_id);
176 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
177 IF l_profile_opt_value_csr%FOUND THEN
178 CLOSE l_profile_opt_value_csr;
179 RETURN l_profile_option_value;
180 END IF;
181 CLOSE l_profile_opt_value_csr;
182
183 return value_specific('CSM_ITEM_CATEGORY_FILTER', p_user_id,
184 p_responsibility_id, p_application_id);
185 END get_category_id;
186
187 Function get_history_count(p_user_id fnd_user.user_id%type,
188 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
189 p_application_id fnd_application.application_id%type default null
190 )
191 return NUMBER
192 IS
193 l_profile_option_value NUMBER;
194
195 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
196 SELECT NVL(acc.profile_option_value,0)
197 FROM csm_profile_option_values_acc acc,
198 fnd_profile_options po
199 WHERE acc.user_id = p_user_id
200 AND acc.profile_option_id = po.profile_option_id
201 AND po.profile_option_name = 'CSM_HISTORY_COUNT';
202
203 BEGIN
204 -- get profile option from acc table to improve performance
205 OPEN l_profile_opt_value_csr(p_user_id);
206 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
207 IF l_profile_opt_value_csr%FOUND THEN
208 CLOSE l_profile_opt_value_csr;
209 RETURN round(l_profile_option_value);
210 END IF;
211 CLOSE l_profile_opt_value_csr;
212
213 l_profile_option_value := value_specific('CSM_HISTORY_COUNT', p_user_id,
214 p_responsibility_id, p_application_id);
215
216 RETURN round(NVL(l_profile_option_value,0));
217 EXCEPTION
218 WHEN OTHERS THEN
219 RETURN 0;
220 END get_history_count;
221
222 function get_org_id(p_user_id in fnd_user.user_id%type,
223 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
224 p_application_id fnd_application.application_id%type default null)
225 return number
226 is
227 begin
228 return value_specific('CS_SR_ORG_ID', p_user_id, p_responsibility_id,
229 p_application_id);
230 end get_org_id;
231
232 function GetProfileAt( x_name in varchar2
233 , x_user_id in number default null
234 , x_resp_id in number default null
235 , x_site_level in BOOLEAN default false )
236 return number
237 is
238 CURSOR c_profile ( p_profile_option_name VARCHAR2,
239 p_resp_level_value NUMBER,
240 p_user_level_value NUMBER
241 ) IS
242 SELECT val.profile_option_value
243 FROM fnd_profile_options opt,
244 fnd_profile_option_values val
245 WHERE NVL(opt.start_date_active, SYSDATE) <= SYSDATE
246 AND NVL(opt.end_date_active, SYSDATE) >= SYSDATE
247 AND opt.profile_option_name = p_profile_option_name
248 AND opt.application_id = val.application_id
249 AND opt.profile_option_id = val.profile_option_id
250 AND ( ( val.level_id = G_RESP_LEVEL_ID AND
251 val.level_value = p_resp_level_value
252 ) OR
253 ( val.level_id = G_USER_LEVEL_ID AND
254 val.level_value = p_user_level_value
255 )
256 )
257 ORDER BY val.level_id DESC;
258
259 l_profile_option_value VARCHAR2(240);
260 l_return_val NUMBER;
261
262 BEGIN
263 OPEN c_profile ( x_name,
264 x_resp_id,
265 x_user_id
266 );
267 FETCH c_profile INTO l_profile_option_value;
268 CLOSE c_profile;
269
270 l_return_val := TO_NUMBER( l_profile_option_value);
271 IF l_return_val IS NULL AND x_site_level = TRUE THEN
272 fnd_profile.GET(NAME => x_name, VAL => l_profile_option_value );
273 l_return_val := TO_NUMBER(l_profile_option_value);
274 END IF;
275 RETURN l_return_val;
276 end GetProfileAt;
277
278
279 function GetDefaultStatusResponsibility(p_user_id fnd_user.user_id%type) return number IS
280 BEGIN
281 -- commented for bug 3255962
282 -- IF v_CurrentUser <> nvl(ASG_BASE.get_user_name, csm_util_pkg.get_user_name(p_user_id)) THEN
283 -- v_CurrentUser := nvl(ASG_BASE.get_user_name, csm_util_pkg.get_user_name(p_user_id));
284 v_DefaultStatusResponsibility := GetProfileAt( x_name =>'CSF_STATUS_RESPONSIBILITY'
285 , x_user_id => nvl(ASG_BASE.get_user_Id, p_user_id)
286 , x_site_level => TRUE );
287 -- END IF;
288 return v_DefaultStatusResponsibility;
289 end GetDefaultStatusResponsibility;
290
291 Function get_change_completed_tasks (p_user_id in fnd_user.user_id%type,
292 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
293 p_application_id fnd_application.application_id%type default null)
294 return varchar2 IS
295 l_profile_option_value NUMBER;
296
297 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
298 SELECT acc.profile_option_value
299 FROM csm_profile_option_values_acc acc,
300 fnd_profile_options po
301 WHERE acc.user_id = p_user_id
302 AND acc.profile_option_id = po.profile_option_id
303 AND po.profile_option_name = 'CSF_M_CHANGE_COMPLETED_TASKS';
304
305 BEGIN
306 -- get profile option from acc table to improve performance
307 OPEN l_profile_opt_value_csr(p_user_id);
308 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
309 IF l_profile_opt_value_csr%FOUND THEN
310 CLOSE l_profile_opt_value_csr;
311 RETURN l_profile_option_value;
312 END IF;
313 CLOSE l_profile_opt_value_csr;
314
315 return value_specific('CSF_M_CHANGE_COMPLETED_TASKS', p_user_id,
316 p_responsibility_id, p_application_id);
317 end get_change_completed_tasks;
318
319 Function show_new_mail_only(p_user_id in fnd_user.user_id%type,
320 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
321 p_application_id fnd_application.application_id%type default null)
322 return varchar2 IS
323 l_profile_option_value NUMBER;
324
325 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
326 SELECT acc.profile_option_value
327 FROM csm_profile_option_values_acc acc,
328 fnd_profile_options po
329 WHERE acc.user_id = p_user_id
330 AND acc.profile_option_id = po.profile_option_id
331 AND po.profile_option_name = 'CSF_M_SHOW_NEW_MAIL_ONLY';
332
333 BEGIN
334 -- get profile option from acc table to improve performance
335 OPEN l_profile_opt_value_csr(p_user_id);
336 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
337 IF l_profile_opt_value_csr%FOUND THEN
338 CLOSE l_profile_opt_value_csr;
339 RETURN l_profile_option_value;
340 END IF;
341 CLOSE l_profile_opt_value_csr;
342
343 return value_specific('CSF_M_SHOW_NEW_MAIL_ONLY', p_user_id,
344 p_responsibility_id, p_application_id);
345 end show_new_mail_only;
346
347
348 Function get_task_history_days(p_user_id in fnd_user.user_id%type,
349 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
350 p_application_id fnd_application.application_id%type default null)
351 return number IS
352 l_profile_option_value NUMBER;
353
354 BEGIN
355 --this profile is not downloaded to client so it wont be there in acc..
356
357 l_profile_option_value := value_specific('CSM_PURGE_INTERVAL', p_user_id,
358 p_responsibility_id, p_application_id);
359
360 RETURN ROUND(NVL(l_profile_option_value,0));
361 EXCEPTION
362 WHEN OTHERS THEN
363 RETURN 0;
364 end get_task_history_days;
365
366 Function get_max_attachment_size(p_user_id fnd_user.user_id%type,
367 p_responsibility_id fnd_user_resp_groups.responsibility_id%type default null,
368 p_application_id fnd_application.application_id%type default null
369 )
370 return NUMBER
371 IS
372 l_profile_option_value NUMBER;
373
374 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
375 SELECT acc.profile_option_value
376 FROM csm_profile_option_values_acc acc,
377 fnd_profile_options po
378 WHERE acc.user_id = p_user_id
379 AND acc.profile_option_id = po.profile_option_id
380 AND po.profile_option_name = 'CSM_MAX_ATTACHMENT_SIZE';
381
382 BEGIN
383 -- get profile option from acc table to improve performance
384 OPEN l_profile_opt_value_csr(p_user_id);
385 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
386 IF l_profile_opt_value_csr%FOUND THEN
387 CLOSE l_profile_opt_value_csr;
388 RETURN l_profile_option_value;
389 END IF;
390 CLOSE l_profile_opt_value_csr;
391
392 return value_specific('CSM_MAX_ATTACHMENT_SIZE', p_user_id,
393 p_responsibility_id, p_application_id);
394 END get_max_attachment_size;
395
396 FUNCTION get_max_ib_at_location(p_user_id fnd_user.user_id%TYPE,
397 p_responsibility_id fnd_user_resp_groups.responsibility_id%TYPE DEFAULT NULL,
398 p_application_id fnd_application.application_id%TYPE DEFAULT NULL
399 )
400 RETURN NUMBER
401 IS
402 l_profile_option_value NUMBER;
403
404 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
405 SELECT NVL(acc.profile_option_value,0)
406 FROM csm_profile_option_values_acc acc,
407 fnd_profile_options po
408 WHERE acc.user_id = p_user_id
409 AND acc.profile_option_id = po.profile_option_id
410 AND po.profile_option_name = 'CSM_IB_ITEMS_AT_LOCATION';
411
412 BEGIN
413 -- get profile option from acc table to improve performance
414 OPEN l_profile_opt_value_csr(p_user_id);
415 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
416 IF l_profile_opt_value_csr%FOUND THEN
417 CLOSE l_profile_opt_value_csr;
418 RETURN ROUND(l_profile_option_value);
419 END IF;
420 CLOSE l_profile_opt_value_csr;
421
422 l_profile_option_value := value_specific('CSM_IB_ITEMS_AT_LOCATION', p_user_id,
423 p_responsibility_id, p_application_id);
424
425 RETURN ROUND(NVL(l_profile_option_value,0));
426 EXCEPTION
427 WHEN OTHERS THEN
428 RETURN 0;
429 END get_max_ib_at_location;
430
431 FUNCTION get_max_readings_per_counter(p_user_id fnd_user.user_id%TYPE,
432 p_responsibility_id fnd_user_resp_groups.responsibility_id%TYPE DEFAULT NULL,
433 p_application_id fnd_application.application_id%TYPE DEFAULT NULL
434 )
435 RETURN NUMBER
436 IS
437 l_profile_option_value NUMBER;
438
439 CURSOR l_profile_opt_value_csr(p_userid IN NUMBER) IS
440 SELECT NVL(acc.profile_option_value,3) -- download just 3 readings if profile is not set
441 FROM csm_profile_option_values_acc acc,
442 fnd_profile_options po
443 WHERE acc.user_id = p_user_id
444 AND acc.profile_option_id = po.profile_option_id
445 AND po.profile_option_name = 'CSM_MAX_READINGS_PER_COUNTER';
446
447 BEGIN
448 -- get profile option from acc table to improve performance
449 OPEN l_profile_opt_value_csr(p_user_id);
450 FETCH l_profile_opt_value_csr INTO l_profile_option_value;
451 IF l_profile_opt_value_csr%FOUND THEN
452 CLOSE l_profile_opt_value_csr;
453 RETURN l_profile_option_value;
454 END IF;
455 CLOSE l_profile_opt_value_csr;
456
457 l_profile_option_value := value_specific('CSM_MAX_READINGS_PER_COUNTER', p_user_id,
458 p_responsibility_id, p_application_id);
459
460 -- if profile is not set, download only 3 readings for performance
461 RETURN ROUND(NVL(l_profile_option_value,3));
462
463 EXCEPTION
464 WHEN OTHERS THEN
465 RETURN 0;
466 END get_max_readings_per_counter;
467
468 FUNCTION Get_Route_Data_To_Owner(p_user_id fnd_user.user_id%TYPE DEFAULT NULL,
469 p_responsibility_id fnd_user_resp_groups.responsibility_id%TYPE DEFAULT NULL,
470 p_application_id fnd_application.application_id%TYPE DEFAULT NULL
471 )
472 RETURN VARCHAR2
473 IS
474 l_profile_option_value VARCHAR2(1);
475
476 BEGIN
477 l_profile_option_value := value_specific('CSM_DATA_ROUTED_TO_GRP_OWNER', p_user_id,
478 p_responsibility_id, p_application_id);
479 -- if profile is not set then return 'N'
480 RETURN NVL(l_profile_option_value,'N');
481
482 EXCEPTION
483 WHEN OTHERS THEN
484 RETURN 'N';
485 END Get_Route_Data_To_Owner;
486
487 --This function is used by Mobile Query and should not be used by others.
488 --The function gets the profile value for csm mobile query schema directly from the base table
489 --without using FND API
490
491 FUNCTION Get_Mobile_Query_Schema( p_responsibility_id fnd_user_resp_groups.responsibility_id%TYPE DEFAULT NULL
492 )
493 RETURN VARCHAR2
494 IS
495 l_profile_option_value VARCHAR2(255) := NULL;
496 l_profile_option_NAME VARCHAR2(255) := 'CSM_MOBILE_QUERY_SCHEMA';
497
498 CURSOR c_get_resp_value (c_resp_id NUMBER)
499 IS
500 SELECT val.PROFILE_OPTION_VALUE
501 FROM FND_PROFILE_OPTION_VALUES val,
502 FND_PROFILE_OPTIONS prf
503 WHERE prf.PROFILE_OPTION_ID = val.PROFILE_OPTION_ID
504 AND prf.PROFILE_OPTION_NAME = 'CSM_MOBILE_QUERY_SCHEMA'
505 AND LEVEL_ID = 10003
506 AND LEVEL_VALUE = c_resp_id;
507
508 CURSOR c_get_site_value
509 IS
510 SELECT val.PROFILE_OPTION_VALUE
511 FROM FND_PROFILE_OPTION_VALUES val,
512 FND_PROFILE_OPTIONS prf
513 WHERE prf.PROFILE_OPTION_ID = val.PROFILE_OPTION_ID
514 AND prf.PROFILE_OPTION_NAME = 'CSM_MOBILE_QUERY_SCHEMA'
515 AND LEVEL_ID = 10001
516 AND LEVEL_VALUE = 0;
517
518 BEGIN
519
520 IF p_responsibility_id IS NOT NULL THEN
521 OPEN c_get_resp_value (p_responsibility_id);
522 FETCH c_get_resp_value INTO l_profile_option_value;
523 CLOSE c_get_resp_value;
524 ELSE
525 OPEN c_get_site_value;
526 FETCH c_get_site_value INTO l_profile_option_value;
527 CLOSE c_get_site_value;
528 END IF;
529
530 -- if profile is not set then return Null
531 RETURN l_profile_option_value;
532
533 EXCEPTION
534 WHEN OTHERS THEN
535 RETURN NULL;
536 END Get_Mobile_Query_Schema;
537
538 FUNCTION Get_download_inventory_flag(p_user_id fnd_user.user_id%TYPE DEFAULT NULL,
539 p_responsibility_id fnd_user_resp_groups.responsibility_id%TYPE DEFAULT NULL,
540 p_application_id fnd_application.application_id%TYPE DEFAULT NULL
541 )
542 RETURN VARCHAR2
543 IS
544 l_profile_option_value VARCHAR2(255) := NULL;
545 l_profile_option_NAME VARCHAR2(255) := 'CSM_DWLD_ORG_LEVEL_INV';
546 l_user_id NUMBER;
547 l_responsibility_id NUMBER;
548 l_application_id NUMBER;
549
550 CURSOR l_get_resp_id
551 IS
552 SELECT resp.APPLICATION_ID, resp.RESPONSIBILITY_ID
553 FROM FND_RESPONSIBILITY resp, fnd_application app
554 WHERE resp.RESPONSIBILITY_KEY = 'OMFS_PALM'
555 AND SYSDATE BETWEEN nvl(resp.start_date, sysdate) AND nvl(resp.end_date, sysdate)
556 AND app.application_id = resp.application_id
557 AND app.application_short_name = 'CSM';
558
559 BEGIN
560 l_user_id := p_user_id;
561 l_responsibility_id := p_responsibility_id;
562 l_application_id := p_application_id;
563 IF p_responsibility_id IS NULL AND p_application_id IS NULL THEN
564
565 OPEN l_get_resp_id;
566 FETCH l_get_resp_id INTO l_application_id,l_responsibility_id;
567 CLOSE l_get_resp_id;
568
569 END IF;
570
571 l_profile_option_value := fnd_profile.value_specific(l_profile_option_NAME, l_user_id,
572 l_responsibility_id, l_application_id);
573 -- if profile is not set then return Null
574 RETURN l_profile_option_value;
575
576 EXCEPTION
577 WHEN OTHERS THEN
578 RETURN NULL;
579 END Get_download_inventory_flag;
580
581 END CSM_PROFILE_PKG;