DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_UM_SUBSCRIPTIONS_PKG

Source


1 package body JTF_UM_SUBSCRIPTIONS_PKG as
2 /* $Header: JTFUMSBB.pls 120.4 2006/01/16 01:26:40 vimohan ship $ */
3 MODULE_NAME  CONSTANT VARCHAR2(50) := 'JTF.UM.PLSQL.JTF_UM_SUBSCRIPTIONS_PKG';
4 l_is_debug_parameter_on boolean := JTF_DEBUG_PUB.IS_LOG_PARAMETERS_ON(MODULE_NAME);
5 
6 procedure INSERT_ROW (
7   X_SUBSCRIPTION_ID out NOCOPY NUMBER,
8   X_APPLICATION_ID in NUMBER,
9   X_EFFECTIVE_START_DATE in DATE,
10   X_SUBSCRIPTION_KEY in VARCHAR2,
11   X_ENABLED_FLAG in VARCHAR2,
12   X_EFFECTIVE_END_DATE in DATE,
13   X_APPROVAL_ID in NUMBER,
14   X_PARENT_SUBSCRIPTION_ID in NUMBER,
15   X_AVAILABILITY_CODE in VARCHAR2,
16   X_LOGON_DISPLAY_FREQUENCY in NUMBER,
17   X_SUBSCRIPTION_NAME in VARCHAR2,
18   X_DESCRIPTION in VARCHAR2,
19   X_CREATION_DATE in DATE,
20   X_CREATED_BY in NUMBER,
21   X_LAST_UPDATE_DATE in DATE,
22   X_LAST_UPDATED_BY in NUMBER,
23   X_LAST_UPDATE_LOGIN in NUMBER,
24   X_AUTH_DELEGATION_ROLE_ID in NUMBER
25   )
26  is
27   cursor C is select ROWID from JTF_UM_SUBSCRIPTIONS_B
28     where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
29     ;
30 
31 begin
32   insert into JTF_UM_SUBSCRIPTIONS_B (
33     APPLICATION_ID,
34     EFFECTIVE_START_DATE,
35     SUBSCRIPTION_ID,
36     SUBSCRIPTION_KEY,
37     ENABLED_FLAG,
38     EFFECTIVE_END_DATE,
39     APPROVAL_ID,
40     PARENT_SUBSCRIPTION_ID,
41     AVAILABILITY_CODE,
42     LOGON_DISPLAY_FREQUENCY,
43     CREATION_DATE,
44     CREATED_BY,
45     LAST_UPDATE_DATE,
46     LAST_UPDATED_BY,
47     LAST_UPDATE_LOGIN,
48     AUTH_DELEGATION_ROLE_ID
49   ) values (
50     X_APPLICATION_ID,
51     X_EFFECTIVE_START_DATE,
52     JTF_UM_SUBSCRIPTIONS_B_S.NEXTVAL,
53     X_SUBSCRIPTION_KEY,
54     X_ENABLED_FLAG,
55     X_EFFECTIVE_END_DATE,
56     X_APPROVAL_ID,
57     X_PARENT_SUBSCRIPTION_ID,
58     X_AVAILABILITY_CODE,
59     X_LOGON_DISPLAY_FREQUENCY,
60     X_CREATION_DATE,
61     X_CREATED_BY,
62     X_LAST_UPDATE_DATE,
63     X_LAST_UPDATED_BY,
64     X_LAST_UPDATE_LOGIN,
65     X_AUTH_DELEGATION_ROLE_ID
66   )RETURNING SUBSCRIPTION_ID INTO X_SUBSCRIPTION_ID;
67 
68   insert into JTF_UM_SUBSCRIPTIONS_TL (
69     LAST_UPDATED_BY,
70     CREATION_DATE,
71     CREATED_BY,
72     LAST_UPDATE_LOGIN,
73     LAST_UPDATE_DATE,
74     DESCRIPTION,
75     APPLICATION_ID,
76     SUBSCRIPTION_ID,
77     SUBSCRIPTION_NAME,
78     LANGUAGE,
79     SOURCE_LANG
80   ) select
81     X_LAST_UPDATED_BY,
82     X_CREATION_DATE,
83     X_CREATED_BY,
84     X_LAST_UPDATE_LOGIN,
85     X_LAST_UPDATE_DATE,
86     X_DESCRIPTION,
87     X_APPLICATION_ID,
88     X_SUBSCRIPTION_ID,
89     X_SUBSCRIPTION_NAME,
90     L.LANGUAGE_CODE,
91     userenv('LANG')
92   from FND_LANGUAGES L
93   where L.INSTALLED_FLAG in ('I', 'B')
94   and not exists
95     (select NULL
96     from JTF_UM_SUBSCRIPTIONS_TL T
97     where T.SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
98     and T.LANGUAGE = L.LANGUAGE_CODE);
99 
100   open c;
101   if (c%notfound) then
102     close c;
103     raise no_data_found;
104   end if;
105   close c;
106 
107 end INSERT_ROW;
108 
109 procedure LOCK_ROW (
110   X_SUBSCRIPTION_ID in NUMBER,
111   X_APPLICATION_ID in NUMBER,
112   X_EFFECTIVE_START_DATE in DATE,
113   X_SUBSCRIPTION_KEY in VARCHAR2,
114   X_ENABLED_FLAG in VARCHAR2,
115   X_EFFECTIVE_END_DATE in DATE,
116   X_APPROVAL_ID in NUMBER,
117   X_PARENT_SUBSCRIPTION_ID in NUMBER,
118   X_AVAILABILITY_CODE in VARCHAR2,
119   X_LOGON_DISPLAY_FREQUENCY in NUMBER,
120   X_SUBSCRIPTION_NAME in VARCHAR2,
121   X_DESCRIPTION in VARCHAR2,
122   X_AUTH_DELEGATION_ROLE_ID in NUMBER
123 ) is
124   cursor c is select
125       APPLICATION_ID,
126       EFFECTIVE_START_DATE,
127       SUBSCRIPTION_KEY,
128       ENABLED_FLAG,
129       EFFECTIVE_END_DATE,
130       APPROVAL_ID,
131       PARENT_SUBSCRIPTION_ID,
132       AVAILABILITY_CODE,
133       LOGON_DISPLAY_FREQUENCY,
134       AUTH_DELEGATION_ROLE_ID
135     from JTF_UM_SUBSCRIPTIONS_B
136     where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
137     for update of SUBSCRIPTION_ID nowait;
138   recinfo c%rowtype;
139 
140   cursor c1 is select
141       SUBSCRIPTION_NAME,
142       DESCRIPTION,
143       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
144     from JTF_UM_SUBSCRIPTIONS_TL
145     where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
146     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
147     for update of SUBSCRIPTION_ID nowait;
148 begin
149   open c;
150   fetch c into recinfo;
151   if (c%notfound) then
152     close c;
153     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
154     app_exception.raise_exception;
155   end if;
156   close c;
157   if (    (recinfo.APPLICATION_ID = X_APPLICATION_ID)
158       AND (recinfo.EFFECTIVE_START_DATE = X_EFFECTIVE_START_DATE)
159       AND (recinfo.SUBSCRIPTION_KEY = X_SUBSCRIPTION_KEY)
160       AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
161       AND ((recinfo.EFFECTIVE_END_DATE = X_EFFECTIVE_END_DATE)
162            OR ((recinfo.EFFECTIVE_END_DATE is null) AND (X_EFFECTIVE_END_DATE is null)))
163       AND ((recinfo.APPROVAL_ID = X_APPROVAL_ID)
164            OR ((recinfo.APPROVAL_ID is null) AND (X_APPROVAL_ID is null)))
165       AND ((recinfo.PARENT_SUBSCRIPTION_ID = X_PARENT_SUBSCRIPTION_ID)
166            OR ((recinfo.PARENT_SUBSCRIPTION_ID is null) AND (X_PARENT_SUBSCRIPTION_ID is null)))
167       AND ((recinfo.AVAILABILITY_CODE = X_AVAILABILITY_CODE)
168            OR ((recinfo.AVAILABILITY_CODE is null) AND (X_AVAILABILITY_CODE is null)))
169       AND ((recinfo.LOGON_DISPLAY_FREQUENCY = X_LOGON_DISPLAY_FREQUENCY)
170            OR ((recinfo.LOGON_DISPLAY_FREQUENCY is null) AND (X_LOGON_DISPLAY_FREQUENCY is null)))
171   ) then
172     null;
173   else
174     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
175     app_exception.raise_exception;
176   end if;
177 
178   for tlinfo in c1 loop
179     if (tlinfo.BASELANG = 'Y') then
180       if (    (tlinfo.SUBSCRIPTION_NAME = X_SUBSCRIPTION_NAME)
181           AND (tlinfo.DESCRIPTION = X_DESCRIPTION)
182       ) then
183         null;
184       else
185         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
186         app_exception.raise_exception;
187       end if;
188     end if;
189   end loop;
190   return;
191 end LOCK_ROW;
192 
193 procedure UPDATE_ROW (
194   X_SUBSCRIPTION_ID in NUMBER,
195   X_APPLICATION_ID in NUMBER,
196   X_SUBSCRIPTION_KEY in VARCHAR2,
197   X_ENABLED_FLAG in VARCHAR2,
198   X_EFFECTIVE_END_DATE in DATE,
199   X_APPROVAL_ID in NUMBER,
200   X_PARENT_SUBSCRIPTION_ID in NUMBER,
201   X_AVAILABILITY_CODE in VARCHAR2,
202   X_LOGON_DISPLAY_FREQUENCY in NUMBER,
203   X_SUBSCRIPTION_NAME in VARCHAR2,
204   X_DESCRIPTION in VARCHAR2,
205   X_LAST_UPDATE_DATE in DATE,
206   X_LAST_UPDATED_BY in NUMBER,
207   X_LAST_UPDATE_LOGIN in NUMBER,
208   X_AUTH_DELEGATION_ROLE_ID in NUMBER
209 ) is
210 begin
211   update JTF_UM_SUBSCRIPTIONS_B set
212     APPLICATION_ID = X_APPLICATION_ID,
213     SUBSCRIPTION_KEY = X_SUBSCRIPTION_KEY,
214     ENABLED_FLAG = X_ENABLED_FLAG,
215     EFFECTIVE_END_DATE = X_EFFECTIVE_END_DATE,
216     APPROVAL_ID = X_APPROVAL_ID,
217     PARENT_SUBSCRIPTION_ID = X_PARENT_SUBSCRIPTION_ID,
218     AVAILABILITY_CODE = X_AVAILABILITY_CODE,
219     LOGON_DISPLAY_FREQUENCY = X_LOGON_DISPLAY_FREQUENCY,
220     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
221     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
222     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
223     AUTH_DELEGATION_ROLE_ID = X_AUTH_DELEGATION_ROLE_ID
224   where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
225 
226   if (sql%notfound) then
227     raise no_data_found;
228   end if;
229 
230   update JTF_UM_SUBSCRIPTIONS_TL set
231     SUBSCRIPTION_NAME = X_SUBSCRIPTION_NAME,
232     DESCRIPTION = X_DESCRIPTION,
233     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
234     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
235     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
236     SOURCE_LANG = userenv('LANG')
237   where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
238   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
239 
240   if (sql%notfound) then
241     raise no_data_found;
242   end if;
243 end UPDATE_ROW;
244 
245 procedure DELETE_ROW (
246   X_SUBSCRIPTION_ID in NUMBER
247 ) is
248 begin
249   delete from JTF_UM_SUBSCRIPTIONS_TL
250   where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
251 
252   if (sql%notfound) then
253     raise no_data_found;
254   end if;
255 
256   delete from JTF_UM_SUBSCRIPTIONS_B
257   where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
258 
259   if (sql%notfound) then
260     raise no_data_found;
261   end if;
262 end DELETE_ROW;
263 
264 procedure ADD_LANGUAGE
265 is
266 begin
267   delete from JTF_UM_SUBSCRIPTIONS_TL T
268   where not exists
269     (select NULL
270     from JTF_UM_SUBSCRIPTIONS_B B
271     where B.SUBSCRIPTION_ID = T.SUBSCRIPTION_ID
272     );
273 
274   update JTF_UM_SUBSCRIPTIONS_TL T set (
275       SUBSCRIPTION_NAME,
276       DESCRIPTION
277     ) = (select
278       B.SUBSCRIPTION_NAME,
279       B.DESCRIPTION
280     from JTF_UM_SUBSCRIPTIONS_TL B
281     where B.SUBSCRIPTION_ID = T.SUBSCRIPTION_ID
282     and B.LANGUAGE = T.SOURCE_LANG)
283   where (
284       T.SUBSCRIPTION_ID,
285       T.LANGUAGE
286   ) in (select
287       SUBT.SUBSCRIPTION_ID,
288       SUBT.LANGUAGE
289     from JTF_UM_SUBSCRIPTIONS_TL SUBB, JTF_UM_SUBSCRIPTIONS_TL SUBT
290     where SUBB.SUBSCRIPTION_ID = SUBT.SUBSCRIPTION_ID
291     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
292     and (SUBB.SUBSCRIPTION_NAME <> SUBT.SUBSCRIPTION_NAME
293       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
294   ));
295 
296   insert into JTF_UM_SUBSCRIPTIONS_TL (
297     LAST_UPDATED_BY,
298     CREATION_DATE,
299     CREATED_BY,
300     LAST_UPDATE_LOGIN,
301     LAST_UPDATE_DATE,
302     DESCRIPTION,
303     APPLICATION_ID,
304     SUBSCRIPTION_ID,
305     SUBSCRIPTION_NAME,
306     LANGUAGE,
307     SOURCE_LANG
308   ) select /*+ ORDERED */
309     B.LAST_UPDATED_BY,
310     B.CREATION_DATE,
311     B.CREATED_BY,
312     B.LAST_UPDATE_LOGIN,
313     B.LAST_UPDATE_DATE,
314     B.DESCRIPTION,
315     B.APPLICATION_ID,
316     B.SUBSCRIPTION_ID,
317     B.SUBSCRIPTION_NAME,
318     L.LANGUAGE_CODE,
319     B.SOURCE_LANG
320   from JTF_UM_SUBSCRIPTIONS_TL B, FND_LANGUAGES L
321   where L.INSTALLED_FLAG in ('I', 'B')
322   and B.LANGUAGE = userenv('LANG')
323   and not exists
324     (select NULL
325     from JTF_UM_SUBSCRIPTIONS_TL T
326     where T.SUBSCRIPTION_ID = B.SUBSCRIPTION_ID
327     and T.LANGUAGE = L.LANGUAGE_CODE);
328 end ADD_LANGUAGE;
329 
330 
331 --For this procedure, if SUBSCRIPTION_ID passed as input is NULL, then create a new record
332 -- otherwise, modify the existing record.
333 
334 procedure LOAD_ROW (
335     X_SUBSCRIPTION_ID        IN NUMBER,
336     X_EFFECTIVE_START_DATE   IN DATE,
337     X_EFFECTIVE_END_DATE     IN DATE,
338     X_OWNER                  IN VARCHAR2,
339     X_APPROVAL_ID	     IN NUMBER,
340     X_APPLICATION_ID         IN NUMBER,
341     X_ENABLED_FLAG           IN VARCHAR2,
342     X_PARENT_SUBSCRIPTION_ID IN NUMBER,
343     X_AVAILABILITY_CODE      IN VARCHAR2,
344     X_LOGON_DISPLAY_FREQUENCY IN NUMBER,
345     X_SUBSCRIPTION_KEY       IN VARCHAR2,
346     X_SUBSCRIPTION_NAME          IN VARCHAR2,
347     X_DESCRIPTION            IN VARCHAR2,
348     X_AUTH_DELEGATION_ROLE_ID IN NUMBER,
349     x_last_update_date       in varchar2 default NULL,
350     X_CUSTOM_MODE            in varchar2 default NULL
351 ) is
352         l_user_id NUMBER := fnd_load_util.owner_id(x_owner);
353         l_subscription_id NUMBER := 0;
354   f_luby    number;  -- entity owner in file
355   f_ludate  date;    -- entity update date in file
356   db_luby   number;  -- entity owner in db
357   db_ludate date;    -- entity update date in db
358 
359 begin
360   --      if (x_owner = 'SEED') then
361    --             l_user_id := 1;
362     --    end if;
363 
364 
365 	-- Translate owner to file_last_updated_by
366     f_luby := fnd_load_util.owner_id(x_owner);
367 
368     -- Translate char last_update_date to date
369     f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
370 
371         -- If SUBSCRIPTION_ID passed in NULL, insert the record
372         if ( X_SUBSCRIPTION_ID is NULL ) THEN
373            INSERT_ROW(
374 		X_SUBSCRIPTION_ID 	=> l_subscription_id,
375                 X_EFFECTIVE_START_DATE 	=> X_EFFECTIVE_START_DATE,
376 		X_EFFECTIVE_END_DATE 	=> X_EFFECTIVE_END_DATE,
377 		X_APPROVAL_ID 		=> X_APPROVAL_ID,
378 		X_APPLICATION_ID 	=> X_APPLICATION_ID,
379 		X_ENABLED_FLAG 		=> X_ENABLED_FLAG,
380 		X_PARENT_SUBSCRIPTION_ID => X_PARENT_SUBSCRIPTION_ID,
381 		X_AVAILABILITY_CODE	=> X_AVAILABILITY_CODE,
382 		X_LOGON_DISPLAY_FREQUENCY => X_LOGON_DISPLAY_FREQUENCY,
383 		X_SUBSCRIPTION_KEY	=> X_SUBSCRIPTION_KEY,
384 		X_SUBSCRIPTION_NAME	=> X_SUBSCRIPTION_NAME,
385 		X_DESCRIPTION		=> X_DESCRIPTION,
386                 X_CREATION_DATE         => f_ludate,
387                 X_CREATED_BY            => f_luby,
388                 X_LAST_UPDATE_DATE      => f_ludate,
389                 X_LAST_UPDATED_BY       => f_luby,
390                 X_LAST_UPDATE_LOGIN     => l_user_id,
391                 X_AUTH_DELEGATION_ROLE_ID => X_AUTH_DELEGATION_ROLE_ID
392              );
393           else
394               -- This select stmnt also checks if
395               -- there is a row for this app_id and this app_short_name
396               -- Exception is thrown otherwise.
397               select LAST_UPDATED_BY, LAST_UPDATE_DATE
398                 into db_luby, db_ludate
399                 FROM JTF_UM_SUBSCRIPTIONS_B
400                where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
401 
402               if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
403                                   db_ludate, X_CUSTOM_MODE)) then
404 
405                      UPDATE_ROW(
406                           X_SUBSCRIPTION_ID 	=> X_SUBSCRIPTION_ID,
407 		          X_EFFECTIVE_END_DATE 	=> X_EFFECTIVE_END_DATE,
408 		          X_APPROVAL_ID 		=> X_APPROVAL_ID,
409 		          X_APPLICATION_ID 	=> X_APPLICATION_ID,
410 		          X_ENABLED_FLAG 		=> X_ENABLED_FLAG,
411 		          X_PARENT_SUBSCRIPTION_ID => X_PARENT_SUBSCRIPTION_ID,
412 		          X_AVAILABILITY_CODE	=> X_AVAILABILITY_CODE,
413 		          X_LOGON_DISPLAY_FREQUENCY => X_LOGON_DISPLAY_FREQUENCY,
414 		          X_SUBSCRIPTION_KEY	=> X_SUBSCRIPTION_KEY,
415 		          X_SUBSCRIPTION_NAME	=> X_SUBSCRIPTION_NAME,
416 		          X_DESCRIPTION		=> X_DESCRIPTION,
417                           X_LAST_UPDATE_DATE      => f_ludate,
418                           X_LAST_UPDATED_BY       => f_luby,
419                           X_LAST_UPDATE_LOGIN     => l_user_id,
420                           X_AUTH_DELEGATION_ROLE_ID => X_AUTH_DELEGATION_ROLE_ID
421                        );
422 
423 	      end if;
424      end if;
425 
426 end LOAD_ROW;
427 
428 procedure TRANSLATE_ROW (
429   X_SUBSCRIPTION_ID in NUMBER, -- key field
430   X_SUBSCRIPTION_NAME in VARCHAR2, -- translated name
431   X_DESCRIPTION in VARCHAR2, -- translated description
432   X_OWNER in VARCHAR2, -- owner field
433   x_last_update_date       in varchar2 default NULL,
434   X_CUSTOM_MODE            in varchar2 default NULL
435 ) is
436   f_luby    number;  -- entity owner in file
437   f_ludate  date;    -- entity update date in file
438   db_luby   number;  -- entity owner in db
439   db_ludate date;    -- entity update date in db
440 begin
441 
442     -- Translate owner to file_last_updated_by
443     f_luby := fnd_load_util.owner_id(x_owner);
444 
445     -- Translate char last_update_date to date
446      f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
447 
448     -- This select stmnt also checks if
449     -- there is a row for this app_id and this app_short_name
450     -- Exception is thrown otherwise.
451       select LAST_UPDATED_BY, LAST_UPDATE_DATE
452       into db_luby, db_ludate
453       FROM JTF_UM_SUBSCRIPTIONS_TL
454       where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
455             and SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
456 
457     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
458                                   db_ludate, X_CUSTOM_MODE)) then
459           update JTF_UM_SUBSCRIPTIONS_TL set
460         	SUBSCRIPTION_NAME   = X_SUBSCRIPTION_NAME,
461         	DESCRIPTION       = X_DESCRIPTION,
462         	LAST_UPDATE_DATE  = f_ludate,
463         	LAST_UPDATED_BY   = f_luby,
464         	LAST_UPDATE_LOGIN = 0,
465         	SOURCE_LANG       = userenv('LANG')
466           where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
467   	        and SUBSCRIPTION_ID = X_SUBSCRIPTION_ID;
468     end if;
469 
470 end TRANSLATE_ROW;
471 
472 FUNCTION IS_TEMPLATE_ASSIGNED(X_SUBSCRIPTION_ID NUMBER, X_TEMPLATE_ID NUMBER) RETURN BOOLEAN IS
473 l_dummy NUMBER;
474 CURSOR C IS SELECT SUBSCRIPTION_ID FROM JTF_UM_SUBSCRIPTION_TMPL WHERE SUBSCRIPTION_ID = X_SUBSCRIPTION_ID AND TEMPLATE_ID = X_TEMPLATE_ID AND (EFFECTIVE_END_DATE IS NULL OR EFFECTIVE_END_DATE > SYSDATE);
475 begin
476 open c;
477    fetch c into l_dummy;
478     if(c%NOTFOUND) then
479        return (false);
480     else
481        return (true);
482     end if;
483 close c;
484 end IS_TEMPLATE_ASSIGNED;
485 
486 
487 procedure REMOVE_TEMPLATE_ASSIGNMENT(
488    X_SUBSCRIPTION_ID IN NUMBER
489 ) is
490 begin
491 
492    UPDATE JTF_UM_SUBSCRIPTION_TMPL SET
493    EFFECTIVE_END_DATE = SYSDATE,
494    LAST_UPDATED_BY=FND_GLOBAL.USER_ID,
495    LAST_UPDATE_DATE= SYSDATE
496    WHERE SUBSCRIPTION_ID = X_SUBSCRIPTION_ID ;
497 
498 end REMOVE_TEMPLATE_ASSIGNMENT;
499 
500 procedure CREATE_TEMPLATE_ASSIGNMENT(
501    X_SUBSCRIPTION_ID IN NUMBER,
502    X_TEMPLATE_ID IN NUMBER,
503    X_EFFECTIVE_START_DATE IN DATE DEFAULT SYSDATE,
504    X_EFFECTIVE_END_DATE IN DATE DEFAULT NULL,
505    X_CREATED_BY IN NUMBER DEFAULT FND_GLOBAL.USER_ID,
506    X_LAST_UPDATED_BY IN NUMBER DEFAULT FND_GLOBAL.USER_ID
507 ) is
508 begin
509 
510 INSERT INTO JTF_UM_SUBSCRIPTION_TMPL(
511             SUBSCRIPTION_ID,
512 	    TEMPLATE_ID,
513 	    EFFECTIVE_START_DATE,
514 	    EFFECTIVE_END_DATE,
515 	    CREATED_BY,
516 	    CREATION_DATE,
517 	    LAST_UPDATED_BY,
518 	    LAST_UPDATE_DATE)
519       VALUES(
520              X_SUBSCRIPTION_ID,
521 	     X_TEMPLATE_ID,
522 	     X_EFFECTIVE_START_DATE,
523 	     X_EFFECTIVE_END_DATE,
524 	     X_CREATED_BY,
525 	     SYSDATE,
526 	     X_LAST_UPDATED_BY,
527 	     SYSDATE
528 	     );
529 end CREATE_TEMPLATE_ASSIGNMENT;
530 
531 procedure ASSOCIATE_TEMPLATE(
532    X_SUBSCRIPTION_ID IN NUMBER,
533    X_TEMPLATE_ID IN NUMBER
534 ) is
535 begin
536 
537    IF NOT IS_TEMPLATE_ASSIGNED(X_SUBSCRIPTION_ID, X_TEMPLATE_ID) THEN
538       REMOVE_TEMPLATE_ASSIGNMENT(X_SUBSCRIPTION_ID);
539       CREATE_TEMPLATE_ASSIGNMENT(X_SUBSCRIPTION_ID, X_TEMPLATE_ID);
540    END IF;
541 
542 
543 end ASSOCIATE_TEMPLATE;
544 
545 procedure UPDATE_TEMPLATE_ASSIGNMENT(
546    X_SUBSCRIPTION_ID IN NUMBER,
547    X_TEMPLATE_ID IN NUMBER,
548    X_EFFECTIVE_START_DATE IN DATE,
549    X_EFFECTIVE_END_DATE IN DATE,
550    X_LAST_UPDATE_DATE IN DATE,
551    X_LAST_UPDATED_BY IN NUMBER,
552    X_LAST_UPDATE_LOGIN IN NUMBER
553 ) is
554 begin
555 	update JTF_UM_SUBSCRIPTION_TMPL
556 	set EFFECTIVE_END_DATE=X_EFFECTIVE_END_DATE,
557 	    LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
558 	    LAST_UPDATED_BY = X_LAST_UPDATED_BY,
559 	    LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
560 	where  SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
561 	and    TEMPLATE_ID = X_TEMPLATE_ID
562 	and    EFFECTIVE_START_DATE = X_EFFECTIVE_START_DATE;
563 
564 end UPDATE_TEMPLATE_ASSIGNMENT;
565 
566 procedure LOAD_SUBSCRIPTION_TMPL_ROW(
567     X_SUBSCRIPTION_ID        IN NUMBER,
568     X_TEMPLATE_ID            IN NUMBER,
569     X_EFFECTIVE_START_DATE   IN DATE,
570     X_EFFECTIVE_END_DATE     IN DATE,
571     X_OWNER                  IN VARCHAR2,
572     x_last_update_date       in varchar2 default NULL,
573     X_CUSTOM_MODE            in varchar2 default NULL
574 )
575 is
576         l_user_id NUMBER := fnd_load_util.owner_id(x_owner);
577         h_record_exists NUMBER := 0;
578   f_luby    number;  -- entity owner in file
579   f_ludate  date;    -- entity update date in file
580   db_luby   number;  -- entity owner in db
581   db_ludate date;    -- entity update date in db
582 
583 begin
584   --      if (x_owner = 'SEED') then
585    --             l_user_id := 1;
586     --    end if;
587 
588         select count(*)
589         into   h_record_exists
590         from   jtf_UM_SUBSCRIPTION_TMPL
591 	where  SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
592 	and    TEMPLATE_ID = X_TEMPLATE_ID
593 	and    EFFECTIVE_START_DATE = X_EFFECTIVE_START_DATE;
594 
595      -- Translate owner to file_last_updated_by
596     f_luby := fnd_load_util.owner_id(x_owner);
597 
598     -- Translate char last_update_date to date
599     f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
600 
601 
602 	-- TRY update, and if it fails, insert
603 
604           if ( h_record_exists = 0 ) then
605             CREATE_TEMPLATE_ASSIGNMENT(
606                 X_SUBSCRIPTION_ID       => X_SUBSCRIPTION_ID,
607                 X_TEMPLATE_ID           => X_TEMPLATE_ID,
608                 X_EFFECTIVE_START_DATE  => X_EFFECTIVE_START_DATE,
609                 X_EFFECTIVE_END_DATE    => X_EFFECTIVE_END_DATE,
610                 X_CREATED_BY            => f_luby,
611                 X_LAST_UPDATED_BY       => f_luby
612              );
613           else
614              -- This select stmnt also checks if
615              -- there is a row for this app_id and this app_short_name
616              -- Exception is thrown otherwise.
617              select LAST_UPDATED_BY, LAST_UPDATE_DATE
618                into db_luby, db_ludate
619                FROM JTF_UM_SUBSCRIPTION_TMPL
620               where SUBSCRIPTION_ID = X_SUBSCRIPTION_ID
621 	         and    TEMPLATE_ID = X_TEMPLATE_ID
622 	         and    EFFECTIVE_START_DATE = X_EFFECTIVE_START_DATE;
623 
624              if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
625                                   db_ludate, X_CUSTOM_MODE)) then
626 
627                     UPDATE_TEMPLATE_ASSIGNMENT(
628                          X_SUBSCRIPTION_ID       => X_SUBSCRIPTION_ID,
629                          X_TEMPLATE_ID           => X_TEMPLATE_ID,
630                          X_EFFECTIVE_START_DATE  => X_EFFECTIVE_START_DATE,
631 			 X_EFFECTIVE_END_DATE    => X_EFFECTIVE_END_DATE,
632 			 X_LAST_UPDATE_DATE      => f_ludate,
633                          X_LAST_UPDATED_BY       => f_luby,
634                          X_LAST_UPDATE_LOGIN     => l_user_id
635                       );
636              end if;
637     end if;
638 
639 end LOAD_SUBSCRIPTION_TMPL_ROW;
640 
641 
642 
643 procedure INSERT_SUBREG_ROW (
644   X_SUBSCRIPTION_ID in NUMBER,
645   X_LAST_APPROVER_COMMENT in VARCHAR2,
646   X_APPROVER_USER_ID in NUMBER,
647   X_EFFECTIVE_END_DATE in DATE,
648   X_WF_ITEM_TYPE in VARCHAR2,
649   X_EFFECTIVE_START_DATE in DATE,
650   X_SUBSCRIPTION_REG_ID out NOCOPY NUMBER,
651   X_USER_ID in NUMBER,
652   X_STATUS_CODE in VARCHAR2,
653   X_CREATION_DATE in DATE,
654   X_CREATED_BY in NUMBER,
655   X_LAST_UPDATE_DATE in DATE,
656   X_LAST_UPDATED_BY in NUMBER,
657   X_LAST_UPDATE_LOGIN in NUMBER,
658   X_GRANT_DELEGATION_FLAG in VARCHAR2
659 
660 ) is
661 begin
662   insert into JTF_UM_SUBSCRIPTION_REG (
663     LAST_APPROVER_COMMENT,
664     APPROVER_USER_ID,
665     EFFECTIVE_END_DATE,
666     WF_ITEM_TYPE,
667     EFFECTIVE_START_DATE,
668     SUBSCRIPTION_REG_ID,
669     SUBSCRIPTION_ID,
670     USER_ID,
671     STATUS_CODE,
672     CREATION_DATE,
673      CREATED_BY,
674     LAST_UPDATE_DATE,
675     LAST_UPDATED_BY,
676     LAST_UPDATE_LOGIN,
677     GRANT_DELEGATION_FLAG
678   ) values (
679     X_LAST_APPROVER_COMMENT,
680     X_APPROVER_USER_ID,
681     X_EFFECTIVE_END_DATE,
682     X_WF_ITEM_TYPE,
683     X_EFFECTIVE_START_DATE,
684     JTF_UM_UT_SUBSC_REG_S.NEXTVAL,
685     X_SUBSCRIPTION_ID,
686     X_USER_ID,
687     X_STATUS_CODE,
688     X_CREATION_DATE,
689     X_CREATED_BY,
690     X_LAST_UPDATE_DATE,
691     X_LAST_UPDATED_BY,
692     X_LAST_UPDATE_LOGIN,
693     X_GRANT_DELEGATION_FLAG
694   ) RETURNING SUBSCRIPTION_REG_ID INTO X_SUBSCRIPTION_REG_ID;
695 end INSERT_SUBREG_ROW;
696 
697 
698 /*
699  * Name        :  update_grant_delegation_flag
700  * Pre_reqs    :  None
701  * Description :  Will update the information of the grant_delegation_flag
702  * Parameters  :
703  * input parameters
704  * @param     p_subscription_reg_id
705  *    description:  The subscription_reg_id of an enrollment
706  *     required   :  Y
707  *     validation :  Must be a valid subscription_id. The procedure will not do
708  *                   any explicit validation.
709  *   p_grant_delegation_flag:
710  *     description:  The Boolean value of the grant_delegation_flag
711  *     required   :  Y
712  *     validation :  Should be true or false. The procedure will default it to
713  *                   false, if null value is passed
714  *
715  * output parameters
716  * None
717  *
718  * Notes:
719  *
720  *   The procedure will try to update the grant_delegation_flag based on the input values.
721  *   If a procedure can not find any matching row, then it will not raise any exception
722  *   but will not update any rows. It is caller's responsibility to make sure that
723  *   the correct parameters are passed
724  */
725 procedure update_grant_delegation_flag (
726                        p_subscription_reg_id       in number,
727                        p_grant_delegation_flag     in boolean
728                                         ) is
729 
730 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
731 l_flag_value VARCHAR2(1) := 'N';
732 
733 begin
734 
735    JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
736                                      p_message   => l_procedure_name
737                                     );
738 
739   if l_is_debug_parameter_on then
740   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
741                                      p_message   => 'p_subscription_reg_id:' || p_subscription_reg_id || '+' || 'p_grant_delegation_flag:' || JTF_DBSTRING_UTILS.getBooleanString(p_grant_delegation_flag)
742                                     );
743   end if;
744 
745 
746      if p_grant_delegation_flag then
747 
748           l_flag_value := 'Y';
749 
750      end if;
751 
752      UPDATE JTF_UM_SUBSCRIPTION_REG SET GRANT_DELEGATION_FLAG = l_flag_value
753      WHERE  SUBSCRIPTION_REG_ID = p_subscription_reg_id ;
754 
755   JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
756                                      p_message   => l_procedure_name
757                                     );
758 
759 end update_grant_delegation_flag;
760 
761 /*
762  * Name        :  update_grant_delegation_flag
763  * Pre_reqs    :  None
764  * Description :  Will update the information of the grant_delegation_flag
765  * Parameters  :
766  * input parameters
767  * @param     p_subscription_reg_id
768  *    description:  The subscription_reg_id of an enrollment
769  *     required   :  Y
770  *     validation :  Must be a valid subscription_id. The procedure will not do
771  *                   any explicit validation.
772  *   p_grant_delegation_flag:
773  *     description:  The Boolean equivallent int value of the grant_delegation_flag
774  *     required   :  Y
775  *     validation :  Should be 0 or 1. The procedure will default it to
776  *                   0, if null value is passed
777  *   p_grant_delegation_role:
778  *     description:  The Boolean equivallent int value of the decision
779  *                   whether to grant delegation role or not
780  *     required   :  Y
781  *     validation :  Should be 0 or 1. The procedure will default it to
782  *                   0, if null value is passed
783  *
784  * output parameters
785  * None
786  *
787  * Notes:
788  *
789  *   This procedure is create as wrapper procedure to pass boolean
790  *   values, as JDBC cannot handle boolean !!!!!
791  */
792 procedure update_grant_delegation_flag (
793                        p_subscription_reg_id       in number,
794                        p_grant_delegation_flag     in number,
795                        p_grant_delegation_role     in number
796                                         ) IS
797 
798 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
799 l_flag_value VARCHAR2(1) := 'N';
800 
801 CURSOR FIND_PRINCIPAL_NAME IS SELECT FU.USER_NAME, SUBREG.SUBSCRIPTION_ID
802 FROM FND_USER FU, JTF_UM_SUBSCRIPTION_REG SUBREG
803 WHERE FU.USER_ID = SUBREG.USER_ID
804 AND   SUBREG.SUBSCRIPTION_REG_ID = p_subscription_reg_id;
805 
806 l_principal_name FND_USER.USER_NAME%TYPE;
807 l_subscription_id NUMBER;
808 l_role_id NUMBER;
809 
810 begin
811 
812    JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
813                                      p_message   => l_procedure_name
814                                     );
815 
816   if l_is_debug_parameter_on then
817   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
818                                      p_message   => 'p_subscription_reg_id:' || p_subscription_reg_id || '+' || 'p_grant_delegation_flag:'
819                                      || p_grant_delegation_flag || '+' || 'p_grant_delegation_role:' || p_grant_delegation_role
820                                     );
821   end if;
822 
823 
824      if p_grant_delegation_flag = 1 then
825 
826           l_flag_value := 'Y';
827 
828      end if;
829 
830      UPDATE JTF_UM_SUBSCRIPTION_REG SET GRANT_DELEGATION_FLAG = l_flag_value
831      WHERE  SUBSCRIPTION_REG_ID = p_subscription_reg_id ;
832 
833   -- Grant the delegation role, if required
834   IF p_grant_delegation_role = 1 AND p_grant_delegation_flag = 1 THEN
835 
836      OPEN FIND_PRINCIPAL_NAME;
837      FETCH FIND_PRINCIPAL_NAME INTO l_principal_name,l_subscription_id;
838      CLOSE FIND_PRINCIPAL_NAME;
839 
840      JTF_UM_SUBSCRIPTIONS_PKG.get_delegation_role(
841                        p_subscription_id  => l_subscription_id,
842                        x_delegation_role  => l_role_id
843                              );
844 
845 
846            IF l_role_id IS NOT NULL  AND l_principal_name IS NOT NULL THEN
847 
848                -- Grant delegation role to a user
849                JTF_UM_UTIL_PVT.GRANT_ROLES(
850                        p_user_name      => l_principal_name,
851                        p_role_id        => l_role_id,
852                        p_source_name    => 'JTF_UM_SUBSCRIPTIONS_B',
853                        p_source_id      => l_subscription_id
854                      );
855 
856                -- Assign the deleagtion access role
857 
858                JTF_AUTH_BULKLOAD_PKG.ASSIGN_ROLE
859                      ( USER_NAME       => l_principal_name,
860                        ROLE_NAME       => 'JTA_UM_DELEGATION_ACCESS',
861                        OWNERTABLE_NAME => 'JTF_UM_SUBSCRIPTIONS_B',
862                        OWNERTABLE_KEY  => l_subscription_id);
863            END IF;
864 
865   END IF;
866 
867   JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
868                                      p_message   => l_procedure_name
869                                     );
870 
871 END update_grant_delegation_flag;
872 
873 
874 
875 /*
876  * Name        :  update_grant_delegation_flag
877  * Pre_reqs    :  None
878  * Description :  Will update the information of the grant_delegation_flag
879  * Parameters  :
880  * input parameters
881  * @param     p_subscription_reg_id
882  *    description:  The subscription_reg_id of an enrollment
883  *     required   :  Y
884  *     validation :  Must be a valid subscription_id. The procedure will not do
885  *                   any explicit validation.
886  *   p_grant_delegation_flag:
887  *     description:  The Boolean equivallent int value of the grant_delegation_flag
888  *     required   :  Y
889  *     validation :  Should be 0 or 1. The procedure will default it to
890  *                   0, if null value is passed
891  *
892  * output parameters
893  * None
894  *
895  * Notes:
896  *
897  *   This procedure is create as wrapper procedure to pass boolean
898  *   values, as JDBC cannot handle boolean !!!!!
899  */
900 procedure update_grant_delegation_flag (
901                        p_subscription_reg_id       in number,
902                        p_grant_delegation_flag     in number
903                                         ) IS
904 
905 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
906 l_grant_delegation_flag boolean := false;
907 
908 begin
909 
910  JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
911                                      p_message   => l_procedure_name
912                                     );
913 
914   if l_is_debug_parameter_on then
915   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
916                                      p_message   => 'p_subscription_reg_id:' || p_subscription_reg_id || '+' || 'p_grant_delegation_flag:' || p_grant_delegation_flag
917                                     );
918   end if;
919 
920 
921 if p_grant_delegation_flag = 1 then
922   l_grant_delegation_flag := true;
923 end if;
924 
925    update_grant_delegation_flag (
926                        p_subscription_reg_id   => p_subscription_reg_id,
927                        p_grant_delegation_flag => l_grant_delegation_flag
928                                         );
929 
930  JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
931                                      p_message   => l_procedure_name
932                                     );
933 
934 end update_grant_delegation_flag;
935 
936 
937 /*
938  * Name        :  update_grant_delegation_flag
939  * Pre_reqs    :  None
940  * Description :  Will update the information of the grant_delegation_flag
941  * Parameters  :
942  * input parameters
943  * @param     p_subscription_id
944  *    description:  The subscription_id of an enrollment
945  *     required   :  Y
946  *     validation :  Must be a valid subscription_id. The procedure will not do
947  *                   any explicit validation.
948  *   p_user_name:
949  *     description:  The user_name of a user
950  *     required   :  Y
951  *     validation :  Must be a valid user_name.The procedure will not do
952  *                   any explicit validation.
953  *   p_grant_delegation_flag:
954  *     description:  The Boolean value of the grant_delegation_flag
955  *     required   :  Y
956  *     validation :  Should be true or false. The procedure will default it to
957  *                   false, if null value is passed
958  *
959  * output parameters
960  * None
961  *
962  * Notes:
963  *
964  *   The procedure will try to update the grant_delegation_flag based on the input values.
965  *   If a procedure can not find any matching row, then it will not raise any exception
966  *   but will not update any rows. It is caller's responsibility to make sure that
967  *   the correct parameters are passed
968  */
969 procedure update_grant_delegation_flag (
970                        p_subscription_id       in number,
971                        p_user_name             in varchar2,
972                        p_grant_delegation_flag in boolean
973                                         ) is
974 
975 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
976 
977 CURSOR FIND_REG_ID IS SELECT SUBSCRIPTION_REG_ID
978 FROM JTF_UM_SUBSCRIPTION_REG SUBREG, FND_USER FU
979 WHERE  SUBSCRIPTION_ID = p_subscription_id
980 AND    SUBREG.USER_ID  = FU.USER_ID
981 AND    FU.USER_NAME    = p_user_name
982 AND    NVL(SUBREG.EFFECTIVE_END_DATE, SYSDATE+1) > SYSDATE;
983 
984 l_subscription_reg_id JTF_UM_SUBSCRIPTION_REG.SUBSCRIPTION_REG_ID%TYPE;
985 
986 begin
987 
988    JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
989                                      p_message   => l_procedure_name
990                                     );
991 
992   if l_is_debug_parameter_on then
993   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
994                                      p_message   => 'p_subscription_id:' || p_subscription_id || '+' || 'p_user_name:' || p_user_name || '+' || 'p_grant_delegation_flag:' || JTF_DBSTRING_UTILS.getBooleanString(p_grant_delegation_flag)
995                                      );
996   end if;
997 
998 
999      OPEN FIND_REG_ID;
1000      FETCH FIND_REG_ID INTO l_subscription_reg_id;
1001 
1002      IF FIND_REG_ID%FOUND THEN
1003        update_grant_delegation_flag (
1004                        p_subscription_reg_id   => l_subscription_reg_id,
1005                        p_grant_delegation_flag => p_grant_delegation_flag
1006                                      );
1007 
1008      END IF;
1009      CLOSE FIND_REG_ID;
1010 
1011   JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1012                                      p_message   => l_procedure_name
1013                                     );
1014 
1015 end update_grant_delegation_flag;
1016 
1017 /*
1018  * Name        :  update_grant_delegation_flag
1019  * Pre_reqs    :  None
1020  * Description :  Will update the information of the grant_delegation_flag
1021  * Parameters  :
1022  * input parameters
1023  * @param     p_subscription_id
1024  *    description:  The subscription_id of an enrollment
1025  *     required   :  Y
1026  *     validation :  Must be a valid subscription_id. The procedure will not do
1027  *                   any explicit validation.
1028  *   p_user_name:
1029  *     description:  The user_name of a user
1030  *     required   :  Y
1031  *     validation :  Must be a valid user_name.The procedure will not do
1032  *                   any explicit validation.
1033  *   p_grant_delegation_flag:
1034  *     description:  The Boolean equivallent int value of the grant_delegation_flag
1035  *     required   :  Y
1036  *     validation :  Should be 0 or 1. The procedure will default it to
1037  *                   0, if null value is passed
1038  *
1039  * output parameters
1040  * None
1041  *
1042  * Notes:
1043  *
1044  *   This procedure is create as wrapper procedure to pass boolean
1045  *   values, as JDBC cannot handle boolean !!!!!
1046  */
1047 procedure update_grant_delegation_flag (
1048                        p_subscription_id       in number,
1049                        p_user_name             in varchar2,
1050                        p_grant_delegation_flag in number
1051                                         ) IS
1052 
1053 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
1054 l_grant_delegation_flag boolean := false;
1055 
1056 begin
1057 
1058   JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
1059                                      p_message   => l_procedure_name
1060                                     );
1061 
1062   if l_is_debug_parameter_on then
1063   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
1064                                      p_message   => 'p_subscription_id:' || p_subscription_id || '+' || 'p_user_name:' || p_user_name || '+' || 'p_grant_delegation_flag:' || p_grant_delegation_flag
1065                                     );
1066   end if;
1067 
1068 
1069 if p_grant_delegation_flag = 1 then
1070   l_grant_delegation_flag := true;
1071 end if;
1072 
1073    update_grant_delegation_flag (
1074                        p_subscription_id       => p_subscription_id,
1075                        p_user_name             => p_user_name,
1076                        p_grant_delegation_flag => l_grant_delegation_flag
1077                                         );
1078 
1079 JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1080                                      p_message   => l_procedure_name
1081                                     );
1082 
1083 
1084 end update_grant_delegation_flag;
1085 
1086 
1087 
1088 /*
1089  * Name        :  update_grant_delegation_flag
1090  * Pre_reqs    :  None
1091  * Description :  Will update the information of the grant_delegation_flag
1092  * Parameters  :
1093  * input parameters
1094  * @param     p_subscription_id
1095  *    description:  The subscription_id of an enrollment
1096  *     required   :  Y
1097  *     validation :  Must be a valid subscription_id. The procedure will not do
1098  *                   any explicit validation.
1099  *   p_user_id:
1100  *     description:  The user_id of a user
1101  *     required   :  Y
1102  *     validation :  Must be a valid user_id.The procedure will not do
1103  *                   any explicit validation.
1104  *   p_grant_delegation_flag:
1105  *     description:  The Boolean value of the grant_delegation_flag
1106  *     required   :  Y
1107  *     validation :  Should be true or false. The procedure will default it to
1108  *                   false, if null value is passed
1109  *
1110  * output parameters
1111  * None
1112  *
1113  * Notes:
1114  *
1115  *   The procedure will try to update the grant_delegation_flag based on the input values.
1116  *   If a procedure can not find any matching row, then it will not raise any exception
1117  *   but will not update any rows. It is caller's responsibility to make sure that
1118  *   the correct parameters are passed
1119  */
1120 procedure update_grant_delegation_flag (
1121                        p_subscription_id       in number,
1122                        p_user_id               in number,
1123                        p_grant_delegation_flag in boolean
1124                                         ) is
1125 
1126 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
1127 CURSOR FIND_REG_ID IS SELECT SUBSCRIPTION_REG_ID
1128 FROM JTF_UM_SUBSCRIPTION_REG SUBREG, FND_USER FU
1129 WHERE  SUBSCRIPTION_ID = p_subscription_id
1130 AND    SUBREG.USER_ID  = FU.USER_ID
1131 AND    FU.USER_ID      = p_user_id
1132 AND    NVL(SUBREG.EFFECTIVE_END_DATE, SYSDATE+1) > SYSDATE;
1133 
1134 l_subscription_reg_id JTF_UM_SUBSCRIPTION_REG.SUBSCRIPTION_REG_ID%TYPE;
1135 
1136 begin
1137 
1138      JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
1139                                      p_message   => l_procedure_name
1140                                     );
1141 
1142      if l_is_debug_parameter_on then
1143      JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
1144                                      p_message   => 'p_subscription_id:' || p_subscription_id || '+' || 'p_user_id:' || p_user_id || '+' || 'p_grant_delegation_flag:' || JTF_DBSTRING_UTILS.getBooleanString(p_grant_delegation_flag)
1145 
1146                                     );
1147      end if;
1148 
1149      OPEN FIND_REG_ID;
1150      FETCH FIND_REG_ID INTO l_subscription_reg_id;
1151 
1152      IF FIND_REG_ID%FOUND THEN
1153        update_grant_delegation_flag (
1154                        p_subscription_reg_id   => l_subscription_reg_id,
1155                        p_grant_delegation_flag => p_grant_delegation_flag
1156                                      );
1157 
1158      END IF;
1159      CLOSE FIND_REG_ID;
1160 
1161   JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1162                                      p_message   => l_procedure_name
1163                                     );
1164 
1165 end update_grant_delegation_flag;
1166 
1167 
1168 /*
1169  * Name        :  update_grant_delegation_flag
1170  * Pre_reqs    :  None
1171  * Description :  Will update the information of the grant_delegation_flag
1172  * Parameters  :
1173  * input parameters
1174  * @param     p_subscription_id
1175  *    description:  The subscription_id of an enrollment
1176  *     required   :  Y
1177  *     validation :  Must be a valid subscription_id. The procedure will not do
1178  *                   any explicit validation.
1179  *   p_user_id:
1180  *     description:  The user_id of a user
1181  *     required   :  Y
1182  *     validation :  Must be a valid user_id.The procedure will not do
1183  *                   any explicit validation.
1184  *   p_grant_delegation_flag:
1185  *     description:  The Boolean equivallent int value of the grant_delegation_flag
1186  *     required   :  Y
1187  *     validation :  Should be 0 or 1. The procedure will default it to
1188  *                   0, if null value is passed
1189  *
1190  * output parameters
1191  * None
1192  *
1193  * Notes:
1194  *
1195  *   This procedure is create as wrapper procedure to pass boolean
1196  *   values, as JDBC cannot handle boolean !!!!!
1197  */
1198 
1199 procedure update_grant_delegation_flag (
1200                        p_subscription_id       in number,
1201                        p_user_id               in number,
1202                        p_grant_delegation_flag in number
1203                                         ) IS
1204 
1205 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
1206 l_grant_delegation_flag boolean := false;
1207 
1208 begin
1209 
1210 JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
1211                                      p_message   => l_procedure_name
1212                                     );
1213 
1214 
1215 if p_grant_delegation_flag = 1 then
1216   l_grant_delegation_flag := true;
1217 end if;
1218 
1219    update_grant_delegation_flag (
1220                        p_subscription_id       => p_subscription_id,
1221                        p_user_id               => p_user_id,
1222                        p_grant_delegation_flag => l_grant_delegation_flag
1223                                         );
1224 
1225    JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1226                                      p_message   => l_procedure_name
1227                                     );
1228 
1229 
1230 end update_grant_delegation_flag;
1231 
1232 
1233 /*
1234  * Name        : get_delegation_role
1235  * Pre_reqs    :  None
1236  * Description :  Will determine if an enrollment has a delegation role
1237  * Parameters  :
1238  * input parameters
1239  * @param     p_subscription_id
1240  *    description:  The subscription_id of an enrollment
1241  *     required   :  Y
1242  *     validation :  Must be a valid subscription_id
1243  * output parameters
1244  * x_delegation_role
1245  *    description: The value of the column auth_delegation_id of the table
1246  *                 JTF_UM_ENROLLMENTS_B. This value will be null, if no
1247  *                 no delegation role has been defined for this enrollment
1248  *
1249  * Note:
1250  *
1251  *   This API will raise an exception if no record is found which matches
1252  *   to the subscription_id being passed
1253  */
1254 procedure get_delegation_role(
1255                        p_subscription_id  in number,
1256                        x_delegation_role  out NOCOPY number
1257                              ) is
1258 
1259 l_procedure_name CONSTANT varchar2(30) := 'update_grant_delegation_flag';
1260 
1261 CURSOR FIND_DELEGATION_ROLE IS SELECT AUTH_DELEGATION_ROLE_ID FROM JTF_UM_SUBSCRIPTIONS_B
1262 WHERE SUBSCRIPTION_ID = p_subscription_id;
1263 
1264 begin
1265 
1266  JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
1267                                      p_message   => l_procedure_name
1268                                     );
1269 
1270   if l_is_debug_parameter_on then
1271   JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
1272                                      p_message   => 'p_subscription_id:' || p_subscription_id
1273                                     );
1274   end if;
1275 
1276 
1277 OPEN FIND_DELEGATION_ROLE;
1278 FETCH FIND_DELEGATION_ROLE INTO x_delegation_role;
1279 
1280 IF FIND_DELEGATION_ROLE%NOTFOUND THEN
1281 CLOSE FIND_DELEGATION_ROLE;
1282 JTF_DEBUG_PUB.LOG_EXCEPTION( p_module   => MODULE_NAME,
1283                              p_message   => JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('subscription_id')
1284                             );
1285 RAISE_APPLICATION_ERROR(-20000,JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('subscription_id'));
1286 END IF;
1287 
1288 
1289 
1290 CLOSE FIND_DELEGATION_ROLE;
1291 
1292 JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1293                                      p_message   => l_procedure_name
1294                                     );
1295 
1296 
1297 end get_delegation_role;
1298 
1299 
1300 /**
1301  * Procedure   :  get_grant_delegation_flag
1302  * Type        :  Private
1303  * Pre_reqs    :  None
1304  * Description :  Will return the value of the column grant_delegation_flag
1305  *                from the table JTF_UM_SUBSCRIPTION_REG
1306  * Parameters  :
1307  * input parameters
1308  * @param     p_subscription_id
1309  *    description:  The subscription_id of an enrollment
1310  *     required   :  Y
1311  *     validation :  Must be a valid subscription_id
1312  *   p_user_id:
1313  *     description:  The user_id of a user
1314  *     required   :  Y
1315  *     validation :  Must be a valid user_id
1316  * output parameters
1317  * x_result: The Boolean value based on the column grant_delegation_flag
1318  *
1319  * Note:
1320  *
1321  * This API will raise an exception, if subscription_id or user_id is invalid
1322  * or there is no matching record in JTF_UM_SUBSCRIPTION_REG table
1323  *
1324  */
1325 
1326 procedure get_grant_delegation_flag(
1327                        p_subscription_id  in number,
1328                        p_user_id          in number,
1329                        x_result           out NOCOPY boolean
1330                                   ) IS
1331 
1332 l_procedure_name CONSTANT varchar2(30) := 'get_grant_delegation_flag';
1333 
1334 CURSOR FIND_DELEGATION_FLAG IS SELECT GRANT_DELEGATION_FLAG FROM JTF_UM_SUBSCRIPTION_REG
1335 WHERE SUBSCRIPTION_ID = p_subscription_id AND USER_ID = p_user_id
1336 AND NVL(EFFECTIVE_END_DATE, SYSDATE+1) > SYSDATE;
1337 
1338 l_flag_value varchar2(1);
1339 
1340 BEGIN
1341 
1342 JTF_DEBUG_PUB.LOG_ENTERING_METHOD( p_module    => MODULE_NAME,
1343                                      p_message   => l_procedure_name
1344                                     );
1345 if l_is_debug_parameter_on then
1346 JTF_DEBUG_PUB.LOG_PARAMETERS( p_module    => MODULE_NAME,
1347                                p_message   => 'p_subscription_id:'||p_subscription_id || '+' || 'p_user_id:' || p_user_id
1348                               );
1349 end if;
1350 
1351 IF NOT JTF_UM_UTIL_PVT.VALIDATE_USER_ID(p_user_id) THEN
1352 JTF_DEBUG_PUB.LOG_EXCEPTION( p_module   => MODULE_NAME,
1353                              p_message   => JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('user_id')
1354                             );
1355 RAISE_APPLICATION_ERROR(-20000,JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('user_id'));
1356 END IF;
1357 
1358 IF NOT JTF_UM_UTIL_PVT.VALIDATE_SUBSCRIPTION_ID(p_subscription_id) THEN
1359 JTF_DEBUG_PUB.LOG_EXCEPTION( p_module   => MODULE_NAME,
1360                              p_message   => JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('subscription_id')
1361                             );
1362 RAISE_APPLICATION_ERROR(-20000,JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('subscription_id'));
1363 END IF;
1364 
1365 
1366 OPEN FIND_DELEGATION_FLAG;
1367 
1368 FETCH FIND_DELEGATION_FLAG INTO l_flag_value;
1369 
1370 IF FIND_DELEGATION_FLAG%NOTFOUND THEN
1371 CLOSE FIND_DELEGATION_FLAG;
1372  JTF_DEBUG_PUB.LOG_EXCEPTION( p_module   => MODULE_NAME,
1373                              p_message   => JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('JTA_UM_USER_ENROLL_NO_ASGN')
1374                             );
1375 
1376     RAISE_APPLICATION_ERROR(-20000,  JTF_DEBUG_PUB.GET_INVALID_PARAM_MSG('JTA_UM_USER_ENROLL_NO_ASGN'));
1377 END IF;
1378 
1379 CLOSE FIND_DELEGATION_FLAG;
1380 
1381 IF l_flag_value = 'Y' THEN
1382 x_result := TRUE;
1383 ELSE
1384 x_result := FALSE;
1385 END IF;
1386 
1387 JTF_DEBUG_PUB.LOG_EXITING_METHOD( p_module    => MODULE_NAME,
1388                                      p_message   => l_procedure_name
1389                                     );
1390 
1391 
1392 END get_grant_delegation_flag;
1393 
1394 
1395 end JTF_UM_SUBSCRIPTIONS_PKG;