DBA Data[Home] [Help]

PACKAGE BODY: APPS.FNDCP_CRM

Source


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