Oracle Forms -- Enable folders for a particular resp IN A LOOKUP and also restrict by a partcular column
The Below code in WHEN-NEW-FORM-INSTANCE OR WHEN-NEW BLOCK-INSTANCE WHEN MULTIPLE BLOCKS HAVE FOLDER FUNCTIONALITY
atchmt_api.init('XWII_CUSTOMER_ITEM');
--Start of changes for View Setup Redesign project
DECLARE
lc_folder_title VARCHAR2(1000);
BEGIN
:PARAMETER.RESP_NAME := fnd_profile.value('RESP_NAME');
--Check if the Resp is eligible to Create the Folder.:PARAMETER.CREATE_FOLDER will be used later to enable/disable create Folder.
DECLARE
--Create Folder eligibility
CURSOR lcu_create_folder (cp_resp_name IN VARCHAR2)
IS
SELECT 'Y'
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XWII_VS_CREATE_FOLDER_RESP'
AND UPPER(flv.meaning) = UPPER(cp_resp_name)
AND flv.enabled_flag = 'Y'
AND NVL (flv.start_date_active,
SYSDATE
- 1) < SYSDATE
AND NVL (flv.end_date_active,
SYSDATE
+ 1) > SYSDATE;
lc_create_folder_eligible VARCHAR2(1);
BEGIN
:PARAMETER.CREATE_FOLDER := 'N';
OPEN lcu_create_folder (cp_resp_name => :PARAMETER.RESP_NAME);
FETCH lcu_create_folder
INTO :PARAMETER.CREATE_FOLDER;
CLOSE lcu_create_folder;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
app_folder.define_folder_block('XWII_CUSTOMER_ITEM'||:PARAMETER.RESOURCE_ID,
'SETUP_COILS',
'SETUP_COILS_PROMPT',
'SETUP_COILS',
'VIEW_SETUP',
'AUTOQUERY'
);
--Get the Default Folder which created at Resource level and use it.
--If the user has a default folder, Oracle will use that Folder as default.
DECLARE
CURSOR lcu_dflt_folder (cp_object_name VARCHAR2)
IS
SELECT folder_id
FROM fnd_default_folders
WHERE object = cp_object_name
ORDER BY creation_date DESC;
ln_dflt_folder_id NUMBER;
lc_object_name VARCHAR2(500);
BEGIN
lc_object_name := 'XWII_CUSTOMER_ITEM'||:PARAMETER.RESOURCE_ID;
OPEN lcu_dflt_folder (cp_object_name => lc_object_name);
FETCH lcu_dflt_folder
INTO ln_dflt_folder_id;
CLOSE lcu_dflt_folder;
IF ln_dflt_folder_id IS NOT NULL
THEN
APP_FOLDER.define(object_name => 'DEVELOPER_FOLDER_ID',
new_value => ln_dflt_folder_id,
prompt => null,
wdth => null,
x_location => null,
y_location => null
);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
lc_folder_title := NULL;
IF :XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE IS NOT NULL
THEN
lc_folder_title := :XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE;
END IF;
--Instantiate the Folders
app_folder.event('INSTANTIATE');
--For some reason, when you jump between the forms, we are loosing the Fodler Title. Want to reinstate the Fodler Title if the Form is already open.
BEGIN
IF lc_folder_title IS NOT NULL AND
:XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE IS NULL
THEN
:XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE := lc_folder_title;
END IF; --lc_fodler_title
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
IN WHEN-NEW-RECORD-INSTANCE DISABLE THE RESPONSIBILITY IF IT IS NOT DEFINE IN THE LOOKUP
IF NVL(:PARAMETER.CREATE_FOLDER,'N') = 'N'
THEN
set_menu_item_property('FNDMENU.FOLDER',ENABLED,PROPERTY_FALSE);
set_item_property('XWII_CUSTOMER_ITEM_PROMPT.FOLDER_OPEN',ENABLED,PROPERTY_FALSE);
END IF;
atchmt_api.init('XWII_CUSTOMER_ITEM');
--Start of changes for View Setup Redesign project
DECLARE
lc_folder_title VARCHAR2(1000);
BEGIN
:PARAMETER.RESP_NAME := fnd_profile.value('RESP_NAME');
--Check if the Resp is eligible to Create the Folder.:PARAMETER.CREATE_FOLDER will be used later to enable/disable create Folder.
DECLARE
--Create Folder eligibility
CURSOR lcu_create_folder (cp_resp_name IN VARCHAR2)
IS
SELECT 'Y'
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XWII_VS_CREATE_FOLDER_RESP'
AND UPPER(flv.meaning) = UPPER(cp_resp_name)
AND flv.enabled_flag = 'Y'
AND NVL (flv.start_date_active,
SYSDATE
- 1) < SYSDATE
AND NVL (flv.end_date_active,
SYSDATE
+ 1) > SYSDATE;
lc_create_folder_eligible VARCHAR2(1);
BEGIN
:PARAMETER.CREATE_FOLDER := 'N';
OPEN lcu_create_folder (cp_resp_name => :PARAMETER.RESP_NAME);
FETCH lcu_create_folder
INTO :PARAMETER.CREATE_FOLDER;
CLOSE lcu_create_folder;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
app_folder.define_folder_block('XWII_CUSTOMER_ITEM'||:PARAMETER.RESOURCE_ID,
'SETUP_COILS',
'SETUP_COILS_PROMPT',
'SETUP_COILS',
'VIEW_SETUP',
'AUTOQUERY'
);
--Get the Default Folder which created at Resource level and use it.
--If the user has a default folder, Oracle will use that Folder as default.
DECLARE
CURSOR lcu_dflt_folder (cp_object_name VARCHAR2)
IS
SELECT folder_id
FROM fnd_default_folders
WHERE object = cp_object_name
ORDER BY creation_date DESC;
ln_dflt_folder_id NUMBER;
lc_object_name VARCHAR2(500);
BEGIN
lc_object_name := 'XWII_CUSTOMER_ITEM'||:PARAMETER.RESOURCE_ID;
OPEN lcu_dflt_folder (cp_object_name => lc_object_name);
FETCH lcu_dflt_folder
INTO ln_dflt_folder_id;
CLOSE lcu_dflt_folder;
IF ln_dflt_folder_id IS NOT NULL
THEN
APP_FOLDER.define(object_name => 'DEVELOPER_FOLDER_ID',
new_value => ln_dflt_folder_id,
prompt => null,
wdth => null,
x_location => null,
y_location => null
);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
lc_folder_title := NULL;
IF :XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE IS NOT NULL
THEN
lc_folder_title := :XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE;
END IF;
--Instantiate the Folders
app_folder.event('INSTANTIATE');
--For some reason, when you jump between the forms, we are loosing the Fodler Title. Want to reinstate the Fodler Title if the Form is already open.
BEGIN
IF lc_folder_title IS NOT NULL AND
:XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE IS NULL
THEN
:XWII_CUSTOMER_ITEM_PROMPT.FOLDER_TITLE := lc_folder_title;
END IF; --lc_fodler_title
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
IN WHEN-NEW-RECORD-INSTANCE DISABLE THE RESPONSIBILITY IF IT IS NOT DEFINE IN THE LOOKUP
IF NVL(:PARAMETER.CREATE_FOLDER,'N') = 'N'
THEN
set_menu_item_property('FNDMENU.FOLDER',ENABLED,PROPERTY_FALSE);
set_item_property('XWII_CUSTOMER_ITEM_PROMPT.FOLDER_OPEN',ENABLED,PROPERTY_FALSE);
END IF;
Comments
Post a Comment