DECLARE l_api_version CONSTANT NUMBER := 1.0; l_init_msg_list CONSTANT VARCHAR2(1) := 'T'; l_return_status VARCHAR2(1); l_msg_count NUMBER; l_msg_data VARCHAR2(2000); l_chrv_tbl_in okc_contract_pub.chrv_tbl_type; l_chrv_tbl_out okc_contract_pub.chrv_tbl_type; l_clev_tbl_in okc_contract_pub.clev_tbl_type; l_clev_tbl_out okc_contract_pub.clev_tbl_type; l_cle_tbl_in okc_contract_pub.clev_tbl_type; l_cle_tbl_out okc_contract_pub.clev_tbl_type; i NUMBER := 1; l_count number :=0; l_id okc_k_headers_all_b.id%TYPE; l_end_date okc_k_headers_all_b.end_date%TYPE; CURSOR header_cur IS SELECT id, contract_number, start_date, end_date FROM okc_k_headers_all_b WHERE contract_number = 'CJ-10123'; -- where authoring_org_id = <ORG_ID>; CURSOR line_cur (l_header_id NUMBER)IS SELECT id, line_number FROM okc_k_lines_b WHERE chr_id = l_header_id; CURSOR subline_cur (l_header_id NUMBER)IS SELECT id FROM okc_k_lines_b WHERE dnz_chr_id = l_header_id; BEGIN FOR header_rec IN header_cur LOOP l_chrv_tbl_in(1).ID := header_rec.id; l_chrv_tbl_in(1).start_date := header_rec.start_date; l_chrv_tbl_in(1).end_date := LAST_DAY(header_rec.start_date); okc_contract_pub.update_contract_header ( p_api_version => l_api_version, p_init_msg_list => FND_API.G_TRUE, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_restricted_update => 'N', p_chrv_tbl => l_chrv_tbl_in, x_chrv_tbl => l_chrv_tbl_out ); IF (l_return_status <> 'S') THEN dbms_output.put_line ('Error while updating the Contract Header for Contract '||header_rec.contract_number); dbms_output.put_line ('Error: '||l_msg_data); ELSE --init_contract_line (l_clev_tbl_in); --init_contract_oks_line (l_klnv_tbl_in); FOR line_rec IN line_cur(header_rec.id) LOOP l_clev_tbl_in(i).id := line_rec.id; l_clev_tbl_in(i).start_date := header_rec.start_date; l_clev_tbl_in(i).end_date := LAST_DAY(header_rec.start_date); i := i+1; END LOOP; IF (i > 1) THEN okc_contract_pub.update_contract_line (p_api_version => l_api_version, p_init_msg_list => l_init_msg_list, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_restricted_update => 'F', p_clev_tbl => l_clev_tbl_in, x_clev_tbl => l_clev_tbl_out); IF l_return_status <> 'S' THEN dbms_output.put_line ('Error while updating the Contract Line for Contract '||header_rec.contract_number); dbms_output.put_line ('Error: '||l_msg_data); ELSE FOR line_rec IN line_cur(header_rec.id) LOOP oks_coverages_pvt.update_coverage_effectivity( p_api_version => l_api_version, p_init_msg_list => l_init_msg_list, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_service_Line_Id => line_rec.id, p_New_Start_Date => header_rec.start_date, p_New_End_Date => LAST_DAY(header_rec.start_date)); IF l_return_status <> 'S' THEN dbms_output.put_line ('Error while updating the Contract Coverage for Contract '||header_rec.contract_number); dbms_output.put_line ('Error: '||l_msg_data); ELSE oks_pm_programs_pvt.adjust_pm_program_schedule (p_api_version => l_api_version, p_init_msg_list => l_init_msg_list, p_contract_line_id => line_rec.id, p_new_start_date => header_rec.start_date, p_new_end_date => LAST_DAY(header_rec.start_date), x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data ); IF l_return_status <> 'S' THEN dbms_output.put_line ('Error while updating the PM Schedule for Contract '||header_rec.contract_number); dbms_output.put_line ('Error: '||l_msg_data); ELSE i :=1; --init_contract_line (l_cle_tbl_in); --init_contract_oks_line (l_kln_tbl_in); FOR subline_rec IN subline_cur(header_rec.id) LOOP l_cle_tbl_in(i).id := subline_rec.id; l_cle_tbl_in(i).start_date := header_rec.start_date; l_cle_tbl_in(i).end_date := LAST_DAY(header_rec.start_date); --l_cle_tbl_in(i).object_version_number := l_object_version_number; i := i+1; END LOOP; okc_contract_pub.update_contract_line (p_api_version => l_api_version, p_init_msg_list => l_init_msg_list, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_restricted_update => 'F', p_clev_tbl => l_cle_tbl_in, x_clev_tbl => l_cle_tbl_out); IF l_return_status <> 'S' THEN dbms_output.put_line ('Error while updating the Sub Line for Contract '||header_rec.contract_number); dbms_output.put_line ('Error: '||l_msg_data); ELSE dbms_output.put_line ('Sript Updated the END Date successfully for Contract '||header_rec.contract_number); COMMIT; END IF; END IF; END IF; END LOOP; END IF; END IF; END IF; END LOOP; END; /
Wednesday, 27 December 2017
Script to update Contract Header, Contract Lines and Cascading Attributes
Subscribe to:
Posts (Atom)