The following lines contain the word 'select', 'insert', 'update' or 'delete':
g_n_login_id fnd_flex_values.last_update_login%TYPE := NVL(fnd_global.login_id,-1); -- Stores the Login Id
SELECT ffvs.rowid,ffvs.*
FROM FND_FLEX_VALUE_SETS ffvs
WHERE FLEX_VALUE_SET_NAME = cp_flex_value_set_name;
SOMMUKHE 28-JAN-2009 Bug#8208641 Included manual updates to fnd_flex_values as suugested by ATG in 7668121/7528069
SOMMUKHE 10-Nov-2011 Bug#13249707 Included checks to avoid nullifying of the DFF data during update operation.
********************************************************************************************** */
l_insert_update VARCHAR2(1);
SELECT ffvs.rowid,ffvs.*
FROM fnd_flex_values ffvs
WHERE flex_value_set_id = cp_flex_value_set_id
AND flex_value = cp_flex_value;
FUNCTION check_insert_update ( gl_coa_flex_values_rec IN OUT NOCOPY gl_coa_seg_val_imp_pub.gl_flex_values_rec_type ) RETURN VARCHAR2 IS
E_RESOURCE_BUSY EXCEPTION;
END check_insert_update;
PROCEDURE assign_defaults ( gl_coa_flex_values_rec IN OUT NOCOPY gl_coa_seg_val_imp_pub.gl_flex_values_rec_type, p_insert IN VARCHAR2) IS
-- Cursor to check if child ranges exist for the flex value passed
CURSOR c_fnd_flex_value_nh_exists(cp_flex_value_set_id fnd_flex_value_sets.flex_value_set_id%TYPE,
cp_parent_flex_value fnd_flex_value_norm_hierarchy.parent_flex_value%TYPE ) IS
SELECT 'X'
FROM fnd_flex_value_norm_hierarchy
WHERE flex_value_set_id = cp_flex_value_set_id
AND parent_flex_value = cp_parent_flex_value;
IF p_insert = 'I' THEN
--Default summary_flag to N
IF ( gl_coa_flex_values_rec.summary_flag IS NULL ) THEN
gl_coa_flex_values_rec.summary_flag := 'N';
IF p_insert = 'U' THEN
--Default summary_flag to the db value
IF ( gl_coa_flex_values_rec.summary_flag IS NULL ) THEN
gl_coa_flex_values_rec.summary_flag := rec_fnd_flex_val.summary_flag;
--If update is being performed and summary_flag is changed to 'N' then delete the children.
IF ( gl_coa_flex_values_rec.summary_flag = 'N' AND rec_fnd_flex_val.summary_flag = 'Y') THEN
OPEN c_fnd_flex_value_nh_exists(l_cur_co.flex_value_set_id,gl_coa_flex_values_rec.flex_value);
DELETE FROM FND_FLEX_VALUE_NORM_HIERARCHY WHERE FLEX_VALUE_SET_ID = l_cur_co.flex_value_set_id AND PARENT_FLEX_VALUE = gl_coa_flex_values_rec.flex_value;
SELECT'X'
FROM fnd_flex_hierarchies
WHERE FLEX_VALUE_SET_ID =cp_flex_value_set_id
AND HIERARCHY_CODE =cp_hierarchy_code;
SELECT segment_attribute_type,value_attribute_type
FROM fnd_flex_validation_qualifiers
WHERE id_flex_code = cp_id_flex_code
AND id_flex_application_id = cp_id_flex_application_id
AND flex_value_set_id = cp_flex_value_set_id
ORDER BY assignment_date, value_attribute_type;
--Find out whether it is insert/update of record
l_insert_update:='I';
l_insert_update:= check_insert_update(p_gl_flex_values_tbl(I));
fnd_log.string( fnd_log.level_statement, 'gl.plsql.gl_coa_seg_val_imp_pkg.create_gl_coa_flex_values.Insert_update',
'Value Set Name:'||p_gl_flex_values_tbl(I).value_set_name||' '||'Parent Flex Value:'||p_gl_flex_values_tbl(I).parent_flex_value||' '||'Flex Value:'
||p_gl_flex_values_tbl(I).flex_value||' '||'Insert_update:'||l_insert_update);
--Defaulting depending upon insert or update
IF p_gl_flex_values_tbl(I).status = 'S' THEN
assign_defaults(p_gl_flex_values_tbl(I),l_insert_update);
IF l_insert_update = 'I' THEN
rec_fnd_flex_val.VALUE_CATEGORY := NULL;
p_last_update_date => to_char(g_n_sysdate,'YYYY/MM/DD HH24:MI:SS'),
p_enabled_flag => p_gl_flex_values_tbl(I).enabled_flag,
p_summary_flag => p_gl_flex_values_tbl(I).summary_flag,
p_start_date_active => to_char(p_gl_flex_values_tbl(I).effective_from,'YYYY/MM/DD HH24:MI:SS'),
p_end_date_active => to_char(p_gl_flex_values_tbl(I).effective_to,'YYYY/MM/DD HH24:MI:SS'),
p_parent_flex_value_high => NULL,
p_rollup_flex_value_set_name => NULL,
p_rollup_hierarchy_code => p_gl_flex_values_tbl(I).roll_up_group,
p_hierarchy_level => p_gl_flex_values_tbl(I).hierarchy_level,
p_compiled_value_attributes => v_compiled_value_attribute_s,
p_value_category => rec_fnd_flex_val.value_category,
p_attribute1 => rec_fnd_flex_val.attribute1,
p_attribute2 => rec_fnd_flex_val.attribute2,
p_attribute3 => rec_fnd_flex_val.attribute3,
p_attribute4 => rec_fnd_flex_val.attribute4,
p_attribute5 => rec_fnd_flex_val.attribute5,
p_attribute6 => rec_fnd_flex_val.attribute6,
p_attribute7 => rec_fnd_flex_val.attribute7,
p_attribute8 => rec_fnd_flex_val.attribute8,
p_attribute9 => rec_fnd_flex_val.attribute9,
p_attribute10 => rec_fnd_flex_val.attribute10,
p_attribute11 => rec_fnd_flex_val.attribute11,
p_attribute12 => rec_fnd_flex_val.attribute12,
p_attribute13 => rec_fnd_flex_val.attribute13,
p_attribute14 => rec_fnd_flex_val.attribute14,
p_attribute15 => rec_fnd_flex_val.attribute15,
p_attribute16 => rec_fnd_flex_val.attribute16,
p_attribute17 => rec_fnd_flex_val.attribute17,
p_attribute18 => rec_fnd_flex_val.attribute18,
p_attribute19 => rec_fnd_flex_val.attribute19,
p_attribute20 => rec_fnd_flex_val.attribute20,
p_attribute21 => rec_fnd_flex_val.attribute21,
p_attribute22 => rec_fnd_flex_val.attribute22,
p_attribute23 => rec_fnd_flex_val.attribute23,
p_attribute24 => rec_fnd_flex_val.attribute24,
p_attribute25 => rec_fnd_flex_val.attribute25,
p_attribute26 => rec_fnd_flex_val.attribute26,
p_attribute27 => rec_fnd_flex_val.attribute27,
p_attribute28 => rec_fnd_flex_val.attribute28,
p_attribute29 => rec_fnd_flex_val.attribute29,
p_attribute30 => rec_fnd_flex_val.attribute30,
p_attribute31 => rec_fnd_flex_val.attribute31,
p_attribute32 => rec_fnd_flex_val.attribute32,
p_attribute33 => rec_fnd_flex_val.attribute33,
p_attribute34 => rec_fnd_flex_val.attribute34,
p_attribute35 => rec_fnd_flex_val.attribute35,
p_attribute36 => rec_fnd_flex_val.attribute36,
p_attribute37 => rec_fnd_flex_val.attribute37,
p_attribute38 => rec_fnd_flex_val.attribute38,
p_attribute39 => rec_fnd_flex_val.attribute39,
p_attribute40 => rec_fnd_flex_val.attribute40,
p_attribute41 => rec_fnd_flex_val.attribute41,
p_attribute42 => rec_fnd_flex_val.attribute42,
p_attribute43 => rec_fnd_flex_val.attribute43,
p_attribute44 => rec_fnd_flex_val.attribute44,
p_attribute45 => rec_fnd_flex_val.attribute45,
p_attribute46 => rec_fnd_flex_val.attribute46,
p_attribute47 => rec_fnd_flex_val.attribute47,
p_attribute48 => rec_fnd_flex_val.attribute48,
p_attribute49 => rec_fnd_flex_val.attribute49,
p_attribute50 => rec_fnd_flex_val.attribute50,
p_flex_value_meaning => NULL,
p_description => p_gl_flex_values_tbl(I).flex_desc);
IF l_insert_update = 'U' THEN
UPDATE fnd_flex_values
SET last_update_date = sysdate,
last_updated_by = g_n_user_id,
last_update_login = g_n_login_id
WHERE rowid = rec_fnd_flex_val.rowid ;
UPDATE fnd_flex_values
SET last_update_date = sysdate ,
last_updated_by = g_n_user_id,
created_by = g_n_user_id,
creation_date = sysdate
WHERE flex_value_set_id = l_cur_co.flex_value_set_id
AND flex_value = p_gl_flex_values_tbl(I).flex_value;
END IF;--insert/update
flex_vl_set_id_tab.delete;
l_insert_update VARCHAR2(1);
SELECT 'X'
FROM fnd_flex_value_norm_hierarchy
WHERE flex_value_set_id = cp_flex_value_set_id;
SELECT summary_flag
FROM fnd_flex_values
WHERE flex_value_set_id = cp_flex_value_set_id
AND flex_value = cp_parent_flex_value;
/* Delete the already existing child ranges records*/
-- DRM Change: bug in deletion of hierarchies
--IF flex_vl_set_id_del_tab.count = 0
--THEN
-- IF l_nh_exists
-- THEN
-- flex_vl_set_id_del_tab(flex_vl_set_id_del_tab.count+1) := l_cur_co.flex_value_set_id;
DELETE FROM fnd_flex_value_norm_hierarchy
WHERE flex_value_set_id =l_cur_co.flex_value_set_id;
p_last_update_date => NULL,
p_start_date_active => NULL,
p_end_date_active => NULL);
UPDATE fnd_flex_value_norm_hierarchy
SET last_update_date = sysdate,
last_updated_by = g_n_user_id,
created_by = g_n_user_id,
creation_date = sysdate,
last_update_login = g_n_login_id
WHERE flex_value_set_id = l_cur_co.flex_value_set_id
AND parent_flex_value = p_gl_flex_values_nh_tbl(I).parent_flex_value
AND child_flex_value_low = p_gl_flex_values_nh_tbl(I).child_flex_value_low
AND child_flex_value_high = p_gl_flex_values_nh_tbl(I).child_flex_value_high
AND range_attribute= p_gl_flex_values_nh_tbl(I).range_attribute;
flex_vl_set_id_tab.delete;