DBA Data[Home] [Help]

PACKAGE BODY: APPS.BNE_LCT_TOOLS_PKG

Source


1 package body BNE_LCT_TOOLS_PKG as
2 /* $Header: bnelcttoolsb.pls 120.6 2005/12/07 16:09:24 dagroves noship $ */
3 
4 function APP_ID_TO_ASN(X_APP_ID IN NUMBER) RETURN FND_APPLICATION.APPLICATION_SHORT_NAME%TYPE
5 is
6   V_ASN FND_APPLICATION.APPLICATION_SHORT_NAME%TYPE;
7 begin
8   if X_APP_ID is null
9   then
10     return(null);
11   end if;
12   --
13   SELECT APPLICATION_SHORT_NAME
14   INTO   V_ASN
15   FROM FND_APPLICATION
16   WHERE APPLICATION_ID = X_APP_ID;
17   --
18   return(V_ASN);
19 exception
20   when no_data_found then
21     raise_application_error(-20000, 'No Application is registered in Applications with an application id of '||to_char(X_APP_ID)||'.');
22 end APP_ID_TO_ASN;
23 
24 function ASN_TO_APP_ID(X_ASN IN VARCHAR2) RETURN FND_APPLICATION.APPLICATION_ID%TYPE
25 is
26   V_APP_ID FND_APPLICATION.APPLICATION_ID%TYPE;
27 begin
28   if X_ASN is null
29   then
30     return(null);
31   end if;
32   --
33   SELECT APPLICATION_ID
34   INTO   V_APP_ID
35   FROM FND_APPLICATION
36   WHERE APPLICATION_SHORT_NAME = X_ASN;
37   --
38   return(V_APP_ID);
39 exception
40   when no_data_found then
41     raise_application_error(-20000, 'No Application is registered in Applications with an application short name of '''||X_ASN||'''.');
42 end ASN_TO_APP_ID;
43 
44 function GET_APP_ID(X_BNE_KEY IN VARCHAR2)
45 RETURN NUMBER
46 IS
47   COLON_POSITION INTEGER;
48   KEY_NUMBER     NUMBER;
49 BEGIN
50   if (X_BNE_KEY is NULL)
51   THEN
52     RETURN(NULL);
53   END IF;
54 
55   COLON_POSITION := INSTR(X_BNE_KEY, ':');
56   if (COLON_POSITION = 0)
57   THEN
58     RETURN(NULL);
59   END IF;
60 
61   BEGIN
62     KEY_NUMBER := SUBSTR(X_BNE_KEY,1,(COLON_POSITION -1));
63   EXCEPTION
64     WHEN INVALID_NUMBER THEN
65       KEY_NUMBER := ASN_TO_APP_ID(SUBSTR(X_BNE_KEY,1,(COLON_POSITION -1)));
66   END;
67   RETURN(KEY_NUMBER);
68 END GET_APP_ID;
69 
70 function GET_CODE(X_BNE_KEY IN VARCHAR2)
71 RETURN VARCHAR2
72 IS
73   COLON_POSITION INTEGER;
74   KEY_CODE       VARCHAR2(40);
75 BEGIN
76   if (X_BNE_KEY is NULL)
77   THEN
78     RETURN(NULL);
79   END IF;
80 
81   COLON_POSITION := INSTR(X_BNE_KEY, ':');
82   if (COLON_POSITION = 0)
83   THEN
84     RETURN(NULL);
85   END IF;
86 
87   KEY_CODE       := TRIM(SUBSTR(X_BNE_KEY, COLON_POSITION+1));
88   RETURN(KEY_CODE);
89 END GET_CODE;
90 
91 --------------------------------------------------------------------------------
92 --  FUNCTION:         GET_PLSQL_ATT9 (PACKAGE PRIVATE)                        --
93 --                                                                            --
94 --  DESCRIPTION:      Retrieve any code values for parameter lists encoded in --
95 --                    attributes, this is done for the PLSQL, CLEANUP_PLSQL   --
96 --                    and CONCURRENT_REQUEST steps of the parameter driven    --
97 --                    importer.                                               --
98 --                                                                            --
99 --  MODIFICATION HISTORY                                                      --
100 --  Date         Username  Description                                        --
101 --  30-MAY-2005  DAGROVES  Created.                                           --
102 --------------------------------------------------------------------------------
103 function GET_PLSQL_ATT9(X_LIST_APP_ID IN NUMBER,
104                         X_LIST_CODE   IN VARCHAR2)
105 RETURN VARCHAR2
106 IS
107   CURSOR C_ATT9(CP_APPLICATION_ID   NUMBER,
108                 CP_PARAM_LIST_CODE  VARCHAR2)
109   IS
110   SELECT ATTRIBUTE9
111   FROM   BNE_ATTRIBUTES A, BNE_PARAM_LIST_ITEMS I
112   WHERE  A.APPLICATION_ID  = I.ATTRIBUTE_APP_ID
113   AND    A.ATTRIBUTE_CODE  = I.ATTRIBUTE_CODE
114   AND    I.APPLICATION_ID  = CP_APPLICATION_ID
115   AND    I.PARAM_LIST_CODE = CP_PARAM_LIST_CODE
116   AND    ATTRIBUTE9 IS NOT NULL
117   ORDER BY I.SEQUENCE_NUM;
118 
119   REC            C_ATT9%ROWTYPE;
120   COLON_POSITION INTEGER;
121   KEY_CODE       VARCHAR2(40);
122   RET            VARCHAR2(2000);
123 BEGIN
124   FOR REC IN C_ATT9(X_LIST_APP_ID, X_LIST_CODE)
125   LOOP
126     COLON_POSITION := INSTR(REC.ATTRIBUTE9, ':');
127     if (COLON_POSITION > 0)
128     THEN
129       KEY_CODE       := TRIM(SUBSTR(REC.ATTRIBUTE9, COLON_POSITION+1));
130       RET            := RET||','||KEY_CODE;
131     END IF;
132   END LOOP;
133   RETURN(RET);
134 END ;
135 
136 --------------------------------------------------------------------------------
137 --  FUNCTION:         GET_IMPORT_LISTS                                        --
138 --                                                                            --
139 --  DESCRIPTION:      Retrieve all code values for parameter lists used by    --
140 --                    the parameter driven importer.                          --
141 --                                                                            --
142 --  MODIFICATION HISTORY                                                      --
143 --  Date         Username  Description                                        --
144 --  30-MAY-2005  DAGROVES  Created.                                           --
145 --------------------------------------------------------------------------------
146 function GET_IMPORT_LISTS(X_IMPORT_LIST_APP_ID IN NUMBER,
147                           X_IMPORT_LIST_CODE   IN VARCHAR2)
148 RETURN VARCHAR2
149 IS
150   CURSOR C_MASTER_LIST_ITEMS(CP_APPLICATION_ID   NUMBER,
151                              CP_PARAM_LIST_CODE VARCHAR2)
152   IS
153   SELECT PARAM_NAME,
154          STRING_VALUE,
155          ATTRIBUTE_APP_ID,
156          ATTRIBUTE_CODE
157   FROM   BNE_PARAM_LIST_ITEMS
158   WHERE  APPLICATION_ID  = CP_APPLICATION_ID
159   AND    PARAM_LIST_CODE = CP_PARAM_LIST_CODE;
160 
161   PARAM_NAME     BNE_PARAM_LIST_ITEMS.PARAM_NAME%TYPE;
162   PARAM_VALUE    BNE_PARAM_LIST_ITEMS.STRING_VALUE%TYPE;
163   COLON_POSITION INTEGER;
164   KEY_NUMBER     NUMBER;
165   KEY_CODE       VARCHAR2(40);
166   TMP            VARCHAR2(2000);
167   RET            VARCHAR2(2000);
168 BEGIN
169   RET := NULL;
170   if X_IMPORT_LIST_APP_ID is null OR
171      X_IMPORT_LIST_CODE   is null
172   then
173     return(null);
174   end if;
175   --
176   FOR REC IN C_MASTER_LIST_ITEMS(X_IMPORT_LIST_APP_ID, X_IMPORT_LIST_CODE)
177   LOOP
178     -- PARAM_NAME can have the following values:
179     -- SQL
180     -- PLSQL
181     -- CONCURRENT_REQUEST
182     -- SEQUENCE
183     -- GROUP
184     -- SUCCESS_MESSAGE
185     -- ROW_MAPPING
186     -- ERRORED_ROWS
187     -- ERROR_LOOKUP
188     -- CLEANUP_SQL
189     -- CLEANUP_PLSQL
190     --
191     PARAM_NAME  := REC.PARAM_NAME;
192     PARAM_VALUE := REC.STRING_VALUE;
193 
194     -- All entries except 'SUCCESS_MESSAGE' have a sub-list.
195     IF (PARAM_NAME NOT IN ('SUCCESS_MESSAGE'))
196     THEN
197       COLON_POSITION := INSTR(PARAM_VALUE, ':');
198       KEY_NUMBER     := SUBSTR(PARAM_VALUE,1,(COLON_POSITION -1));
199       KEY_CODE       := TRIM(SUBSTR(PARAM_VALUE, COLON_POSITION+1));
200       -- all sublists are required, add to return value.
201       RET            := RET||','||KEY_CODE;
202 
203       -- Drill further into lists as required.
204       if (PARAM_NAME = 'PLSQL')
205       then
206         -- attribute 9 of parameters in sublist contains a sublist
207         RET := RET||','||GET_PLSQL_ATT9(KEY_NUMBER, KEY_CODE);
208       elsif (PARAM_NAME = 'CONCURRENT_REQUEST')
209       then
210         -- attribute 9 of parameters in sublist contains a sublist
211         RET := RET||','||GET_PLSQL_ATT9(KEY_NUMBER, KEY_CODE);
212       elsif (PARAM_NAME = 'CLEANUP_PLSQL')
213       then
214         -- attribute 9 of parameters in sublist contains a sublist
215         RET := RET||','||GET_PLSQL_ATT9(KEY_NUMBER, KEY_CODE);
216 -- Commented out for efficiency, however these values form
217 -- the unique list of import steps and are left for clarity.
218 --      elsif (PARAM_NAME = 'SEQUENCE')
219 --      then
220 --        null; -- No sub-lists for this step.
221 --      elsf (PARAM_NAME = 'SQL')
222 --      then
223 --        null; -- No sub-lists for this step.
224 --      elsif (PARAM_NAME = 'GROUP')
225 --      then
226 --        null; -- No sub-lists for this step.
227 --      elsif (PARAM_NAME = 'ROW_MAPPING')
228 --      then
229 --        null; -- No sub-lists for this step.
230 --      elsif (PARAM_NAME = 'ERRORED_ROWS')
231 --      then
232 --        null; -- No sub-lists for this step.
233 --      elsif (PARAM_NAME = 'ERROR_LOOKUP')
234 --      then
235 --        null; -- No sub-lists for this step.
236 --      elsif (PARAM_NAME = 'CLEANUP_SQL')
237 --      then
238 --        null; -- No sub-lists for this step.
239       END IF;
240     END IF;
241 
242   END LOOP;
243   RETURN(RET);
244 END GET_IMPORT_LISTS;
245 
246 function GET_NAMED_ATTRIBUTE(ATTS IN BNE_ATTRIBUTES%ROWTYPE,
247                              NAME IN BNE_ATTRIBUTES.ATTRIBUTE_NAME1%TYPE)
248 RETURN VARCHAR2
249 IS
250   RET BNE_ATTRIBUTES.ATTRIBUTE1%TYPE;
251 BEGIN
252   if NAME is null
253   THEN
254     return(null);
255   end if;
256   if ATTS.ATTRIBUTE_NAME1 = name then
257     return(ATTS.ATTRIBUTE1);
258   elsif ATTS.ATTRIBUTE_NAME2 = name then
259     return(ATTS.ATTRIBUTE2);
260   elsif ATTS.ATTRIBUTE_NAME3 = name then
261     return(ATTS.ATTRIBUTE3);
262   elsif ATTS.ATTRIBUTE_NAME4 = name then
263     return(ATTS.ATTRIBUTE4);
264   elsif ATTS.ATTRIBUTE_NAME5 = name then
265     return(ATTS.ATTRIBUTE5);
266   elsif ATTS.ATTRIBUTE_NAME6 = name then
267     return(ATTS.ATTRIBUTE6);
268   elsif ATTS.ATTRIBUTE_NAME7 = name then
269     return(ATTS.ATTRIBUTE7);
270   elsif ATTS.ATTRIBUTE_NAME8 = name then
271     return(ATTS.ATTRIBUTE8);
272   elsif ATTS.ATTRIBUTE_NAME9 = name then
273     return(ATTS.ATTRIBUTE9);
274   elsif ATTS.ATTRIBUTE_NAME10 = name then
275     return(ATTS.ATTRIBUTE10);
276   elsif ATTS.ATTRIBUTE_NAME11 = name then
277     return(ATTS.ATTRIBUTE11);
278   elsif ATTS.ATTRIBUTE_NAME12 = name then
279     return(ATTS.ATTRIBUTE12);
280   elsif ATTS.ATTRIBUTE_NAME13 = name then
281     return(ATTS.ATTRIBUTE13);
282   elsif ATTS.ATTRIBUTE_NAME14 = name then
283     return(ATTS.ATTRIBUTE14);
284   elsif ATTS.ATTRIBUTE_NAME15 = name then
285     return(ATTS.ATTRIBUTE15);
286   elsif ATTS.ATTRIBUTE_NAME16 = name then
287     return(ATTS.ATTRIBUTE16);
288   elsif ATTS.ATTRIBUTE_NAME17 = name then
289     return(ATTS.ATTRIBUTE17);
290   elsif ATTS.ATTRIBUTE_NAME18 = name then
291     return(ATTS.ATTRIBUTE18);
292   elsif ATTS.ATTRIBUTE_NAME19 = name then
293     return(ATTS.ATTRIBUTE19);
294   elsif ATTS.ATTRIBUTE_NAME20 = name then
295     return(ATTS.ATTRIBUTE20);
296   elsif ATTS.ATTRIBUTE_NAME21 = name then
297     return(ATTS.ATTRIBUTE21);
298   elsif ATTS.ATTRIBUTE_NAME22 = name then
299     return(ATTS.ATTRIBUTE22);
300   elsif ATTS.ATTRIBUTE_NAME23 = name then
301     return(ATTS.ATTRIBUTE23);
302   elsif ATTS.ATTRIBUTE_NAME24 = name then
303     return(ATTS.ATTRIBUTE24);
304   elsif ATTS.ATTRIBUTE_NAME25 = name then
305     return(ATTS.ATTRIBUTE25);
306   elsif ATTS.ATTRIBUTE_NAME26 = name then
307     return(ATTS.ATTRIBUTE26);
308   elsif ATTS.ATTRIBUTE_NAME27 = name then
309     return(ATTS.ATTRIBUTE27);
310   elsif ATTS.ATTRIBUTE_NAME28 = name then
311     return(ATTS.ATTRIBUTE28);
312   elsif ATTS.ATTRIBUTE_NAME29 = name then
313     return(ATTS.ATTRIBUTE29);
314   elsif ATTS.ATTRIBUTE_NAME30 = name then
315     return(ATTS.ATTRIBUTE30);
316   else
317     return(null);
318   END IF;
319 END GET_NAMED_ATTRIBUTE;
320 
321 --------------------------------------------------------------------------------
322 --  FUNCTION:         GET_EXTENSIBLE_MENUS_LISTS                              --
323 --                                                                            --
324 --  DESCRIPTION:      Retrieve all code values for parameter lists used by    --
325 --                    the extensible menus functionality.                     --
326 --                                                                            --
327 --  MODIFICATION HISTORY                                                      --
328 --  Date         Username  Description                                        --
329 --  07-Dec-2005  DAGROVES  Created.                                           --
330 --------------------------------------------------------------------------------
331 function GET_EXTENSIBLE_MENUS_LISTS(X_CDPF_LIST_APP_ID IN NUMBER,
332                                     X_CDPF_LIST_CODE   IN VARCHAR2)
333 RETURN VARCHAR2
334 IS
335   RET            VARCHAR2(2000);
336   ATTS           BNE_ATTRIBUTES%ROWTYPE;
337   TMP            VARCHAR2(2000);
338   COLON_POSITION INTEGER;
339 
340   CURSOR C_LIST_FK(CP_APPLICATION_ID   NUMBER,
341                    CP_PARAM_LIST_CODE  VARCHAR2)
342   IS
343   SELECT A.*
344   FROM   BNE_PARAM_LIST_ITEMS LI, BNE_PARAM_DEFNS_B PD, BNE_ATTRIBUTES A
345   WHERE  LI.PARAM_DEFN_APP_ID = PD.APPLICATION_ID
346   AND    LI.PARAM_DEFN_CODE = PD.PARAM_DEFN_CODE
347   AND    PD.PARAM_SOURCE = 'WEBADI:ViewerExtension'
348   AND    A.APPLICATION_ID = PD.ATTRIBUTE_APP_ID
349   AND    A.ATTRIBUTE_CODE = PD.ATTRIBUTE_CODE
350   AND    LI.APPLICATION_ID  = CP_APPLICATION_ID
351   AND    LI.PARAM_LIST_CODE = CP_PARAM_LIST_CODE;
352 BEGIN
353   RET := NULL;
354   if X_CDPF_LIST_APP_ID is null OR
355      X_CDPF_LIST_CODE   is null
356   then
357     return(null);
358   end if;
359   --
360   OPEN C_LIST_FK(X_CDPF_LIST_APP_ID, X_CDPF_LIST_CODE);
361   FETCH C_LIST_FK INTO ATTS;
362   if C_LIST_FK%NOTFOUND then
363     CLOSE C_LIST_FK;
364     return(null);
365   end if;
366   CLOSE C_LIST_FK;
367   TMP := GET_NAMED_ATTRIBUTE(ATTS, 'PARAM_LIST_KEY');
368   if TMP is null
369   then
370     return(null);
371   end if;
372   COLON_POSITION := INSTR(TMP, ':');
373   RET            := TRIM(SUBSTR(TMP, COLON_POSITION+1));
374 
375   return(ret);
376 exception
377   when OTHERS then
378     if (C_LIST_FK%ISOPEN) then
379       close C_LIST_FK;
380     end if;
381 END GET_EXTENSIBLE_MENUS_LISTS;
382 
383 
384 --------------------------------------------------------------------------------
385 --  FUNCTION:         GET_ESC_EXTENSIBLE_MENUS_LISTS                          --
386 --                                                                            --
387 --  DESCRIPTION:      Retrieve all code values for parameter lists used by    --
388 --                    the extensible menus functionality.  The Menus codes are--
389 --                    surrounded by the '#' character to prevent substr probs.--
390 --                                                                            --
391 --  MODIFICATION HISTORY                                                      --
392 --  Date         Username  Description                                        --
393 --  07-Dec-2005  DAGROVES  Created.                                           --
394 --------------------------------------------------------------------------------
395 function GET_ESC_EXTENSIBLE_MENUS_LISTS(X_CDPF_LIST_APP_ID IN NUMBER,
396                                         X_CDPF_LIST_CODE   IN VARCHAR2)
397 RETURN VARCHAR2
398 IS
399   RET            VARCHAR2(2000);
400 BEGIN
401   RET := GET_EXTENSIBLE_MENUS_LISTS(X_CDPF_LIST_APP_ID, X_CDPF_LIST_CODE);
402   if RET is not NULL
403   then
404     return('#'||RET||'#');
405   end if;
406   return(null);
407 END GET_ESC_EXTENSIBLE_MENUS_LISTS;
408 
409 
410 
411 end BNE_LCT_TOOLS_PKG;