370: /*===========================================================================+
371: |
372: | Name: INSERT_APP_MENU_ENTRIES_VB
373: |
374: | Description: it is a wrapper for FND_MENU_ENTRIES_PKG.INSERT_ROW function
375: | This procedure is to be called from a VB program.
376: | If there is an error, the procedure inserts the error
377: | message in BSC_MESSAGE_LOGS table.
378: |
388: X_USER_ID in NUMBER
389: ) IS
390: row_id VARCHAR2(30);
391: BEGIN
392: DELETE FND_MENU_ENTRIES WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
393: DELETE FND_MENU_ENTRIES_TL WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
394:
395: FND_MENU_ENTRIES_PKG.INSERT_ROW ( X_ROWID => row_id,
396: X_MENU_ID => X_MENU_ID,
389: ) IS
390: row_id VARCHAR2(30);
391: BEGIN
392: DELETE FND_MENU_ENTRIES WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
393: DELETE FND_MENU_ENTRIES_TL WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
394:
395: FND_MENU_ENTRIES_PKG.INSERT_ROW ( X_ROWID => row_id,
396: X_MENU_ID => X_MENU_ID,
397: X_ENTRY_SEQUENCE => X_ENTRY_SEQUENCE,
391: BEGIN
392: DELETE FND_MENU_ENTRIES WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
393: DELETE FND_MENU_ENTRIES_TL WHERE MENU_ID = X_MENU_ID AND ENTRY_SEQUENCE = X_ENTRY_SEQUENCE;
394:
395: FND_MENU_ENTRIES_PKG.INSERT_ROW ( X_ROWID => row_id,
396: X_MENU_ID => X_MENU_ID,
397: X_ENTRY_SEQUENCE => X_ENTRY_SEQUENCE,
398: X_SUB_MENU_ID => X_SUB_MENU_ID,
399: X_FUNCTION_ID => X_FUNCTION_ID,
416: /*===========================================================================+
417: |
418: | Name: UPDATE_APP_MENU_ENTRIES_VB
419: |
420: | Description: it is a wrapper for FND_MENU_ENTRIES_PKG.UPDATE_ROW function
421: | This procedure is to be called from a VB program.
422: | If there is an error, the procedure inserts the error
423: | message in BSC_MESSAGE_LOGS table.
424: |
433: X_DESCRIPTION in VARCHAR2,
434: X_USER_ID in NUMBER
435: ) IS
436: BEGIN
437: FND_MENU_ENTRIES_PKG.UPDATE_ROW(X_MENU_ID => X_MENU_ID,
438: X_ENTRY_SEQUENCE => X_ENTRY_SEQUENCE,
439: X_SUB_MENU_ID => X_SUB_MENU_ID,
440: X_FUNCTION_ID => X_FUNCTION_ID,
441: X_GRANT_FLAG => X_GRANT_FLAG,
455: /*===========================================================================+
456: |
457: | Name: DELETE_APP_MENU_ENTRIES_VB
458: |
459: | Description: it is a wrapper for FND_MENU_ENTRIES_PKG.DELETE_ROW function
460: | This procedure is to be called from a VB program.
461: | If there is an error, the procedure inserts the error
462: | message in BSC_MESSAGE_LOGS table.
463: |
466: PROCEDURE DELETE_APP_MENU_ENTRIES_VB(X_MENU_ID in NUMBER,
467: X_ENTRY_SEQUENCE in NUMBER
468: ) IS
469: BEGIN
470: FND_MENU_ENTRIES_PKG.DELETE_ROW(X_MENU_ID => X_MENU_ID,
471: X_ENTRY_SEQUENCE => X_ENTRY_SEQUENCE);
472:
473: EXCEPTION
474: WHEN OTHERS THEN
542: -- Check if the menu is in the Menu entries - It looks 3 levels down
543: SELECT COUNT(*) VAL
544: INTO h_count
545: FROM (
546: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
547: WHERE MENU_ID = h_top_menu
548: UNION
549: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
550: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
545: FROM (
546: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
547: WHERE MENU_ID = h_top_menu
548: UNION
549: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
550: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
551: WHERE MENU_ID = h_top_menu)
552: UNION
553: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
546: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
547: WHERE MENU_ID = h_top_menu
548: UNION
549: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
550: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
551: WHERE MENU_ID = h_top_menu)
552: UNION
553: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
554: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
549: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
550: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
551: WHERE MENU_ID = h_top_menu)
552: UNION
553: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
554: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
555: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
556: WHERE MENU_ID = h_top_menu))
557: ) MNS
550: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
551: WHERE MENU_ID = h_top_menu)
552: UNION
553: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
554: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
555: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
556: WHERE MENU_ID = h_top_menu))
557: ) MNS
558: WHERE MNS.SUB_MENU_ID=X_MENU_ID;
551: WHERE MENU_ID = h_top_menu)
552: UNION
553: select SUB_MENU_ID from FND_MENU_ENTRIES_VL
554: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
555: WHERE MENU_ID IN (select SUB_MENU_ID from FND_MENU_ENTRIES_VL
556: WHERE MENU_ID = h_top_menu))
557: ) MNS
558: WHERE MNS.SUB_MENU_ID=X_MENU_ID;
559: END IF;
754: -- and are not associated with the same menu in the target system.
755: -- We need to create those entries in the target menu.
756: -- Only see BSC functions
757: h_sql := 'SELECT SF.FUNCTION_NAME, SF.USER_FUNCTION_NAME, SF.FUNCTION_ID'||
758: ' FROM FND_MENU_ENTRIES@'||x_src_db_link||' SE, FND_FORM_FUNCTIONS_VL@'||x_src_db_link||' SF'||
759: ' WHERE SE.MENU_ID = :1 AND SE.FUNCTION_ID = SF.FUNCTION_ID AND'||
760: ' SF.APPLICATION_ID = 271 AND SF.FUNCTION_NAME NOT IN ('||
761: ' SELECT TF.FUNCTION_NAME FROM FND_MENU_ENTRIES TE, FND_FORM_FUNCTIONS TF'||
762: ' WHERE TE.MENU_ID = :2 AND TE.FUNCTION_ID = TF.FUNCTION_ID AND TF.APPLICATION_ID = 271)';
757: h_sql := 'SELECT SF.FUNCTION_NAME, SF.USER_FUNCTION_NAME, SF.FUNCTION_ID'||
758: ' FROM FND_MENU_ENTRIES@'||x_src_db_link||' SE, FND_FORM_FUNCTIONS_VL@'||x_src_db_link||' SF'||
759: ' WHERE SE.MENU_ID = :1 AND SE.FUNCTION_ID = SF.FUNCTION_ID AND'||
760: ' SF.APPLICATION_ID = 271 AND SF.FUNCTION_NAME NOT IN ('||
761: ' SELECT TF.FUNCTION_NAME FROM FND_MENU_ENTRIES TE, FND_FORM_FUNCTIONS TF'||
762: ' WHERE TE.MENU_ID = :2 AND TE.FUNCTION_ID = TF.FUNCTION_ID AND TF.APPLICATION_ID = 271)';
763: /*' WHERE TE.MENU_ID = '||h_menu_id||' AND TE.FUNCTION_ID = TF.FUNCTION_ID AND TF.APPLICATION_ID = 271)';*/
764:
765: h_cursor1 := DBMS_SQL.OPEN_CURSOR;
894:
895: -- Create the menu entry in the target
896: -- Get the maximum entry sequence
897: SELECT nvl(max(entry_sequence)+1, 1) INTO h_entry_sequence
898: FROM fnd_menu_entries
899: WHERE menu_id = h_menu_id;
900:
901: -- Get all info about the menu entry in the source to create it in the target
902: h_sub_menu_id := NULL;
904: h_prompt := NULL;
905: h_description := NULL;
906:
907: h_sql := 'SELECT sub_menu_id, grant_flag, prompt, description'||
908: ' FROM fnd_menu_entries_vl@'||x_src_db_link||
909: ' WHERE menu_id = :1 AND function_id = :2';
910: /*' WHERE menu_id = '||h_menu_id_src||' AND function_id = '||h_function_id_src;*/
911:
912:
929: END IF;
930: DBMS_SQL.CLOSE_CURSOR(h_cursor2);
931:
932: -- Create the menu entry
933: FND_MENU_ENTRIES_PKG.INSERT_ROW (
934: X_ROWID => h_row_id,
935: X_MENU_ID => h_menu_id,
936: X_ENTRY_SEQUENCE => h_entry_sequence,
937: X_SUB_MENU_ID => h_sub_menu_id,
1077: ' NVL(L.LINK_ID, -1) <> -1 AND'||
1078: ' L.LINK_ID = M.MENU_ID AND'||
1079: ' UPPER(SUBSTR(MENU_NAME,1,3)) = ''BSC'' AND'||
1080: ' NOT (L.LINK_ID IN (SELECT SUB_MENU_ID'||
1081: ' FROM FND_MENU_ENTRIES_VL'||
1082: ' WHERE MENU_ID = :1 AND SUB_MENU_ID IS NOT NULL)) AND'||
1083: /*' WHERE MENU_ID = '||h_top_menu_id||' AND SUB_MENU_ID IS NOT NULL)) AND'||*/
1084: ' LS.LINK_ID IN (SELECT SUB_MENU_ID'||
1085: ' FROM FND_MENU_ENTRIES_VL@'||x_src_db_link||
1081: ' FROM FND_MENU_ENTRIES_VL'||
1082: ' WHERE MENU_ID = :1 AND SUB_MENU_ID IS NOT NULL)) AND'||
1083: /*' WHERE MENU_ID = '||h_top_menu_id||' AND SUB_MENU_ID IS NOT NULL)) AND'||*/
1084: ' LS.LINK_ID IN (SELECT SUB_MENU_ID'||
1085: ' FROM FND_MENU_ENTRIES_VL@'||x_src_db_link||
1086: ' WHERE MENU_ID = :2 AND SUB_MENU_ID IS NOT NULL)';
1087: /* ' WHERE MENU_ID = '||h_top_menu_id_src||' AND SUB_MENU_ID IS NOT NULL)';*/
1088:
1089:
1101: DBMS_SQL.COLUMN_VALUE(h_cursor, 2, h_description);
1102:
1103: -- Get the maximum entry sequence
1104: SELECT nvl(max(entry_sequence)+1, 1) INTO h_entry_sequence
1105: FROM fnd_menu_entries
1106: WHERE menu_id = h_top_menu_id;
1107:
1108: -- Create the menu entry
1109: FND_MENU_ENTRIES_PKG.INSERT_ROW (
1105: FROM fnd_menu_entries
1106: WHERE menu_id = h_top_menu_id;
1107:
1108: -- Create the menu entry
1109: FND_MENU_ENTRIES_PKG.INSERT_ROW (
1110: X_ROWID => h_row_id,
1111: X_MENU_ID => h_top_menu_id,
1112: X_ENTRY_SEQUENCE => h_entry_sequence,
1113: X_SUB_MENU_ID => h_menu_id,
1155: BEGIN
1156:
1157: SELECT COUNT(0)
1158: INTO l_count
1159: FROM FND_MENU_ENTRIES
1160: WHERE MENU_ID = p_Menu_Id
1161: AND SUB_MENU_ID = p_Sub_Menu_Id;
1162:
1163: IF (l_count<>0) THEN
1178: p_Menu_Id IN FND_MENUS.menu_id%TYPE
1179: , p_Sub_Menu_Id IN FND_MENUS.menu_id%TYPE
1180: ) RETURN NUMBER
1181: IS
1182: l_entry_sequence FND_MENU_ENTRIES.entry_sequence%TYPE;
1183:
1184: CURSOR c_entry_sequnece IS
1185: SELECT ENTRY_SEQUENCE
1186: FROM FND_MENU_ENTRIES
1182: l_entry_sequence FND_MENU_ENTRIES.entry_sequence%TYPE;
1183:
1184: CURSOR c_entry_sequnece IS
1185: SELECT ENTRY_SEQUENCE
1186: FROM FND_MENU_ENTRIES
1187: WHERE MENU_ID = p_Menu_Id
1188: AND SUB_MENU_ID = p_Sub_Menu_Id;
1189:
1190: BEGIN