DBA Data[Home] [Help]

PACKAGE BODY: APPS.FNDCP_CRM

Source


1 package body FNDCP_CRM as
2 /* $Header: AFCPCRMB.pls 120.1.12020000.2 2012/08/10 15:33:51 ckclark ship $ */
3 
4 
5 
6 --
7 -- Returns the number of mgr procs mgr procs that can run the request
8 --
9 
10 function mgr_up (reqid in number) return number is
11 
12   up number := 0;
13 
14 begin
15   select count(*)
16     into up
17     from Fnd_Concurrent_CRM_Requests
18    where request_id = reqid;
19 
20   return (up);
21 
22   exception
23     when no_data_found then
24       return (0);
25 end mgr_up;
26 
27 
28 -- The following function is used by FND_REQUEST package in AFCPREQ*.pls
29 -- and src/process/fdprrc.lpc.  This used to be in AFCPREQ*.pls, but due
30 -- to the infamous 64K limit, had to move out to here.
31 
32   --
33   -- Get conflicts domain id.
34   --
35   -- Extract the value in parameter named by cd_param.
36   -- This value is a Conflicts Domain Name.
37   -- If the domain by this name exists, return its cd_id.
38   -- Else, insert a new domain by the name and return the new cd_id.
39   --
40   -- The routine is used at request submission time by programs that
41   -- have the Conflicts Domain name defined in a parameter.
42   --
43   function get_cd_id (app      in varchar2,
44 		      program  in varchar2,
45 		      user_id  in number,
46 		      login_id in number,
47 		      cd_param in varchar2,
48 		      nargs    in number,
49 		      a1       in varchar2 default chr(0),
50 		      a2       in varchar2 default chr(0),
51 		      a3       in varchar2 default chr(0),
52 		      a4       in varchar2 default chr(0),
53 		      a5       in varchar2 default chr(0),
54 		      a6       in varchar2 default chr(0),
55 		      a7       in varchar2 default chr(0),
56 		      a8       in varchar2 default chr(0),
57 		      a9       in varchar2 default chr(0),
58 		      a10      in varchar2 default chr(0),
59 		      a11      in varchar2 default chr(0),
60 		      a12      in varchar2 default chr(0),
61 		      a13      in varchar2 default chr(0),
62 		      a14      in varchar2 default chr(0),
63 		      a15      in varchar2 default chr(0),
64 		      a16      in varchar2 default chr(0),
65 		      a17      in varchar2 default chr(0),
66 		      a18      in varchar2 default chr(0),
67 		      a19      in varchar2 default chr(0),
68 		      a20      in varchar2 default chr(0),
69 		      a21      in varchar2 default chr(0),
70 		      a22      in varchar2 default chr(0),
71 		      a23      in varchar2 default chr(0),
72 		      a24      in varchar2 default chr(0),
73 		      a25      in varchar2 default chr(0),
74 		      a26      in varchar2 default chr(0),
75 		      a27      in varchar2 default chr(0),
76 		      a28      in varchar2 default chr(0),
77 		      a29      in varchar2 default chr(0),
78 		      a30      in varchar2 default chr(0),
79 		      a31      in varchar2 default chr(0),
80 		      a32      in varchar2 default chr(0),
81 		      a33      in varchar2 default chr(0),
82 		      a34      in varchar2 default chr(0),
83 		      a35      in varchar2 default chr(0),
84 		      a36      in varchar2 default chr(0),
85 		      a37      in varchar2 default chr(0),
86 		      a38      in varchar2 default chr(0),
87 		      a39      in varchar2 default chr(0),
88 		      a40      in varchar2 default chr(0),
89 		      a41      in varchar2 default chr(0),
90 		      a42      in varchar2 default chr(0),
91 		      a43      in varchar2 default chr(0),
92 		      a44      in varchar2 default chr(0),
93 		      a45      in varchar2 default chr(0),
94 		      a46      in varchar2 default chr(0),
95 		      a47      in varchar2 default chr(0),
96 		      a48      in varchar2 default chr(0),
97 		      a49      in varchar2 default chr(0),
98 		      a50      in varchar2 default chr(0),
99 		      a51      in varchar2 default chr(0),
100 		      a52      in varchar2 default chr(0),
101 		      a53      in varchar2 default chr(0),
102 		      a54      in varchar2 default chr(0),
103 		      a55      in varchar2 default chr(0),
104 		      a56      in varchar2 default chr(0),
105 		      a57      in varchar2 default chr(0),
106 		      a58      in varchar2 default chr(0),
107 		      a59      in varchar2 default chr(0),
108 		      a60      in varchar2 default chr(0),
109 		      a61      in varchar2 default chr(0),
110 		      a62      in varchar2 default chr(0),
111 		      a63      in varchar2 default chr(0),
112 		      a64      in varchar2 default chr(0),
113 		      a65      in varchar2 default chr(0),
114 		      a66      in varchar2 default chr(0),
115 		      a67      in varchar2 default chr(0),
116 		      a68      in varchar2 default chr(0),
117 		      a69      in varchar2 default chr(0),
118 		      a70      in varchar2 default chr(0),
119 		      a71      in varchar2 default chr(0),
120 		      a72      in varchar2 default chr(0),
121 		      a73      in varchar2 default chr(0),
122 		      a74      in varchar2 default chr(0),
123 		      a75      in varchar2 default chr(0),
124 		      a76      in varchar2 default chr(0),
125 		      a77      in varchar2 default chr(0),
126 		      a78      in varchar2 default chr(0),
127 		      a79      in varchar2 default chr(0),
128 		      a80      in varchar2 default chr(0),
129 		      a81      in varchar2 default chr(0),
130 		      a82      in varchar2 default chr(0),
131 		      a83      in varchar2 default chr(0),
132 		      a84      in varchar2 default chr(0),
133 		      a85      in varchar2 default chr(0),
134 		      a86      in varchar2 default chr(0),
135 		      a87      in varchar2 default chr(0),
136 		      a88      in varchar2 default chr(0),
137 		      a89      in varchar2 default chr(0),
138 		      a90      in varchar2 default chr(0),
139 		      a91      in varchar2 default chr(0),
140 		      a92      in varchar2 default chr(0),
141 		      a93      in varchar2 default chr(0),
142 		      a94      in varchar2 default chr(0),
143 		      a95      in varchar2 default chr(0),
144 		      a96      in varchar2 default chr(0),
145 		      a97      in varchar2 default chr(0),
146 		      a98      in varchar2 default chr(0),
147 		      a99      in varchar2 default chr(0),
148 		      a100     in varchar2 default chr(0)) return number is
149 
150 	cd_pos    number := 0;
151 	cdname    varchar2(30);
152 	cdid	  number := -1;
153 	flexfield fnd_dflex.dflex_r;
154 	flexinfo  fnd_dflex.dflex_dr;
155 	contexts  fnd_dflex.contexts_dr;
156 	segments  fnd_dflex.segments_dr;
157 
158 	insert_error exception;
159 
160   begin
161 
162 	fnd_dflex.get_flexfield (app, '$SRS$.'||program, flexfield, flexinfo);
163 	fnd_dflex.get_contexts (flexfield, contexts);
164 	fnd_dflex.get_segments (fnd_dflex.make_context (
165 					flexfield, contexts.context_code (
166 						contexts.global_context)),
167 				segments,
168 				TRUE);
169 
170 	for i in 1..segments.nsegments loop
171 	  if segments.segment_name (i) = cd_param then
172 	    cd_pos := i;
173 	    exit;
174 	  end if;
175 	end loop;
176 
177 	if (cd_pos = 0) or (cd_pos > nargs) then
178 	  return (-1);
179 	end if;
180 
181 	if cd_pos =  1 then cdname :=  a1; goto end_cd; end if;
182 	if cd_pos =  2 then cdname :=  a2; goto end_cd; end if;
183 	if cd_pos =  3 then cdname :=  a3; goto end_cd; end if;
184 	if cd_pos =  4 then cdname :=  a4; goto end_cd; end if;
185 	if cd_pos =  5 then cdname :=  a5; goto end_cd; end if;
186 	if cd_pos =  6 then cdname :=  a6; goto end_cd; end if;
187 	if cd_pos =  7 then cdname :=  a7; goto end_cd; end if;
188 	if cd_pos =  8 then cdname :=  a8; goto end_cd; end if;
189 	if cd_pos =  9 then cdname :=  a9; goto end_cd; end if;
190 	if cd_pos = 10 then cdname := a10; goto end_cd; end if;
191 	if cd_pos = 11 then cdname := a11; goto end_cd; end if;
192 	if cd_pos = 12 then cdname := a12; goto end_cd; end if;
193 	if cd_pos = 13 then cdname := a13; goto end_cd; end if;
194 	if cd_pos = 14 then cdname := a14; goto end_cd; end if;
195 	if cd_pos = 15 then cdname := a15; goto end_cd; end if;
196 	if cd_pos = 16 then cdname := a16; goto end_cd; end if;
197 	if cd_pos = 17 then cdname := a17; goto end_cd; end if;
198 	if cd_pos = 18 then cdname := a18; goto end_cd; end if;
199 	if cd_pos = 19 then cdname := a19; goto end_cd; end if;
200 	if cd_pos = 20 then cdname := a20; goto end_cd; end if;
201 	if cd_pos = 21 then cdname := a21; goto end_cd; end if;
202 	if cd_pos = 22 then cdname := a22; goto end_cd; end if;
203 	if cd_pos = 23 then cdname := a23; goto end_cd; end if;
204 	if cd_pos = 24 then cdname := a24; goto end_cd; end if;
205 	if cd_pos = 25 then cdname := a25; goto end_cd; end if;
206 	if cd_pos = 26 then cdname := a26; goto end_cd; end if;
207 	if cd_pos = 27 then cdname := a27; goto end_cd; end if;
208 	if cd_pos = 28 then cdname := a28; goto end_cd; end if;
209 	if cd_pos = 29 then cdname := a29; goto end_cd; end if;
210 	if cd_pos = 30 then cdname := a30; goto end_cd; end if;
211 	if cd_pos = 31 then cdname := a31; goto end_cd; end if;
212 	if cd_pos = 32 then cdname := a32; goto end_cd; end if;
213 	if cd_pos = 33 then cdname := a33; goto end_cd; end if;
214 	if cd_pos = 34 then cdname := a34; goto end_cd; end if;
215 	if cd_pos = 35 then cdname := a35; goto end_cd; end if;
216 	if cd_pos = 36 then cdname := a36; goto end_cd; end if;
217 	if cd_pos = 37 then cdname := a37; goto end_cd; end if;
218 	if cd_pos = 38 then cdname := a38; goto end_cd; end if;
219 	if cd_pos = 39 then cdname := a39; goto end_cd; end if;
220 	if cd_pos = 40 then cdname := a40; goto end_cd; end if;
221 	if cd_pos = 41 then cdname := a41; goto end_cd; end if;
222 	if cd_pos = 42 then cdname := a42; goto end_cd; end if;
223 	if cd_pos = 43 then cdname := a43; goto end_cd; end if;
224 	if cd_pos = 44 then cdname := a44; goto end_cd; end if;
225 	if cd_pos = 45 then cdname := a45; goto end_cd; end if;
226 	if cd_pos = 46 then cdname := a46; goto end_cd; end if;
227 	if cd_pos = 47 then cdname := a47; goto end_cd; end if;
228 	if cd_pos = 48 then cdname := a48; goto end_cd; end if;
229 	if cd_pos = 49 then cdname := a49; goto end_cd; end if;
230 	if cd_pos = 50 then cdname := a50; goto end_cd; end if;
231 	if cd_pos = 51 then cdname := a51; goto end_cd; end if;
232 	if cd_pos = 52 then cdname := a52; goto end_cd; end if;
233 	if cd_pos = 53 then cdname := a53; goto end_cd; end if;
234 	if cd_pos = 54 then cdname := a54; goto end_cd; end if;
235 	if cd_pos = 55 then cdname := a55; goto end_cd; end if;
236 	if cd_pos = 56 then cdname := a56; goto end_cd; end if;
237 	if cd_pos = 57 then cdname := a57; goto end_cd; end if;
238 	if cd_pos = 58 then cdname := a58; goto end_cd; end if;
239 	if cd_pos = 59 then cdname := a59; goto end_cd; end if;
240 	if cd_pos = 60 then cdname := a60; goto end_cd; end if;
241 	if cd_pos = 61 then cdname := a61; goto end_cd; end if;
242 	if cd_pos = 62 then cdname := a62; goto end_cd; end if;
243 	if cd_pos = 63 then cdname := a63; goto end_cd; end if;
244 	if cd_pos = 64 then cdname := a64; goto end_cd; end if;
245 	if cd_pos = 65 then cdname := a65; goto end_cd; end if;
246 	if cd_pos = 66 then cdname := a66; goto end_cd; end if;
247 	if cd_pos = 67 then cdname := a67; goto end_cd; end if;
248 	if cd_pos = 68 then cdname := a68; goto end_cd; end if;
249 	if cd_pos = 69 then cdname := a69; goto end_cd; end if;
250 	if cd_pos = 70 then cdname := a70; goto end_cd; end if;
251 	if cd_pos = 71 then cdname := a71; goto end_cd; end if;
252 	if cd_pos = 72 then cdname := a72; goto end_cd; end if;
253 	if cd_pos = 73 then cdname := a73; goto end_cd; end if;
254 	if cd_pos = 74 then cdname := a74; goto end_cd; end if;
255 	if cd_pos = 75 then cdname := a75; goto end_cd; end if;
256 	if cd_pos = 76 then cdname := a76; goto end_cd; end if;
257 	if cd_pos = 77 then cdname := a77; goto end_cd; end if;
258 	if cd_pos = 78 then cdname := a78; goto end_cd; end if;
259 	if cd_pos = 79 then cdname := a79; goto end_cd; end if;
260 	if cd_pos = 80 then cdname := a80; goto end_cd; end if;
261 	if cd_pos = 81 then cdname := a81; goto end_cd; end if;
262 	if cd_pos = 82 then cdname := a82; goto end_cd; end if;
263 	if cd_pos = 83 then cdname := a83; goto end_cd; end if;
264 	if cd_pos = 84 then cdname := a84; goto end_cd; end if;
265 	if cd_pos = 85 then cdname := a85; goto end_cd; end if;
266 	if cd_pos = 86 then cdname := a86; goto end_cd; end if;
267 	if cd_pos = 87 then cdname := a87; goto end_cd; end if;
268 	if cd_pos = 88 then cdname := a88; goto end_cd; end if;
269 	if cd_pos = 89 then cdname := a89; goto end_cd; end if;
270 	if cd_pos = 90 then cdname := a90; goto end_cd; end if;
271 	if cd_pos = 91 then cdname := a91; goto end_cd; end if;
272 	if cd_pos = 92 then cdname := a92; goto end_cd; end if;
273 	if cd_pos = 93 then cdname := a93; goto end_cd; end if;
274 	if cd_pos = 94 then cdname := a94; goto end_cd; end if;
275 	if cd_pos = 95 then cdname := a95; goto end_cd; end if;
276 	if cd_pos = 96 then cdname := a96; goto end_cd; end if;
277 	if cd_pos = 97 then cdname := a97; goto end_cd; end if;
278 	if cd_pos = 98 then cdname := a98; goto end_cd; end if;
279 	if cd_pos = 99 then cdname := a99; goto end_cd; end if;
280 	if cd_pos = 100 then cdname := a100; end if;
281 
282 	<<end_cd>>
283 
284 	begin -- select block
285 	  select cd_id
286 	    into cdid
287 	    from fnd_conflicts_domain
288 	   where cd_name = cdname;
289 
290 	  exception
291 	    when no_data_found then
292 	      begin -- insert block
293 		select fnd_conflicts_domain_s.nextval
294 		  into cdid
295 		  from sys.dual;
296 
297 		insert
298 		  into fnd_conflicts_domain (
299 		       cd_id,
300 		       cd_name,
301 		       user_cd_name,
302 		       runalone_flag,
303 		       last_update_date,
304 		       last_updated_by,
305 		       creation_date,
306 		       created_by,
307 		       last_update_login,
308                        dynamic)
309 		values (
310 		       cdid,
311 		       cdname,
312 		       cdname,
313 		       'N',
314 		       sysdate,
315 		       user_id,
316 		       sysdate,
317 		       user_id,
318 		       login_id,
319 		       'Y');
320 
321 		if (sql%rowcount = 0) then
322 		  raise insert_error;
323 		end if;
324 
325 		exception
326 		  when no_data_found then
327 		    fnd_message.set_name ('FND',
328 					  'Too many rows in sys.dual');
329 		    return (-1);
330 
331 		  when insert_error then
332 		    fnd_message.set_name ('FND', 'SQL-Generic error');
333 		    fnd_message.set_token ('ERRNO', sqlcode, FALSE);
334 		    fnd_message.set_token ('REASON', sqlerrm, FALSE);
335 		    fnd_message.set_token ('ROUTINE',
336 			'SUBMIT: conflicts_domain_insert_error', FALSE);
337 		    return (-1);
338 
339 		  when dup_val_on_index then
340 		    select cd_id
341 	            into cdid
342 	            from fnd_conflicts_domain
343 		    where cd_name = cdname;
344 
345 
346 		  when others then
347 		    raise;
348 	      end; -- insert block
349 
350 	    when others then
351 	      raise;
352 	end; -- select block
353 
354 	return (cdid);
355 
356 	exception
357 	  when others then
358 	    fnd_message.set_name ('FND', 'SQL-Generic error');
359 	    fnd_message.set_token ('ERRNO', sqlcode, FALSE);
360 	    fnd_message.set_token ('REASON', sqlerrm, FALSE);
361 	    fnd_message.set_token (
362 				'ROUTINE', 'SUBMIT: conflicts_domain', FALSE);
363 	  return (-1);
364 
365   end get_cd_id;
366 
367 
368 --
369 -- Remove all unused 'dynamic' conflict domains
370 -- in order to manage the size of the table.
371 --
372 procedure purge_dynamic_domains is
373 begin
374 
375     delete from fnd_conflicts_domain fcd
376     where dynamic = 'Y'
377     and not exists (select 'X'
378                     from fnd_concurrent_requests fcr
379 		    where fcr.cd_id = fcd.cd_id
380 		    and phase_code in ('P', 'R'));
381 
382 
383 
384 end purge_dynamic_domains;
385 
386 end FNDCP_CRM;