CREATE OR REPLACE PACKAGE BODY efnow201$ IS -- -- Text constants -- c_heading CONSTANT NUMBER := 3594; -- Maintain Interruption Types c_int_type_code CONSTANT NUMBER := 3595; c_description CONSTANT NUMBER := 20; c_related_cat CONSTANT NUMBER := 3596; c_customer_name CONSTANT NUMBER := 1145; c_contract_number CONSTANT NUMBER := 2013; c_np_code CONSTANT NUMBER := 1005; c_max_int CONSTANT NUMBER := 3597; c_max_int_days CONSTANT NUMBER := 3598; c_max_int_len CONSTANT NUMBER := 3855; c_submit CONSTANT NUMBER := 1147; c_update CONSTANT NUMBER := 837; c_cancel CONSTANT NUMBER := 993; -- -- Global variables -- g_heading_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_heading); g_int_type_code_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_int_type_code); g_description_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_description); g_related_cat_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_related_cat); g_customer_name_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_customer_name); g_contract_number_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_contract_number); g_np_code_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_np_code); g_max_int_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_max_int); g_max_int_days_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_max_int_days); g_max_int_len_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_max_int_len); g_submit_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_submit); g_update_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_update); g_cancel_lbl VARCHAR2(255) := caco_utilities.get_module_text(c_cancel); -- FUNCTION gas_year_end RETURN DATE IS -- this_year NUMBER; gas_year_end DATE; -- BEGIN -- SELECT EXTRACT(YEAR FROM SYSDATE) INTO this_year FROM dual; -- IF SYSDATE > TO_DATE('01-07-' || TO_CHAR(this_year),'dd-mm-yyyy') THEN -- gas_year_end := TO_DATE('01-07-' || TO_CHAR(this_year + 1),'dd-mm-yyyy'); -- ELSE -- gas_year_end := TO_DATE('01-07-' || TO_CHAR(this_year),'dd-mm-yyyy'); -- END IF; -- RETURN gas_year_end; -- END; -- PROCEDURE display_message( p_success IN BOOLEAN , p_err_msg IN VARCHAR2 , p_ins_or_upd IN VARCHAR2 ) IS BEGIN -- IF p_success THEN -- Success! htp.p(''||caco_utilities.get_module_text(876)||'

'); ELSE htp.p(''); IF p_ins_or_upd = 'INSERT' THEN htp.p(caco_utilities.get_module_text(2334)); -- Insert failed ELSE htp.p(caco_utilities.get_module_text(2340)); -- Update failed END IF; htp.p('
'); htp.p(''||p_err_msg||'

'); END IF; -- END display_message; -- PROCEDURE inty_css IS BEGIN -- Check we have permission to be using this module. IF NOT caco_security.security_check(g_package_name) THEN RETURN; END IF; -- owa_util.mime_header('text/css' ,TRUE); -- htp.p(' .confTable { border : 1px solid; } .confTable td { border : 1px solid; } .confTable th { font-weight : normal; padding : 2px; background-color : #D9D9D9; border-left-width : 1px; border-left-style : solid; border-left-color : #F21C0A; border-right-width : 1px; border-right-style : solid; border-right-color : #F21C0A; border-top-width : 1px; border-top-style : solid; border-top-color : #F21C0A; border-bottom-width : 1px; border-bottom-style : solid; border-bottom-color : #F21C0A; height : 20px; } .Error { background-color : #FF9F98; text-align : left; border-style : none; } '); END inty_css; -- PROCEDURE inty_js IS BEGIN -- htp.p(' var changes = ''unchanged''; function setChanged( obj ) { if( obj.value != obj.getAttribute(''origval'') ) { changes = ''changed''; } } function gotoPage( locURL ) { if( changes == ''changed'' ) { if (confirm('''||caco_utilities.get_module_text(2343)||''')){ location.href = locURL; } } else { location.href = locURL; } } '); END inty_js; -- PROCEDURE display_category_list(p_cate_id IN VARCHAR2 , p_ins_or_upd IN VARCHAR2 , p_err_msg IN VARCHAR2 , p_action IN VARCHAR2) IS -- Get all unassigned interruptible categories CURSOR c_cate IS SELECT c.cate_id cate_id ,c.name cate_name FROM categories c WHERE c.interuptible = 'Y' AND NOT EXISTS (SELECT 1 FROM interruption_types i WHERE c.cate_id = i.cate_id AND status = 'A' AND expiry_date > SYSDATE) ORDER BY c.name; -- cursor to get a single category name CURSOR c_cate2 IS SELECT c.name cate_name FROM categories c WHERE cate_id = p_cate_id; -- l_cate_name categories.name%TYPE; -- BEGIN -- htp.p(' ' || g_related_cat_lbl || ' *'); -- IF p_ins_or_upd = 'UPDATE' OR (p_ins_or_upd = 'INSERT' AND p_err_msg IS NULL AND p_action IS NOT NULL) THEN -- OPEN c_cate2; FETCH c_cate2 INTO l_cate_name; CLOSE c_cate2; htp.p(''); htp.p(''); -- ELSE -- Put out option list of all unassigned interruptible categories htp.p(''); -- END IF; htp.p('   '); -- END display_category_list; -- -- Page header -- PROCEDURE page_header (p_inty_id IN VARCHAR2 DEFAULT NULL , p_int_type_code IN VARCHAR2 DEFAULT NULL , p_description IN VARCHAR2 DEFAULT NULL , p_cate_id IN VARCHAR2 DEFAULT NULL , p_success IN BOOLEAN DEFAULT FALSE , p_action IN VARCHAR2 DEFAULT NULL , p_err_msg IN VARCHAR2 DEFAULT NULL , p_ins_or_upd IN VARCHAR2 DEFAULT 'INSERT') IS -- CURSOR c_inty IS SELECT * FROM interruption_types WHERE inty_id = p_inty_id; -- -- cursor to get the minimum date for related contracts -- this will be used to define the interruption type expiry date -- CURSOR c_min_date IS SELECT min(cont.valid_until) min_date FROM contracts cont ,contract_categories coca WHERE cont.cont_id = coca.cont_id AND coca.cate_id = p_cate_id AND cont.status = 'O' AND cont.valid_from < SYSDATE AND cont.valid_until > SYSDATE; -- CURSOR c_new_inty IS SELECT inty_id FROM interruption_types i WHERE i.cate_id = p_cate_id AND i.status = 'A' AND i.expiry_date > SYSDATE; -- l_inty interruption_types%ROWTYPE := NULL; l_min_date DATE := NULL; l_inty_id interruption_types.inty_id%type := p_inty_id; -- BEGIN -- l_inty.code := p_int_type_code; l_inty.description := p_description; l_inty.cate_id := p_cate_id; -- htp.p('

' || g_heading_lbl || '

'); -- -- check if there was an insert or update made IF p_action IS NOT NULL THEN -- display_message( p_success => p_success , p_err_msg => p_err_msg , p_ins_or_upd => p_ins_or_upd ); -- END IF; -- IF p_action IS NULL AND p_ins_or_upd = 'INSERT' THEN -- this is a fresh insert so lets get the min date of all involved contracts OPEN c_min_date; FETCH c_min_date INTO l_min_date; CLOSE c_min_date; -- END IF; -- IF p_action IS NOT NULL AND p_ins_or_upd = 'INSERT' AND p_err_msg IS NULL THEN -- a successful insert has just occurred lets determine the inty_id OPEN c_new_inty; FETCH c_new_inty INTO l_inty_id; CLOSE c_new_inty; -- END IF; -- IF p_action IS NULL AND p_ins_or_upd = 'UPDATE' THEN -- lookup the inty values OPEN c_inty; FETCH c_inty INTO l_inty; CLOSE c_inty; -- END IF; -- htp.p('
'); -- htp.p(''); htp.p(''); -- htp.p('
' || g_int_type_code_lbl || ' * 
'); -- htp.p('
'); -- htp.p(''); -- htp.p(''); -- htp.p(''); htp.p(''); -- htp.p(''); -- htp.p('
' || g_description_lbl || ' * 
'); -- htp.p('
'); -- htp.p(''); -- display_category_list(l_inty.cate_id , p_ins_or_upd , p_err_msg , p_action); -- htp.p('
'); -- htp.p('
'); -- htp.p('
'); -- END; -- -- Page body -- PROCEDURE page_body(p_cate_id IN VARCHAR2 DEFAULT NULL , p_inty_id IN VARCHAR2 DEFAULT NULL , p_ins_or_upd IN VARCHAR2 DEFAULT 'INSERT' , p_err_msg IN VARCHAR2 DEFAULT NULL , p_max_int IN owa_util.vc_arr , p_max_int_days IN owa_util.vc_arr , p_max_int_len IN owa_util.vc_arr , p_max_int_error IN owa_util.vc_arr , p_max_int_days_error IN owa_util.vc_arr , p_max_int_len_error IN owa_util.vc_arr ) IS -- CURSOR c_new_inty IS SELECT inty_id FROM interruption_types i WHERE i.cate_id = p_cate_id AND i.status = 'A' AND i.expiry_date > SYSDATE; -- CURSOR c_cust_nepo(cp_cate_id NUMBER) IS SELECT cust.name customer_name ,nepo.code nepo_code ,conp.conp_id conp_id ,cont.contract_number contract_number FROM customers cust ,network_points nepo ,contracts cont ,cont_network_points conp ,contract_categories coca ,contract_parameters copa ,parameters pars ,cont_net_point_param_vals cnppv WHERE cust.cust_id = cont.cust_id AND cont.cont_id = coca.cont_id AND coca.cate_id = cp_cate_id AND cont.cont_id = conp.cont_id AND conp.nepo_id = nepo.nepo_id AND cont.cont_id = copa.cont_id AND copa.pars_id = pars.pars_id AND coca.cate_id = pars.cate_id AND cnppv.conp_id = conp.conp_id AND cnppv.copa_id = copa.copa_id AND SUBSTR(UPPER(pars.code),-3) = 'MAX' AND cnppv.value > 0 AND cont.status = 'O' AND TRUNC(SYSDATE) BETWEEN cont.valid_from AND cont.valid_until ORDER BY cust.name, cont.contract_number, nepo.code; -- CURSOR c_icp(c_inty_id IN NUMBER) IS SELECT icp.max_interruptions max_int ,icp.max_interruption_days max_int_days ,icp.max_interruption_length max_int_len ,cust.name customer_name ,cont.contract_number contract_number ,nepo.code nepo_code ,conp.conp_id conp_id FROM interruption_types inty ,inty_conp_params icp ,customers cust ,network_points nepo ,contracts cont ,cont_network_points conp ,contract_categories coca WHERE cust.cust_id = cont.cust_id AND cont.cont_id = coca.cont_id AND coca.cate_id = inty.cate_id AND cont.cont_id = conp.cont_id AND conp.nepo_id = nepo.nepo_id AND inty.inty_id = icp.inty_id AND icp.conp_id = conp.conp_id AND inty.inty_id = c_inty_id AND icp.limits_enabled = 'Y' ORDER BY cust.name, cont.contract_number, nepo.code; -- l_rec_found BOOLEAN := FALSE; l_dummy c_cust_nepo%ROWTYPE; l_max_int NUMBER := 0; l_max_int_days NUMBER := 0; l_max_int_len NUMBER := 0; l_inty_id NUMBER; l_error_cell_count NUMBER := 0; -- BEGIN -- -- treat updates and inserts separately -- IF p_ins_or_upd = 'UPDATE' THEN -- lets check we've got the inty_id otherwise this must be a new insert so get it IF p_inty_id IS NULL THEN -- OPEN c_new_inty; FETCH c_new_inty INTO l_inty_id; CLOSE c_new_inty; -- ELSE -- l_inty_id := p_inty_id; -- END IF; -- query back inty data htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); -- -- Loop round all records and create a table row for each. -- FOR r IN c_icp(l_inty_id) LOOP -- l_error_cell_count := l_error_cell_count + 1; -- We can output the values. htp.p(''); htp.p(''); htp.p(''); htp.p(''); -- IF p_err_msg IS NOT NULL THEN -- IF p_max_int_error.COUNT >= l_error_cell_count THEN IF p_max_int_error(l_error_cell_count) = 'Y' THEN htp.p(''); ELSE htp.p(''); END IF; ELSE htp.p(''); END IF; -- IF p_max_int_days_error.COUNT >= l_error_cell_count THEN IF p_max_int_days_error(l_error_cell_count) = 'Y' THEN htp.p(''); ELSE htp.p(''); END IF; ELSE htp.p(''); END IF; -- IF p_max_int_len_error.COUNT >= l_error_cell_count THEN IF p_max_int_len_error(l_error_cell_count) = 'Y' THEN htp.p(''); ELSE htp.p(''); END IF; ELSE htp.p(''); END IF; -- ELSE htp.p(''); htp.p(''); htp.p(''); END IF; -- htp.p(''); -- END LOOP; -- htp.p('
'||g_customer_name_lbl||''||g_contract_number_lbl||''||g_np_code_lbl||''||g_max_int_lbl||''||g_max_int_days_lbl||''||g_max_int_len_lbl||'
'||r.customer_name||''||r.contract_number||''||r.nepo_code); htp.p('
'); -- ELSE -- Insert -- OPEN c_cust_nepo(p_cate_id); FETCH c_cust_nepo INTO l_dummy; -- IF c_cust_nepo%FOUND THEN l_rec_found := TRUE; END IF; -- CLOSE c_cust_nepo; -- IF l_rec_found THEN -- -- If we found any data then Open the table with a header row. -- htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); -- -- Loop round all records and create a table row for each. -- FOR r IN c_cust_nepo(p_cate_id) LOOP -- We can output the values. htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); htp.p(''); -- END LOOP; -- htp.p('
'||g_customer_name_lbl||''||g_contract_number_lbl||''||g_np_code_lbl||''||g_max_int_lbl||''||g_max_int_days_lbl||''||g_max_int_len_lbl||'
'||r.customer_name||''||r.contract_number||''||r.nepo_code||''); htp.p('
'); -- END IF; -- END IF; -- END page_body; -- -- Standard HTML Header -- PROCEDURE standard_html_header IS BEGIN -- htp.p(' '); -- wsgl.openpagehead(g_title); caco_system.content_type; -- htp.p(''); htp.p(''); htp.p(''); -- wsgl.closepagehead; -- wsgl.openpagebody(FALSE); -- htp.p(caco_system.menu); -- END; -- -- -- FUNCTION ins_or_upd_int_type( p_inty_id IN VARCHAR2 DEFAULT NULL , p_int_type_code IN VARCHAR2 DEFAULT NULL , p_description IN VARCHAR2 DEFAULT NULL , p_cate_id IN VARCHAR2 DEFAULT NULL , p_min_date IN VARCHAR2 DEFAULT NULL , p_ins_or_upd IN VARCHAR2 DEFAULT 'INSERT' , p_conp_id IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int_days IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int_len IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int_error OUT owa_util.vc_arr , p_max_int_days_error OUT owa_util.vc_arr , p_max_int_len_error OUT owa_util.vc_arr , p_return_error OUT VARCHAR2) RETURN BOOLEAN IS -- l_success BOOLEAN := TRUE; l_expiry_date DATE := gas_year_end; l_min_date DATE := TO_DATE(p_min_date,'DD-MON-YY'); l_inty_id interruption_types.inty_id%TYPE := 0; l_temp_number NUMBER := 0; -- BEGIN -- -- check interruption type code -- IF l_success AND p_int_type_code IS NULL THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(3602); -- You must provide an interruption type code END IF; -- -- check interruption type code -- IF l_success AND p_description IS NULL THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(3601); -- You must provide an interruption type description END IF; -- -- check related category -- IF l_success AND p_cate_id IS NULL THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(3603); -- You must provide a related category END IF; -- -- check there are some network points to interrupt -- IF l_success AND NVL(p_conp_id.COUNT,0) = 0 THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(3604); -- There are no contracts with the selected related category END IF; -- -- Lets check the max_int array data; -- IF l_success THEN -- FOR i IN 1..p_max_int.COUNT LOOP -- p_max_int_error(i) := 'N'; -- IF NVL(p_max_int(i),'#~^!$') != '#~^!$' THEN -- -- check to ensure data is numeric BEGIN SELECT TO_NUMBER(p_max_int(i)) INTO l_temp_number FROM dual; -- -- Check to ensure that the data is gte zero -- IF p_max_int(i) < 0 THEN -- An error -- ALL values must be positive (including zero) l_success := FALSE; p_return_error := caco_utilities.get_module_text(2357); -- All values must be zero or greater p_max_int_error(i) := 'Y'; EXIT; END IF; -- EXCEPTION WHEN others THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_error(i) := 'Y'; EXIT; END; -- ELSE l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_error(i) := 'Y'; EXIT; END IF; END LOOP; END IF; -- -- Lets check the max_int_days array data; -- IF l_success THEN FOR i IN 1..p_max_int_days.COUNT LOOP -- p_max_int_days_error(i) := 'N'; -- IF NVL(p_max_int_days(i),'#~^!$') != '#~^!$' THEN -- -- check to ensure data is numeric BEGIN SELECT TO_NUMBER(p_max_int_days(i)) INTO l_temp_number FROM dual; -- -- Check to ensure that the data is gte zero IF p_max_int_days(i) < 0 THEN -- An error -- ALL values must be positive (including zero) l_success := FALSE; p_return_error := caco_utilities.get_module_text(2357); -- All values must be zero or greater p_max_int_days_error(i) := 'Y'; EXIT; END IF; -- EXCEPTION WHEN others THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_days_error(i) := 'Y'; EXIT; END; -- ELSE l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_days_error(i) := 'Y'; EXIT; END IF; END LOOP; END IF; -- -- Lets check the max_int_len array data; -- IF l_success THEN -- FOR i IN 1..p_max_int_len.COUNT LOOP -- p_max_int_len_error(i) := 'N'; -- IF NVL(p_max_int_len(i),'#~^!$') != '#~^!$' THEN -- eh? would is not null be better? AG -- -- check to ensure data is numeric -- BEGIN SELECT TO_NUMBER(p_max_int_len(i)) INTO l_temp_number FROM dual; -- -- Check to ensure that the data is gte zero IF p_max_int_len(i) < 0 THEN -- An error -- ALL values must be positive (including zero) l_success := FALSE; p_return_error := caco_utilities.get_module_text(2357); -- All values must be zero or greater p_max_int_len_error(i) := 'Y'; EXIT; END IF; -- EXCEPTION WHEN others THEN l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_len_error(i) := 'Y'; EXIT; END; -- ELSE l_success := FALSE; p_return_error := caco_utilities.get_module_text(2289); -- Non numeric data supplied p_max_int_len_error(i) := 'Y'; EXIT; END IF; END LOOP; END IF; -- -- lets work out what expiry_date should be inserted -- IF l_success THEN -- get the min contract date of all contracts used to generate the int_type -- if all are after the next 1st July then 1st July 00:00:00 should be used IF l_expiry_date > l_min_date THEN l_expiry_date := l_min_date; END IF; -- END IF; -- SAVEPOINT before_ins_or_upd_inty; -- IF p_ins_or_upd = 'INSERT' THEN -- IF l_success THEN -- Lets look at Inserting the interruption type BEGIN INSERT INTO interruption_types ( inty_id , code , description , status , cate_id , expiry_date) VALUES ( inty_seq.NEXTVAL , p_int_type_code , p_description , 'A' , p_cate_id , l_expiry_date) RETURNING inty_id INTO l_inty_id; EXCEPTION WHEN OTHERS THEN ROLLBACK TO SAVEPOINT before_ins_or_upd_inty; l_success := FALSE; p_return_error := caco_utilities.get_module_text(3599); -- An unexpected error has occurred while inserting new interruption type. Please contact support caco_debug.putline(g_package_name||'.insert_interruption_type: ' ||'Insert of new interruption type failed : '||sqlerrm(sqlcode)); -- Write an error and carry on cout_err.report_and_go( p_exception_number => SQLCODE , p_exception_message => 'Failed inserting new interruption type: '||sqlerrm(sqlcode) , p_source => g_package_name||'.ins_or_upd_int_type'); -- END; -- END IF; -- IF l_success THEN -- -- Lets look at Inserting the inty_conp_params values -- <> FOR i IN 1..p_conp_id.COUNT LOOP -- BEGIN -- INSERT INTO inty_conp_params ( icp_id , inty_id , conp_id , max_interruptions , max_interruption_days , max_interruption_length ) VALUES ( icp_seq.NEXTVAL , l_inty_id , p_conp_id(i) , p_max_int(i) , p_max_int_days(i) , p_max_int_len(i) ); EXCEPTION WHEN OTHERS THEN ROLLBACK TO SAVEPOINT before_ins_or_upd_inty; l_success := FALSE; p_return_error := caco_utilities.get_module_text(3599); -- An unexpected error has occurred while inserting new interruption type. Please contact support caco_debug.putline(g_package_name||'.insert_interruption_type: ' ||'Insert of new inty_conp_params record failed : '||SQLERRM(SQLCODE)); -- Write an error and carry on cout_err.report_and_go( p_exception_number => SQLCODE , p_exception_message => 'Failed inserting new inty_conp_params record: '||sqlerrm(sqlcode) , p_source => g_package_name||'.ins_or_upd_int_type'); -- EXIT ins_icp_loop; -- END; -- END LOOP ins_icp_loop; -- END IF; -- ELSE -- IF l_success THEN -- Lets look at Updating the interruption type BEGIN -- UPDATE interruption_types SET code = p_int_type_code, description = p_description WHERE cate_id = p_cate_id AND inty_id = p_inty_id AND status = 'A'; EXCEPTION WHEN OTHERS THEN ROLLBACK TO SAVEPOINT before_ins_or_upd_inty; l_success := FALSE; p_return_error := caco_utilities.get_module_text(3600); -- An unexpected error has occurred while updating the interruption type. Please contact support caco_debug.putline(g_package_name||'.insert_interruption_type: ' ||'Update of new interruption type failed : '||SQLERRM(SQLCODE)); -- Write an error and carry on cout_err.report_and_go( p_exception_number => sqlcode , p_exception_message => 'Failed updaing interruption type: '||SQLERRM(SQLCODE) , p_source => g_package_name||'.ins_or_upd_int_type'); -- END; END IF; -- IF l_success THEN -- Lets look at Updating the inty_conp_params values <> FOR i IN 1..p_conp_id.COUNT LOOP -- BEGIN -- UPDATE inty_conp_params SET max_interruptions = p_max_int(i), max_interruption_days = p_max_int_days(i), max_interruption_length = p_max_int_len(i) WHERE conp_id = p_conp_id(i) AND inty_id = p_inty_id; -- EXCEPTION WHEN OTHERS THEN ROLLBACK TO SAVEPOINT before_ins_or_upd_inty; l_success := FALSE; p_return_error := caco_utilities.get_module_text(3600); -- An unexpected error has occurred while updating the interruption type. Please contact support caco_debug.putline('efno_200$sp.insert_interruption_type: ' ||'Update of inty_conp_params record failed : '||sqlerrm(sqlcode)); -- Write an error and carry on cout_err.report_and_go( p_exception_number => sqlcode , p_exception_message => 'Failed updating inty_conp_params record: '||sqlerrm(sqlcode) , p_source => 'efno_200$sp.ins_or_upd_int_type'); -- EXIT upd_icp_loop; END; -- END LOOP upd_icp_loop; -- END IF; -- END IF; -- COMMIT; -- RETURN l_success; -- END; -- -- Startup -- PROCEDURE startup(p_inty_id IN VARCHAR2 DEFAULT NULL , p_int_type_code IN VARCHAR2 DEFAULT NULL , p_description IN VARCHAR2 DEFAULT NULL , p_cate_id IN VARCHAR2 DEFAULT NULL , p_ins_or_upd IN VARCHAR2 DEFAULT 'INSERT' , p_action IN VARCHAR2 DEFAULT NULL , p_min_date IN VARCHAR2 DEFAULT NULL , p_conp_id IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int_days IN owa_util.vc_arr DEFAULT g_empty_vc_array , p_max_int_len IN owa_util.vc_arr DEFAULT g_empty_vc_array ) IS -- l_success BOOLEAN := TRUE; l_return_error VARCHAR2(250); l_ins_or_upd VARCHAR2(10) := p_ins_or_upd; l_max_int_error owa_util.vc_arr; l_max_int_days_error owa_util.vc_arr; l_max_int_len_error owa_util.vc_arr; -- BEGIN -- IF NOT caco_security.security_check(g_package_name) THEN RETURN; END IF; -- IF p_action = g_submit_lbl THEN -- insert -- l_success := ins_or_upd_int_type(p_int_type_code => p_int_type_code, p_description => p_description, p_cate_id => p_cate_id, p_ins_or_upd => 'INSERT', p_min_date => p_min_date, p_conp_id => p_conp_id, p_max_int => p_max_int, p_max_int_days => p_max_int_days, p_max_int_len => p_max_int_len, p_return_error => l_return_error, p_max_int_error => l_max_int_error, p_max_int_days_error => l_max_int_days_error, p_max_int_len_error => l_max_int_len_error ); -- ELSIF p_action = g_update_lbl THEN --update -- l_ins_or_upd := 'UPDATE'; -- l_success := ins_or_upd_int_type(p_inty_id => p_inty_id, p_int_type_code => p_int_type_code, p_description => p_description, p_cate_id => p_cate_id, p_ins_or_upd => l_ins_or_upd, p_conp_id => p_conp_id, p_max_int => p_max_int, p_max_int_days => p_max_int_days, p_max_int_len => p_max_int_len, p_return_error => l_return_error, p_max_int_error => l_max_int_error, p_max_int_days_error => l_max_int_days_error, p_max_int_len_error => l_max_int_len_error ); -- END IF; -- standard_html_header; -- htp.p('
'); -- htp.p('
'); -- -- Draw the page header -- page_header(p_inty_id => p_inty_id, p_int_type_code => p_int_type_code, p_description => p_description, p_cate_id => p_cate_id, p_success => l_success, p_action => p_action, p_err_msg => l_return_error, p_ins_or_upd => l_ins_or_upd); -- -- Need to display an update form when a successful insert has occured -- IF l_ins_or_upd = 'INSERT' AND l_return_error IS NULL AND p_action IS NOT NULL THEN l_ins_or_upd := 'UPDATE'; END IF; -- page_body(p_cate_id => p_cate_id, p_inty_id => p_inty_id, p_ins_or_upd => l_ins_or_upd, p_err_msg => l_return_error, p_max_int => p_max_int, p_max_int_days => p_max_int_days, p_max_int_len => p_max_int_len, p_max_int_error => l_max_int_error, p_max_int_days_error => l_max_int_days_error, p_max_int_len_error => l_max_int_len_error ); -- htp.p('
'); -- IF l_ins_or_upd = 'INSERT' THEN htp.p(''); -- Submit (Insert) ELSE htp.p(''); -- Update END IF; -- htp.p(''); htp.p('

'); htp.p('''*'''||caco_utilities.get_module_text(2202)||''); -- htp.p('
'); -- Submit_form -- htp.p('
'); -- wsgl.closepagebody; -- END; -- FUNCTION about RETURN VARCHAR2 IS BEGIN RETURN(g_package_name || chr(10) || g_revision || chr(10) || g_header); END about; -- END efnow201$; /