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