[Home] [Help]
PACKAGE BODY: APPS.BIS_PAGE_PUB
Source
1 PACKAGE BODY BIS_PAGE_PUB AS
2 /* $Header: BISPPGEB.pls 120.2 2005/08/11 22:56:26 ashankar noship $ */
3 --- Copyright (c) 2000 Oracle Corporation, Redwood Shores, CA, USA
4 --- All rights reserved.
5 ---
6 ---==========================================================================
7 --- FILENAME
8 ---
9 --- BISPPGEB.pls
10 ---
11 --- DESCRIPTION
12 --- Package Body File for Page transactions
13 ---
14 --- NOTES
15 ---
16 --- HISTORY
17 ---
18 --- 07-Oct-2003 mdamle Created
19 --- 03-Feb-2004 mdamle Change function name while migrating if different from internal name
20 --- 06-Feb-2004 mdamle Remove AK Region Integration
21 --- 18-Jan-2005 rpenneru Enh#4059160- Opening up FA in Designers |
22 --- 29-Jan-2005 vtulasi Enh#4102897- Increasing buffer size for function_name related variables
23 --- 21-MAR-2005 ankagarw bug#4235732 - changing count(*) to count(1) |
24 --- 13-JUL-2005 akoduri Bug #4368221 Added the function Get_Custom_View_Name|
25 -- 10-AUG-2005 ashankar Bug #4548914 Added a new Function Is_Simulatable_Cust_View |
26 ---===========================================================================
27
28 procedure Create_Page_Region(
29 p_internal_name IN VARCHAR2
30 ,p_application_id IN NUMBER
31 ,p_title IN VARCHAR2
32 ,p_page_function_name IN VARCHAR2
33 ,x_page_id OUT NOCOPY NUMBER
34 ,x_return_status OUT NOCOPY VARCHAR2
35 ,x_msg_count OUT NOCOPY NUMBER
36 ,x_msg_data OUT NOCOPY VARCHAR2
37 ) is
38
39 l_count NUMBER;
40 l_parameters FND_FORM_FUNCTIONS.Parameters%Type;
41 l_app_short_name VARCHAR2(30);
42 l_type VARCHAR2(30);
43 begin
44
45 fnd_msg_pub.initialize;
46
47 begin
48 select BIS_COMMON_UTILS.getParameterValue(parameters, c_SOURCE_TYPE) into l_type
49 from fnd_form_functions
50 where function_name = p_page_function_name;
51 exception
52 when no_data_found then l_type := null;
53 end;
54
55 if (l_type = c_FND_MENU) then
56 Migrate_Menu_To_MDS(
57 p_internal_name => p_internal_name,
58 p_application_id => p_application_id,
59 p_title => p_title,
60 p_page_function_name => p_page_function_name,
61 x_return_status => x_return_status,
62 x_msg_count => x_msg_count,
63 x_msg_data =>x_msg_data);
64
65 else
66 -- Check if either Form Function or Region code exists.
67
68 select count(1) into l_count
69 from fnd_form_functions
70 where function_name = p_internal_name;
71
72 if (l_count = 0) then
73 select count(1) into l_count
74 from ak_regions
75 where region_code = p_internal_name
76 and region_application_id = p_application_id;
77 end if;
78
79 if (l_count > 0) then
80 FND_MESSAGE.SET_NAME('BIS','BIS_PD_UNIQUE_PGE_ERR');
81 FND_MSG_PUB.ADD;
82 RAISE FND_API.G_EXC_ERROR;
83 end if;
84
85 -- Insert new Region
86 BIS_AK_REGION_PUB.INSERT_REGION_ROW (
87 p_REGION_CODE => p_internal_name,
88 p_REGION_APPLICATION_ID => p_application_id,
89 p_DATABASE_OBJECT_NAME => c_DUMMY_DB_OBJECT,
90 p_APPL_MODULE_OBJECT_TYPE => c_APP_MOD,
91 p_NAME => p_title,
92 p_REGION_STYLE => c_PAGE_LAYOUT,
93 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
94 x_return_status => x_return_status,
95 x_msg_count => x_msg_count,
96 x_msg_data =>x_msg_data);
97
98 -- Insert Form Function
99 select lower(application_short_name) into l_app_short_name
100 from fnd_application
101 where application_id = p_application_id;
102
103 l_parameters := c_PAGE_NAME || '=' || c_MDS_PATH_PRE || l_app_short_name || c_MDS_PATH_POST || p_internal_name || '&' ||
104 c_SOURCE_TYPE || '=' || c_MDS;
105
106
107 BIS_FORM_FUNCTIONS_PUB.INSERT_ROW (
108 p_FUNCTION_NAME => p_internal_name,
109 p_WEB_HTML_CALL => c_WEB_HTML_CALL,
110 p_PARAMETERS => l_parameters,
111 p_TYPE => c_FUNCTION_TYPE,
112 p_USER_FUNCTION_NAME => p_title,
113 x_FUNCTION_ID => x_page_id,
114 x_return_status => x_return_status,
115 x_msg_count => x_msg_count,
116 x_msg_data =>x_msg_data);
117 end if;
118
119 EXCEPTION
120 WHEN FND_API.G_EXC_ERROR THEN
121 x_return_status := FND_API.G_RET_STS_ERROR;
122 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
123 ,p_data => x_msg_data);
124 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
125 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
126 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
127 ,p_data => x_msg_data);
128 WHEN NO_DATA_FOUND THEN
129 x_return_status := FND_API.G_RET_STS_ERROR;
130 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
131 ,p_data => x_msg_data);
132 WHEN OTHERS THEN
133 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
134 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
135 ,p_data => x_msg_data);
136 if (x_msg_data is null) then
137 x_msg_data := SQLERRM;
138 end if;
139
140 end CREATE_PAGE_REGION;
141
142 procedure Update_Page_Region(
143 p_internal_name IN VARCHAR2
144 ,p_application_id IN NUMBER
145 ,p_title IN VARCHAR2
146 ,p_page_id IN NUMBER
147 ,p_new_internal_name IN VARCHAR2
148 ,p_new_application_id IN NUMBER
149 ,x_return_status OUT NOCOPY VARCHAR2
150 ,x_msg_count OUT NOCOPY NUMBER
151 ,x_msg_data OUT NOCOPY VARCHAR2
152 ) is
153
154 l_count NUMBER;
155 l_parameters FND_FORM_FUNCTIONS.Parameters%Type;
156 l_app_short_name VARCHAR2(30);
157 l_new_internal_name VARCHAR2 (30);
158 l_new_application_id NUMBER;
159
160 begin
161
162 fnd_msg_pub.initialize;
163
164 if p_new_internal_name is null then
165 l_new_internal_name := p_internal_name;
166 else
167 l_new_internal_name := p_new_internal_name;
168 end if;
169
170 if p_new_application_id is null then
171 l_new_application_id := p_application_id;
172 else
173 l_new_application_id := p_new_application_id;
174 end if;
175
176 if (l_new_internal_name = p_internal_name and p_application_id = l_new_application_id) then
177 -- Update existing Region
178 BIS_AK_REGION_PUB.UPDATE_REGION_ROW (
179 p_REGION_CODE => p_internal_name,
180 p_REGION_APPLICATION_ID => p_application_id,
181 p_DATABASE_OBJECT_NAME => c_DUMMY_DB_OBJECT,
182 p_NAME => p_title,
183 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
184 x_return_status => x_return_status,
185 x_msg_count => x_msg_count,
186 x_msg_data =>x_msg_data);
187
188 -- Update Form Function
189 BIS_FORM_FUNCTIONS_PUB.UPDATE_ROW (
190 p_FUNCTION_ID => p_page_id,
191 p_USER_FUNCTION_NAME => p_title,
192 x_return_status => x_return_status,
193 x_msg_count => x_msg_count,
194 x_msg_data =>x_msg_data);
195
196 else
197 -- If user changes the form function name or the application id
198
199 -- Check if form function/region exists
200
201 select count(1) into l_count
202 from fnd_form_functions
203 where function_name = l_new_internal_name;
204
205 if (l_count = 0) then
206 select count(1) into l_count
207 from ak_regions
208 where region_code = l_new_internal_name
209 and region_application_id = l_new_application_id;
210 end if;
211
212 if (l_count > 0) then
213 FND_MESSAGE.SET_NAME('BIS','BIS_PD_UNIQUE_PGE_ERR');
214 FND_MSG_PUB.ADD;
215 RAISE FND_API.G_EXC_ERROR;
216 end if;
217
218 -- Delete existing region
219 BIS_AK_REGION_PUB.DELETE_REGION_ROW(
220 p_REGION_CODE => p_internal_name,
221 p_REGION_APPLICATION_ID => p_application_id,
222 x_return_status => x_return_status,
223 x_msg_count => x_msg_count,
224 x_msg_data =>x_msg_data);
225
226 -- Create new region
227 BIS_AK_REGION_PUB.INSERT_REGION_ROW (
228 p_REGION_CODE => l_new_internal_name,
229 p_REGION_APPLICATION_ID => l_new_application_id,
230 p_DATABASE_OBJECT_NAME => c_DUMMY_DB_OBJECT,
231 p_APPL_MODULE_OBJECT_TYPE => c_APP_MOD,
232 p_NAME => p_title,
233 p_REGION_STYLE => c_PAGE_LAYOUT,
234 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
235 x_return_status => x_return_status,
236 x_msg_count => x_msg_count,
237 x_msg_data =>x_msg_data);
238
239 -- Update Form Function
240 select lower(application_short_name) into l_app_short_name
241 from fnd_application
242 where application_id = l_new_application_id;
243
244 select parameters into l_parameters from fnd_form_functions
245 where function_id = p_page_id;
246
247 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_PAGE_NAME, c_MDS_PATH_PRE || l_app_short_name || c_MDS_PATH_POST || l_new_internal_name);
248
249 if l_new_internal_name <> p_internal_name then
250 UPDATE fnd_form_functions
251 SET function_name = l_new_internal_name
252 WHERE function_id = p_page_id;
253 end if;
254
255 BIS_FORM_FUNCTIONS_PUB.UPDATE_ROW (
256 p_FUNCTION_ID => p_page_id,
257 p_USER_FUNCTION_NAME => p_title,
258 p_PARAMETERS => l_parameters,
259 x_return_status => x_return_status,
260 x_msg_count => x_msg_count,
261 x_msg_data =>x_msg_data);
262
263 end if;
264
265 -- Delete Page Racks and Rack Items
266 Delete_Page_Racks(
267 p_internal_name => p_internal_name,
268 p_application_id => p_application_id,
269 x_return_status => x_return_status,
270 x_msg_count => x_msg_count,
271 x_msg_data =>x_msg_data);
272
273
274 EXCEPTION
275 WHEN FND_API.G_EXC_ERROR THEN
276 x_return_status := FND_API.G_RET_STS_ERROR;
277 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
278 ,p_data => x_msg_data);
279 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
280 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
281 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
282 ,p_data => x_msg_data);
283 WHEN NO_DATA_FOUND THEN
284 x_return_status := FND_API.G_RET_STS_ERROR;
285 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
286 ,p_data => x_msg_data);
287 WHEN OTHERS THEN
288 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
289 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
290 ,p_data => x_msg_data);
291 if (x_msg_data is null) then
292 x_msg_data := SQLERRM;
293 end if;
294
295 end Update_page_Region;
296
297 Procedure Delete_Page_Region (
298 p_internal_name IN VARCHAR2
299 ,p_application_id IN NUMBER
300 ,p_page_id IN NUMBER
301 ,x_return_status OUT NOCOPY VARCHAR2
302 ,x_msg_count OUT NOCOPY NUMBER
303 ,x_msg_data OUT NOCOPY VARCHAR2
304 ) is
305
306 begin
307 fnd_msg_pub.initialize;
308
309 -- Delete Page Racks and Rack Items
310 Delete_Page_Racks(
311 p_internal_name => p_internal_name,
312 p_application_id => p_application_id,
313 x_return_status => x_return_status,
314 x_msg_count => x_msg_count,
315 x_msg_data =>x_msg_data);
316
317 BIS_AK_REGION_PUB.DELETE_REGION_ROW(
318 p_REGION_CODE => p_internal_name,
319 p_REGION_APPLICATION_ID => p_application_id,
320 x_return_status => x_return_status,
321 x_msg_count => x_msg_count,
322 x_msg_data =>x_msg_data);
323
324 BIS_FORM_FUNCTIONS_PUB.DELETE_ROW(
325 p_FUNCTION_ID => p_page_id,
326 x_return_status => x_return_status,
327 x_msg_count => x_msg_count,
328 x_msg_data =>x_msg_data);
329
330 EXCEPTION
331 WHEN FND_API.G_EXC_ERROR THEN
332 x_return_status := FND_API.G_RET_STS_ERROR;
333 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
334 ,p_data => x_msg_data);
335 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
336 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
337 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
338 ,p_data => x_msg_data);
339 WHEN NO_DATA_FOUND THEN
340 x_return_status := FND_API.G_RET_STS_ERROR;
341 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
342 ,p_data => x_msg_data);
343 WHEN OTHERS THEN
344 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
345 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
346 ,p_data => x_msg_data);
347 if (x_msg_data is null) then
348 x_msg_data := SQLERRM;
349 end if;
350
351
352 END Delete_Page_Region;
353
354 procedure Create_Rack_Region(
355 p_internal_name IN VARCHAR2
356 ,p_application_id IN NUMBER
357 ,x_return_status OUT NOCOPY VARCHAR2
358 ,x_msg_count OUT NOCOPY NUMBER
359 ,x_msg_data OUT NOCOPY VARCHAR2
360 ) is
361
362 begin
363
364 fnd_msg_pub.initialize;
365
366 -- Insert new Region
367 BIS_AK_REGION_PUB.INSERT_REGION_ROW (
368 p_REGION_CODE => p_internal_name,
369 p_REGION_APPLICATION_ID => p_application_id,
370 p_DATABASE_OBJECT_NAME => c_DUMMY_DB_OBJECT,
371 p_NAME => p_internal_name,
372 p_REGION_STYLE => c_ROW_LAYOUT,
373 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
374 x_return_status => x_return_status,
375 x_msg_count => x_msg_count,
376 x_msg_data =>x_msg_data);
377
378
379 EXCEPTION
380 WHEN FND_API.G_EXC_ERROR THEN
381 x_return_status := FND_API.G_RET_STS_ERROR;
382 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
383 ,p_data => x_msg_data);
384 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
385 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
386 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
387 ,p_data => x_msg_data);
388 WHEN NO_DATA_FOUND THEN
389 x_return_status := FND_API.G_RET_STS_ERROR;
390 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
391 ,p_data => x_msg_data);
392 WHEN OTHERS THEN
393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
394 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
395 ,p_data => x_msg_data);
396 if (x_msg_data is null) then
397 x_msg_data := SQLERRM;
398 end if;
399
400 end CREATE_RACK_REGION;
401
402
403 Procedure Delete_Rack_Region (
404 p_internal_name IN VARCHAR2
405 ,p_application_id IN NUMBER
406 ,x_return_status OUT NOCOPY VARCHAR2
407 ,x_msg_count OUT NOCOPY NUMBER
408 ,x_msg_data OUT NOCOPY VARCHAR2
409 ) is
410 begin
411
412 fnd_msg_pub.initialize;
413
414 delete_region_items(
415 p_internal_name => p_internal_name,
416 p_application_id => p_application_id,
417 x_return_status => x_return_status,
418 x_msg_count => x_msg_count,
419 x_msg_data =>x_msg_data);
420
421 BIS_AK_REGION_PUB.DELETE_REGION_ROW(
422 p_REGION_CODE => p_internal_name,
423 p_REGION_APPLICATION_ID => p_application_id,
424 x_return_status => x_return_status,
425 x_msg_count => x_msg_count,
426 x_msg_data =>x_msg_data);
427
428 EXCEPTION
429 WHEN FND_API.G_EXC_ERROR THEN
430 x_return_status := FND_API.G_RET_STS_ERROR;
431 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
432 ,p_data => x_msg_data);
433 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
434 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
435 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
436 ,p_data => x_msg_data);
437 WHEN NO_DATA_FOUND THEN
438 x_return_status := FND_API.G_RET_STS_ERROR;
439 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
440 ,p_data => x_msg_data);
441 WHEN OTHERS THEN
442 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
443 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
444 ,p_data => x_msg_data);
445 if (x_msg_data is null) then
446 x_msg_data := SQLERRM;
447 end if;
448
449 END Delete_Rack_Region;
450
451 procedure Create_Rack_Item(
452 p_internal_name IN VARCHAR2
453 ,p_application_id IN NUMBER
454 ,p_rack_Num IN NUMBER
455 ,p_display_flag IN VARCHAR2 := 'Y'
456 ,p_rack_region IN VARCHAR2
457 ,p_rack_region_application_id IN NUMBER
458 ,x_return_status OUT NOCOPY VARCHAR2
459 ,x_msg_count OUT NOCOPY NUMBER
460 ,x_msg_data OUT NOCOPY VARCHAR2
461 ) is
462
463 begin
464
465 fnd_msg_pub.initialize;
466
467 -- Insert the Rack Region Item
468
469 BIS_AK_REGION_PUB.INSERT_REGION_ITEM_ROW (
470 p_REGION_CODE => p_internal_name,
471 p_REGION_APPLICATION_ID => p_application_id,
472 p_ATTRIBUTE_CODE => c_RACK_ATTRIBUTE_CODE || p_Rack_Num,
473 p_ATTRIBUTE_APPLICATION_ID => c_BIS_APP_ID,
474 p_DISPLAY_SEQUENCE => p_Rack_Num,
475 p_NODE_DISPLAY_FLAG => p_display_flag,
476 p_NESTED_REGION_CODE => p_rack_region,
477 p_NESTED_REGION_APPL_ID => p_rack_region_application_id,
478 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
479 x_return_status => x_return_status,
480 x_msg_count => x_msg_count,
481 x_msg_data =>x_msg_data);
482
483 EXCEPTION
484 WHEN FND_API.G_EXC_ERROR THEN
485 x_return_status := FND_API.G_RET_STS_ERROR;
486 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
487 ,p_data => x_msg_data);
488 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
490 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
491 ,p_data => x_msg_data);
492 WHEN NO_DATA_FOUND THEN
493 x_return_status := FND_API.G_RET_STS_ERROR;
494 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
495 ,p_data => x_msg_data);
496 WHEN OTHERS THEN
497 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
498 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
499 ,p_data => x_msg_data);
500 if (x_msg_data is null) then
501 x_msg_data := SQLERRM;
502 end if;
503
504 end Create_Rack_Item;
505
506 Procedure Delete_Rack_Item (
507 p_internal_name IN VARCHAR2
508 ,p_application_id IN NUMBER
509 ,p_rack_Num IN NUMBER
510 ,x_return_status OUT NOCOPY VARCHAR2
511 ,x_msg_count OUT NOCOPY NUMBER
512 ,x_msg_data OUT NOCOPY VARCHAR2
513 ) is
514 begin
515
516 fnd_msg_pub.initialize;
517
518 BIS_AK_REGION_PUB.DELETE_REGION_ITEM_ROW(
519 p_REGION_CODE => p_internal_name,
520 p_REGION_APPLICATION_ID => p_application_id,
521 p_ATTRIBUTE_CODE => c_RACK_ATTRIBUTE_CODE || p_Rack_Num,
522 p_ATTRIBUTE_APPLICATION_ID => c_BIS_APP_ID,
523 x_return_status => x_return_status,
524 x_msg_count => x_msg_count,
525 x_msg_data =>x_msg_data);
526
527
528 EXCEPTION
529 WHEN FND_API.G_EXC_ERROR THEN
530 x_return_status := FND_API.G_RET_STS_ERROR;
531 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
532 ,p_data => x_msg_data);
533 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
534 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
535 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
536 ,p_data => x_msg_data);
537 WHEN NO_DATA_FOUND THEN
538 x_return_status := FND_API.G_RET_STS_ERROR;
539 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
540 ,p_data => x_msg_data);
541 WHEN OTHERS THEN
542 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
543 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
544 ,p_data => x_msg_data);
545 if (x_msg_data is null) then
546 x_msg_data := SQLERRM;
547 end if;
548
549 END Delete_Rack_Item;
550
551 procedure Create_Portlet_Item(
552 p_internal_name IN VARCHAR2
553 ,p_application_id IN NUMBER
554 ,p_Portlet_Num IN NUMBER
555 ,p_display_flag IN VARCHAR2 := 'Y'
556 ,p_function_name IN VARCHAR2
557 ,p_title IN VARCHAR2
558 ,x_return_status OUT NOCOPY VARCHAR2
559 ,x_msg_count OUT NOCOPY NUMBER
560 ,x_msg_data OUT NOCOPY VARCHAR2
561 ) is
562
563 begin
564
565 fnd_msg_pub.initialize;
566
567 -- Insert the Portlet Region Item
568
569 BIS_AK_REGION_PUB.INSERT_REGION_ITEM_ROW (
570 p_REGION_CODE => p_internal_name,
571 p_REGION_APPLICATION_ID => p_application_id,
572 p_ATTRIBUTE_CODE => c_PORTLET_ATTRIBUTE_CODE || p_Portlet_Num,
573 p_ATTRIBUTE_APPLICATION_ID => c_BIS_APP_ID,
574 p_DISPLAY_SEQUENCE => p_Portlet_Num,
575 p_NODE_DISPLAY_FLAG => p_display_flag,
576 p_ATTRIBUTE_LABEL_LONG => p_Title,
577 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
578 p_ATTRIBUTE1 => p_function_name,
579 x_return_status => x_return_status,
580 x_msg_count => x_msg_count,
581 x_msg_data =>x_msg_data);
582
583 EXCEPTION
584 WHEN FND_API.G_EXC_ERROR THEN
585 x_return_status := FND_API.G_RET_STS_ERROR;
586 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
587 ,p_data => x_msg_data);
588 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
589 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
590 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
591 ,p_data => x_msg_data);
592 WHEN NO_DATA_FOUND THEN
593 x_return_status := FND_API.G_RET_STS_ERROR;
594 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
595 ,p_data => x_msg_data);
596 WHEN OTHERS THEN
597 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
598 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
599 ,p_data => x_msg_data);
600 if (x_msg_data is null) then
601 x_msg_data := SQLERRM;
602 end if;
603
604 end Create_Portlet_Item;
605
606 Procedure Delete_Rack_Item (
607 p_internal_name IN VARCHAR2
608 ,p_application_id IN NUMBER
609 ,p_portlet_Num IN NUMBER
610 ,x_return_status OUT NOCOPY VARCHAR2
611 ,x_msg_count OUT NOCOPY NUMBER
612 ,x_msg_data OUT NOCOPY VARCHAR2
613 ) is
614 begin
615
616 fnd_msg_pub.initialize;
617
618 BIS_AK_REGION_PUB.DELETE_REGION_ITEM_ROW(
619 p_REGION_CODE => p_internal_name,
620 p_REGION_APPLICATION_ID => p_application_id,
621 p_ATTRIBUTE_CODE => c_PORTLET_ATTRIBUTE_CODE || p_Portlet_Num,
622 p_ATTRIBUTE_APPLICATION_ID => c_BIS_APP_ID,
623 x_return_status => x_return_status,
624 x_msg_count => x_msg_count,
625 x_msg_data =>x_msg_data);
626
627 EXCEPTION
628 WHEN FND_API.G_EXC_ERROR THEN
629 x_return_status := FND_API.G_RET_STS_ERROR;
630 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
631 ,p_data => x_msg_data);
632 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
633 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
634 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
635 ,p_data => x_msg_data);
636 WHEN NO_DATA_FOUND THEN
637 x_return_status := FND_API.G_RET_STS_ERROR;
638 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
639 ,p_data => x_msg_data);
640 WHEN OTHERS THEN
641 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
642 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
643 ,p_data => x_msg_data);
644 if (x_msg_data is null) then
645 x_msg_data := SQLERRM;
646 end if;
647
648 END Delete_Rack_Item;
649
650 Procedure Delete_Page_Racks (
651 p_internal_name IN VARCHAR2
652 ,p_application_id IN NUMBER
653 ,x_return_status OUT NOCOPY VARCHAR2
654 ,x_msg_count OUT NOCOPY NUMBER
655 ,x_msg_data OUT NOCOPY VARCHAR2
656 ) is
657
658 cursor pageRacks_cursor IS
659 select nested_region_code, nested_region_application_id
660 from ak_region_items
661 where region_code = p_internal_name
662 and region_application_id = p_application_id;
663
664 begin
665
666 if pageRacks_cursor%ISOPEN THEN
667 CLOSE pageRacks_cursor;
668 end if;
669
670 for cr in pageRacks_cursor loop
671 Delete_Rack_Region(
672 p_internal_name => cr.nested_region_code,
673 p_application_id => cr.nested_region_application_id,
674 x_return_status => x_return_status,
675 x_msg_count => x_msg_count,
676 x_msg_data =>x_msg_data);
677 end loop;
678
679 delete_region_items(
680 p_internal_name => p_internal_name,
681 p_application_id => p_application_id,
682 x_return_status => x_return_status,
683 x_msg_count => x_msg_count,
684 x_msg_data =>x_msg_data);
685
686 if pageRacks_cursor%ISOPEN THEN
687 CLOSE pageRacks_cursor;
688 end if;
689
690 EXCEPTION
691 WHEN FND_API.G_EXC_ERROR THEN
692 x_return_status := FND_API.G_RET_STS_ERROR;
693 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
694 ,p_data => x_msg_data);
695 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
696 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
697 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
698 ,p_data => x_msg_data);
699 WHEN NO_DATA_FOUND THEN
700 x_return_status := FND_API.G_RET_STS_ERROR;
701 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
702 ,p_data => x_msg_data);
703 WHEN OTHERS THEN
704 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
705 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
706 ,p_data => x_msg_data);
707 if (x_msg_data is null) then
708 x_msg_data := SQLERRM;
709 end if;
710
711
712 END Delete_Page_Racks;
713
714 Procedure Delete_Region_Items (
715 p_internal_name IN VARCHAR2
716 ,p_application_id IN NUMBER
717 ,x_return_status OUT NOCOPY VARCHAR2
718 ,x_msg_count OUT NOCOPY NUMBER
719 ,x_msg_data OUT NOCOPY VARCHAR2
720 ) is
721
722 cursor items_cursor IS
723 select attribute_code, attribute_application_id
724 from ak_region_items
725 where region_code = p_internal_name
726 and region_application_id = p_application_id;
727
728 begin
729 if items_cursor%ISOPEN then
730 close items_cursor;
731 end if;
732
733 for cr in items_cursor loop
734 BIS_AK_REGION_PUB.DELETE_REGION_ITEM_ROW(
735 p_REGION_CODE => p_internal_name,
736 p_REGION_APPLICATION_ID => p_application_id,
737 p_ATTRIBUTE_CODE => cr.attribute_code,
738 p_ATTRIBUTE_APPLICATION_ID => cr.attribute_application_id,
739 x_return_status => x_return_status,
740 x_msg_count => x_msg_count,
741 x_msg_data =>x_msg_data);
742 end loop;
743
744 if items_cursor%ISOPEN then
745 close items_cursor;
746 end if;
747
748 EXCEPTION
749 WHEN FND_API.G_EXC_ERROR THEN
750 x_return_status := FND_API.G_RET_STS_ERROR;
751 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
752 ,p_data => x_msg_data);
753 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
754 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
755 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
756 ,p_data => x_msg_data);
757 WHEN NO_DATA_FOUND THEN
758 x_return_status := FND_API.G_RET_STS_ERROR;
759 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
760 ,p_data => x_msg_data);
761 WHEN OTHERS THEN
762 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
763 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
764 ,p_data => x_msg_data);
765 if (x_msg_data is null) then
766 x_msg_data := SQLERRM;
767 end if;
768
769
770 END Delete_Region_Items;
771
772 function getUniqueRegion(
773 p_internal_name IN VARCHAR2
774 ,p_application_id IN NUMBER) return VARCHAR2 is
775
776 l_region_code VARCHAR2(30);
777 l_count NUMBER;
778 l_done BOOLEAN := false;
779 l_index NUMBER := 0;
780 l_ascii NUMBER;
781 cursor regions_cursor(p_region_code varchar2) IS
782 select region_code
783 from ak_regions
784 where region_code like p_region_code || '%'
785 and region_application_id = p_application_id;
786
787 BEGIN
788
789 if regions_cursor%ISOPEN THEN
790 CLOSE regions_cursor;
791 end if;
792
793 l_region_code := p_internal_name;
794
795 -- Keep 2 characters for rack num
796 if (length(l_region_code) > 28) then
797 -- Truncate to 28 characters
798 l_region_code := substr(l_region_code, 1, 28);
799 end if;
800
801 while (l_index < 99 and not l_done) loop
802 l_count := 0;
803 for cr in regions_cursor(l_region_Code) loop
804 l_ascii := ascii(substr(cr.region_code, length(l_region_code)+1));
805 if ((cr.region_code = l_region_code) or (l_ascii >=48 and l_ascii <= 57)) then
806 l_count := 1;
807 end if;
808 end loop;
809
810 if (l_count > 0) then
811 if (length(l_region_code) = 28) then
812 -- Truncate one more time and append a counter
813 l_index := l_index + 1;
814 l_region_code := substr(l_region_code, 1, 27) || l_index;
815 else
816 l_index := l_index + 1;
817 l_region_code := p_internal_name || l_index;
818 end if;
819 else
820 l_done := true;
821 end if;
822
823 end loop;
824
825 if not l_done then
826 l_region_code := null;
827 end if;
828
829 if regions_cursor%ISOPEN THEN
830 CLOSE regions_cursor;
831 end if;
832
833 return l_region_code;
834 EXCEPTION
835 WHEN OTHERS THEN return null;
836
837 END getUniqueRegion;
838
839 procedure Migrate_Menu_To_MDS(
840 p_internal_name IN VARCHAR2
841 ,p_application_id IN NUMBER
842 ,p_title IN VARCHAR2
843 ,p_page_function_name IN VARCHAR2
844 ,x_return_status OUT NOCOPY VARCHAR2
845 ,x_msg_count OUT NOCOPY NUMBER
846 ,x_msg_data OUT NOCOPY VARCHAR2
847 ) is
848
849 l_count NUMBER := 0;
850 l_parameters FND_FORM_FUNCTIONS.Parameters%Type := null;
851 l_function_id NUMBER := NULL;
852 l_menu_name FND_MENUS.Menu_Name%Type := NULL;
853 l_menu_id NUMBER := NULL;
854 l_attr_category VARCHAR2(30) := NULL;
855 l_app_short_name VARCHAR2(30);
856 begin
857
858 -- Check if Region code exists.
859 begin
860 select 1, attribute_category into l_count, l_attr_category
861 from ak_regions
862 where region_code = p_internal_name
863 and region_application_id = p_application_id;
864 exception
865 when no_data_found then l_count := 0;
866 end;
867
868 if (l_count > 0) then
869 if (l_attr_category = c_ATTRIBUTE_CATEGORY) then
870 -- Already migrated, but migration is running again for some reason
871 -- Delete the region and re-migrate
872 Delete_Page_Racks(
873 p_internal_name => p_internal_name,
874 p_application_id => p_application_id,
875 x_return_status => x_return_status,
876 x_msg_count => x_msg_count,
877 x_msg_data =>x_msg_data);
878 BIS_AK_REGION_PUB.DELETE_REGION_ROW(
879 p_REGION_CODE => p_internal_name,
880 p_REGION_APPLICATION_ID => p_application_id,
881 x_return_status => x_return_status,
882 x_msg_count => x_msg_count,
883 x_msg_data =>x_msg_data);
884 else
885 FND_MESSAGE.SET_NAME('BIS','BIS_PD_UNIQUE_PGE_ERR');
886 FND_MSG_PUB.ADD;
887 RAISE FND_API.G_EXC_ERROR;
888 end if;
889 end if;
890
891 -- Insert new Region
892 BIS_AK_REGION_PUB.INSERT_REGION_ROW (
893 p_REGION_CODE => p_internal_name,
894 p_REGION_APPLICATION_ID => p_application_id,
895 p_DATABASE_OBJECT_NAME => c_DUMMY_DB_OBJECT,
896 p_NAME => p_title,
897 p_REGION_STYLE => c_PAGE_LAYOUT,
898 p_APPL_MODULE_OBJECT_TYPE => c_APP_MOD,
899 p_ATTRIBUTE_CATEGORY => c_ATTRIBUTE_CATEGORY,
900 x_return_status => x_return_status,
901 x_msg_count => x_msg_count,
902 x_msg_data =>x_msg_data);
903
904
905 select parameters, function_id into l_parameters, l_function_id
906 from fnd_form_functions
907 where function_name = p_page_function_name;
908
909 select lower(application_short_name) into l_app_short_name
910 from fnd_application
911 where application_id = p_application_id;
912
913 l_menu_name := BIS_COMMON_UTILS.getParameterValue(l_parameters, c_PAGE_NAME);
914
915 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_PAGE_NAME, c_MDS_PATH_PRE || l_app_short_name || c_MDS_PATH_POST || p_internal_name);
916 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_SOURCE_TYPE, c_MDS);
917 -- This is put back just in case you need to go back to the FND_MENU
918 -- Will be added only for migrated functions.
919 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_MENU_NAME, l_menu_name);
920
921 -- Update Form Function
922 BIS_FORM_FUNCTIONS_PUB.UPDATE_ROW (
923 p_FUNCTION_ID => l_function_id,
924 p_PARAMETERS => l_parameters,
925 x_return_status => x_return_status,
926 x_msg_count => x_msg_count,
927 x_msg_data =>x_msg_data);
928
929 -- mdamle 02/03/2004 - Update function name
930 if p_page_function_name <> p_internal_name then
931 UPDATE fnd_form_functions
932 SET function_name = p_internal_name
933 WHERE function_id = l_function_id;
934 end if;
935
936
937
938 EXCEPTION
939 WHEN FND_API.G_EXC_ERROR THEN
940 x_return_status := FND_API.G_RET_STS_ERROR;
941 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
942 ,p_data => x_msg_data);
943 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
944 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
945 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
946 ,p_data => x_msg_data);
947 WHEN NO_DATA_FOUND THEN
948 x_return_status := FND_API.G_RET_STS_ERROR;
949 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
950 ,p_data => x_msg_data);
951 WHEN OTHERS THEN
952 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
953 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
954 ,p_data => x_msg_data);
955 if (x_msg_data is null) then
956 x_msg_data := SQLERRM;
957 end if;
958 end Migrate_Menu_To_MDS;
959
960
961 -- mdamle 02/06/2004 - Remove AK Region Integration
962 procedure Create_Page_Function(
963 p_page_function_name IN VARCHAR2
964 ,p_application_id IN NUMBER
965 ,p_title IN VARCHAR2
966 ,p_page_xml_name IN VARCHAR2 := null
967 ,p_description IN VARCHAR2 := NULL
968 ,x_page_id OUT NOCOPY NUMBER
969 ,x_return_status OUT NOCOPY VARCHAR2
970 ,x_msg_count OUT NOCOPY NUMBER
971 ,x_msg_data OUT NOCOPY VARCHAR2
972 ) is
973
974 l_count NUMBER;
975 l_parameters FND_FORM_FUNCTIONS.Parameters%Type;
976 l_app_short_name VARCHAR2(30);
977 l_page_xml_name FND_FORM_FUNCTIONS.FUNCTION_NAME%TYPE;
978 begin
979 fnd_msg_pub.initialize;
980
981 select count(1) into l_count
982 from fnd_form_functions
983 where function_name = p_page_function_name;
984
985 if (l_count > 0) then
986 -- Trying to update a non-page function.
987 FND_MESSAGE.SET_NAME('BIS','BIS_PD_UNIQUE_PGE_ERR');
988 FND_MSG_PUB.ADD;
989 RAISE FND_API.G_EXC_ERROR;
990 else
991
992 select lower(application_short_name) into l_app_short_name
993 from fnd_application
994 where application_id = p_application_id;
995
996 -- Insert Form Function
997
998 if(p_page_xml_name is null) then
999 l_page_xml_name := p_page_function_name;
1000 else
1001 l_page_xml_name := p_page_xml_name;
1002 end if;
1003
1004 l_parameters := c_PAGE_NAME || '=' || c_MDS_PATH_PRE || l_app_short_name || c_MDS_PATH_POST || l_page_xml_name || '&' ||
1005 c_SOURCE_TYPE || '=' || c_MDS;
1006
1007
1008 BIS_FORM_FUNCTIONS_PUB.INSERT_ROW (
1009 p_FUNCTION_NAME => p_page_function_name,
1010 p_WEB_HTML_CALL => c_WEB_HTML_CALL,
1011 p_PARAMETERS => l_parameters,
1012 p_TYPE => c_FUNCTION_TYPE,
1013 p_USER_FUNCTION_NAME => p_title,
1014 p_DESCRIPTION => p_description,
1015 x_FUNCTION_ID => x_page_id,
1016 x_return_status => x_return_status,
1017 x_msg_count => x_msg_count,
1018 x_msg_data =>x_msg_data);
1019 end if;
1020
1021 EXCEPTION
1022 WHEN FND_API.G_EXC_ERROR THEN
1023 x_return_status := FND_API.G_RET_STS_ERROR;
1024 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1025 ,p_data => x_msg_data);
1026 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1027 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1028 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1029 ,p_data => x_msg_data);
1030 WHEN NO_DATA_FOUND THEN
1031 x_return_status := FND_API.G_RET_STS_ERROR;
1032 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1033 ,p_data => x_msg_data);
1034 WHEN OTHERS THEN
1035 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1036 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1037 ,p_data => x_msg_data);
1038 if (x_msg_data is null) then
1039 x_msg_data := SQLERRM;
1040 end if;
1041
1042 end Create_Page_Function;
1043
1044 -- mdamle 02/06/2004 - Remove AK Region Integration
1045 procedure Update_Page_Function(
1046 p_page_function_name IN VARCHAR2
1047 ,p_application_id IN NUMBER
1048 ,p_title IN VARCHAR2
1049 ,p_page_xml_name IN VARCHAR2 := null
1050 ,p_new_page_function_name IN VARCHAR2
1051 ,p_new_application_id IN NUMBER
1052 ,p_new_page_xml_name IN VARCHAR2 := null
1053 ,p_description IN VARCHAR2 := NULL
1054 ,x_return_status OUT NOCOPY VARCHAR2
1055 ,x_msg_count OUT NOCOPY NUMBER
1056 ,x_msg_data OUT NOCOPY VARCHAR2
1057 ) is
1058
1059 l_count NUMBER;
1060 l_function_id NUMBER := 0;
1061 l_parameters FND_FORM_FUNCTIONS.Parameters%Type;
1062 l_app_short_name VARCHAR2(30);
1063 l_type VARCHAR2(30);
1064 l_page_function_name FND_FORM_FUNCTIONS.FUNCTION_NAME%TYPE;
1065 l_application_id NUMBER;
1066 l_menu_name FND_MENUS.Menu_Name%Type := NULL;
1067 l_page_xml_name FND_FORM_FUNCTIONS.FUNCTION_NAME%TYPE;
1068 begin
1069 fnd_msg_pub.initialize;
1070
1071 begin
1072 select BIS_COMMON_UTILS.getParameterValue(parameters, c_SOURCE_TYPE),
1073 function_id,
1074 parameters
1075 into l_type, l_function_id, l_parameters
1076 from fnd_form_functions
1077 where function_name = p_page_function_name;
1078 exception
1079 when no_data_found then l_type := null;
1080 end;
1081
1082 if p_new_page_function_name is null then
1083 l_page_function_name := p_page_function_name;
1084 else
1085 l_page_function_name := p_new_page_function_name;
1086 end if;
1087
1088 if p_new_application_id is null then
1089 l_application_id := p_application_id;
1090 else
1091 l_application_id := p_new_application_id;
1092 end if;
1093
1094 select lower(application_short_name) into l_app_short_name
1095 from fnd_application
1096 where application_id = l_application_id;
1097
1098 if (l_type = c_FND_MENU) then
1099 l_menu_name := BIS_COMMON_UTILS.getParameterValue(l_parameters, c_PAGE_NAME);
1100 -- This is put back just in case you need to go back to the FND_MENU
1101 -- Will be added only for migrated functions.
1102 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_MENU_NAME, l_menu_name);
1103 end if;
1104
1105 if p_new_page_xml_name is null then
1106 l_page_xml_name := p_page_xml_name;
1107 else
1108 l_page_xml_name := p_new_page_xml_name;
1109 end if;
1110
1111 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_PAGE_NAME, c_MDS_PATH_PRE || l_app_short_name || c_MDS_PATH_POST || l_page_xml_name);
1112 l_parameters := BIS_COMMON_UTILS.replaceParameterValue(l_parameters, c_SOURCE_TYPE, c_MDS);
1113
1114 -- Update form function
1115 if l_page_function_name <> p_page_function_name then
1116 -- Check if new function already exists.
1117 select count(1) into l_count
1118 from fnd_form_functions
1119 where function_name = l_page_function_name;
1120
1121 if (l_count > 0) then
1122 -- Duplicate function name
1123 FND_MESSAGE.SET_NAME('BIS','BIS_PD_UNIQUE_PGE_ERR');
1124 FND_MSG_PUB.ADD;
1125 RAISE FND_API.G_EXC_ERROR;
1126 end if;
1127
1128 UPDATE fnd_form_functions
1129 SET function_name = l_page_function_name
1130 WHERE function_id = l_function_id;
1131 end if;
1132
1133 BIS_FORM_FUNCTIONS_PUB.UPDATE_ROW (
1134 p_FUNCTION_ID => l_function_id,
1135 p_USER_FUNCTION_NAME => p_title,
1136 p_PARAMETERS => l_parameters,
1137 p_DESCRIPTION => p_description,
1138 x_return_status => x_return_status,
1139 x_msg_count => x_msg_count,
1140 x_msg_data =>x_msg_data);
1141
1142 EXCEPTION
1143 WHEN FND_API.G_EXC_ERROR THEN
1144 x_return_status := FND_API.G_RET_STS_ERROR;
1145 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1146 ,p_data => x_msg_data);
1147 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1148 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1149 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1150 ,p_data => x_msg_data);
1151 WHEN NO_DATA_FOUND THEN
1152 x_return_status := FND_API.G_RET_STS_ERROR;
1153 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1154 ,p_data => x_msg_data);
1155 WHEN OTHERS THEN
1156 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1157 FND_MSG_PUB.Count_And_Get( p_encoded => 'F' ,p_count => x_msg_count
1158 ,p_data => x_msg_data);
1159 if (x_msg_data is null) then
1160 x_msg_data := SQLERRM;
1161 end if;
1162
1163 end Update_Page_Function;
1164
1165 FUNCTION Get_Custom_View_Name
1166 (
1167 p_Function_Id FND_FORM_FUNCTIONS.FUNCTION_ID%TYPE
1168 )RETURN VARCHAR2
1169 IS
1170 l_custom_view_name VARCHAR2(200); -- Should be greater than custom view name and tab name
1171 l_tab_id VARCHAR(10);
1172 l_parameters FND_FORM_FUNCTIONS.PARAMETERS%TYPE; -- Parameters
1173 l_start_pos NUMBER;
1174 l_end_pos NUMBER;
1175 l_tab_name BSC_TABS_VL.NAME%TYPE;
1176 BEGIN
1177 SELECT user_function_name,parameters
1178 INTO l_custom_view_name,l_parameters
1179 FROM fnd_form_functions_vl
1180 WHERE function_id = p_Function_Id;
1181
1182 l_tab_id := BIS_COMMON_UTILS.getParameterValue(l_parameters,'pTabId');
1183 IF(l_tab_id IS NOT NULL) THEN
1184 SELECT name
1185 INTO l_tab_name
1186 FROM bsc_tabs_vl
1187 WHERE tab_id = l_tab_id;
1188 l_custom_view_name := l_custom_view_name || '[' || l_tab_name || ']';
1189 END IF;
1190 RETURN l_custom_view_name;
1191 EXCEPTION
1192 WHEN OTHERS THEN
1193 RETURN NULL;
1194 END Get_Custom_View_Name;
1195
1196
1197 /*******************************************************
1198 Name : Is_Simulatable_Cust_View
1199 Description : This Function returns whether a particular custom view
1200 is simulatable or not.
1201 Input : Parameter column of FND_FORM_FUCNTIONS_VL table.
1202 Output :
1203 '1' --> Indicates that it is a simulatable custom view
1204 '0' --> Indicates that it is a normal custom view
1205
1206 Created By : ashankar 10-AUG-2005
1207 /*******************************************************/
1208
1209 FUNCTION Is_Simulatable_Cust_View
1210 (
1211 p_parameters IN FND_FORM_FUNCTIONS.parameters%TYPE
1212 ) RETURN NUMBER
1213 IS
1214 l_region_Code VARCHAR(100);
1215 l_return_value VARCHAR(3);
1216 BEGIN
1217
1218 l_return_value := BIS_PAGE_PUB.c_NON_SIMULATABLE;
1219
1220 IF(p_parameters IS NOT NULL) THEN
1221 l_region_Code := BIS_COMMON_UTILS.getParameterValue(p_parameters,'pRegionCode');
1222
1223 IF(l_region_Code IS NOT NULL)THEN
1224 l_return_value := BIS_PAGE_PUB.c_SIMULATABLE;
1225 ELSE
1226 l_return_value := BIS_PAGE_PUB.c_NON_SIMULATABLE;
1227 END IF;
1228
1229 END IF;
1230 RETURN l_return_value;
1231 EXCEPTION
1232 WHEN OTHERS THEN
1233 RETURN l_return_value;
1234 END Is_Simulatable_Cust_View;
1235
1236
1237
1238 end BIS_PAGE_PUB;