DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_RESP_FUNCTIONS_PKG

Source


1 package body FND_RESP_FUNCTIONS_PKG as
2  /* $Header: AFSCRFNB.pls 120.1 2005/07/02 03:09:15 appldev ship $ */
3 
4 
5 procedure INSERT_ROW (
6   X_ROWID in out nocopy VARCHAR2,
7   X_APPLICATION_ID in NUMBER,
8   X_RESPONSIBILITY_ID in NUMBER,
9   X_ACTION_ID in NUMBER,
10   X_RULE_TYPE in VARCHAR2,
11   X_CREATED_BY in NUMBER,
12   X_CREATION_DATE in DATE,
13   X_LAST_UPDATED_BY in NUMBER,
14   X_LAST_UPDATE_DATE in DATE,
15   X_LAST_UPDATE_LOGIN in NUMBER)
16 is
17     cursor C is select ROWID from FND_RESP_FUNCTIONS
18       where APPLICATION_ID = X_APPLICATION_ID
19       and RESPONSIBILITY_ID = X_RESPONSIBILITY_ID
20       and RULE_TYPE = X_RULE_TYPE
21       and ACTION_ID = X_ACTION_ID;
22 begin
23   insert into FND_RESP_FUNCTIONS (
24     APPLICATION_ID,
25     RESPONSIBILITY_ID,
26     ACTION_ID,
27     RULE_TYPE,
28     CREATION_DATE,
29     CREATED_BY,
30     LAST_UPDATE_DATE,
31     LAST_UPDATED_BY,
32     LAST_UPDATE_LOGIN
33   ) values (
34     X_APPLICATION_ID,
35     X_RESPONSIBILITY_ID,
36     X_ACTION_ID,
37     X_RULE_TYPE,
38     X_LAST_UPDATE_DATE,
39     X_LAST_UPDATED_BY,
40     X_LAST_UPDATE_DATE,
41     X_LAST_UPDATED_BY,
42     X_LAST_UPDATE_LOGIN
43   );
44 
45   -- Added for Function Security Cache Invalidation Project.
46   fnd_function_security_cache.update_resp(X_RESPONSIBILITY_ID, X_APPLICATION_ID);
47 
48   open c;
49   fetch c into X_ROWID;
50   if (c%notfound) then
51     close c;
52     raise no_data_found;
53   end if;
54   close c;
55 
56 end INSERT_ROW;
57 
58 procedure LOCK_ROW (
59   X_APPLICATION_ID in NUMBER,
60   X_RESPONSIBILITY_ID in NUMBER,
61   X_ACTION_ID in NUMBER,
62   X_RULE_TYPE in VARCHAR2
63 ) is
64   cursor c1 is select
65       RULE_TYPE
66     from FND_RESP_FUNCTIONS
67     where APPLICATION_ID = X_APPLICATION_ID
68     and RESPONSIBILITY_ID = X_RESPONSIBILITY_ID
69     and RULE_TYPE = X_RULE_TYPE
70     and ACTION_ID = X_ACTION_ID
71     for update of APPLICATION_ID nowait;
72   tlinfo c1%rowtype;
73 
74 begin
75   open c1;
76   fetch c1 into tlinfo;
77   if (c1%notfound) then
78     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
79     app_exception.raise_exception;
80     close c1;
81     return;
82   end if;
83   close c1;
84   return;
85 end LOCK_ROW;
86 
87 procedure UPDATE_ROW (
88   X_APPLICATION_ID in NUMBER,
89   X_RESPONSIBILITY_ID in NUMBER,
90   X_ACTION_ID in NUMBER,
91   X_RULE_TYPE in VARCHAR2,
92   X_LAST_UPDATED_BY in NUMBER,
93   X_LAST_UPDATE_DATE in DATE,
94   X_LAST_UPDATE_LOGIN in NUMBER)
95 is
96 begin
97   -- Kind of dull, but included for completeness.
98   update FND_RESP_FUNCTIONS set
99     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
100     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
101     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
102   where APPLICATION_ID = X_APPLICATION_ID
103   and RESPONSIBILITY_ID = X_RESPONSIBILITY_ID
104   and RULE_TYPE = X_RULE_TYPE
105   and ACTION_ID = X_ACTION_ID;
106 
107   if (sql%notfound) then
108     raise no_data_found;
109   else
110     -- Added for Function Security Cache Invalidation Project.
111     fnd_function_security_cache.update_resp(X_RESPONSIBILITY_ID, X_APPLICATION_ID);
112   end if;
113 end UPDATE_ROW;
114 
115 procedure DELETE_ROW (
116   X_APPLICATION_ID in NUMBER,
117   X_RESPONSIBILITY_ID in NUMBER,
118   X_RULE_TYPE in VARCHAR2,
119   X_ACTION_ID in NUMBER
120 ) is
121 begin
122   delete from FND_RESP_FUNCTIONS
123   where APPLICATION_ID = X_APPLICATION_ID
124   and RESPONSIBILITY_ID = X_RESPONSIBILITY_ID
125   and RULE_TYPE = X_RULE_TYPE
126   and ACTION_ID = X_ACTION_ID;
127   if (sql%notfound) then
128     raise no_data_found;
129   else
130     -- Added for Function Security Cache Invalidation Project.
131     fnd_function_security_cache.update_resp(X_RESPONSIBILITY_ID, X_APPLICATION_ID);
132   end if;
133 end DELETE_ROW;
134 
135 --Overloaded!!
136 
137 procedure LOAD_ROW (
138   X_APP_SHORT_NAME      in	VARCHAR2,
139   X_RESP_KEY		in	VARCHAR2,
140   X_RULE_TYPE		in	VARCHAR2,
141   X_ACTION		in	VARCHAR2,
142   X_OWNER               in      VARCHAR2 )
143 is
144 begin
145  fnd_resp_functions_pkg.load_row(
146 	X_APP_SHORT_NAME => X_APP_SHORT_NAME,
147 	X_RESP_KEY => X_RESP_KEY,
148 	X_RULE_TYPE => X_RULE_TYPE,
149         X_ACTION => X_ACTION,
150 	X_OWNER => X_OWNER,
151 	X_CUSTOM_MODE => '',
152 	X_LAST_UPDATE_DATE => '');
153 end LOAD_ROW;
154 
155 -- ### Overloaded!
156 
157 procedure LOAD_ROW (
158   X_APP_SHORT_NAME      in	VARCHAR2,
159   X_RESP_KEY		in	VARCHAR2,
160   X_RULE_TYPE		in	VARCHAR2,
161   X_ACTION		in	VARCHAR2,
162   X_OWNER               in      VARCHAR2,
163   X_CUSTOM_MODE		in	VARCHAR2,
164   X_LAST_UPDATE_DATE	in	VARCHAR2 )
165 is
166   row_id varchar2(64);
167   user_id number := 0;
168   app_id number;
169   resp_id number;
170   act_id number;
171   f_luby    number;  -- entity owner in file
172   f_ludate  date;    -- entity update date in file
173   db_luby   number;  -- entity owner in db
174   db_ludate date;    -- entity update date in db
175 
176 begin
177 
178   select application_id into app_id
179   from   fnd_application
180   where  application_short_name = X_APP_SHORT_NAME;
181 
182   select responsibility_id into resp_id
183   from   fnd_responsibility
184   where  responsibility_key = X_RESP_KEY
185   and application_id = app_id;
186 
187   if X_RULE_TYPE in ('F', 'W') then
188     select function_id into act_id
189     from   fnd_form_functions_vl
190     where  function_name = X_ACTION;
191   elsif X_RULE_TYPE = 'M' then
192     select menu_id into act_id
193     from   fnd_menus_vl
194     where  menu_name = X_ACTION;
195   else
196     return;
197   end if;
198 
199     -- Translate owner to file_last_updated_by
200   f_luby := fnd_load_util.owner_id(x_owner);
201 
202   -- Translate char last_update_date to date
203   f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
204 
205   begin
206     select LAST_UPDATED_BY, LAST_UPDATE_DATE
207      into db_luby, db_ludate
208      from fnd_resp_functions
209     where ACTION_ID = act_id
210      and APPLICATION_ID = app_id
211      and RESPONSIBILITY_ID = resp_id
212      and RULE_TYPE = X_RULE_TYPE;
213 
214     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
215                                   db_ludate, X_CUSTOM_MODE)) then
216      fnd_resp_functions_pkg.update_row(
217        X_APPLICATION_ID => app_id,
218        X_RESPONSIBILITY_ID => resp_id,
219        X_ACTION_ID => act_id,
220        X_RULE_TYPE => X_RULE_TYPE,
221        X_LAST_UPDATED_BY => f_luby,
222        X_LAST_UPDATE_DATE => f_ludate,
223        X_LAST_UPDATE_LOGIN => 0);
224     end if;
225   exception
226     when no_data_found then
227       fnd_resp_functions_pkg.insert_row (
228         X_ROWID => row_id ,
229         X_APPLICATION_ID => app_id,
230         X_RESPONSIBILITY_ID => resp_id,
231         X_ACTION_ID => act_id,
232         X_RULE_TYPE => X_RULE_TYPE,
233         X_CREATED_BY => f_luby,
234         X_CREATION_DATE => f_ludate,
235         X_LAST_UPDATED_BY => f_luby,
236         X_LAST_UPDATE_DATE => f_ludate,
237         X_LAST_UPDATE_LOGIN => 0);
238    end;
239 end LOAD_ROW;
240 
241 end FND_RESP_FUNCTIONS_PKG;