FUNCTIONsp73029_get_nonwcis_gov_class/****************************************************************************** NAME: SP73029_get_nonwcis_gov_class Procedure Title : Get Governing Class Name : SP62022_min_prem_gov_class Prepared By : bricot Date Last updated : 03/01/2006 bricot 03/01/2006 Initial version - Get governing class for non-wcis periods. Left Commented sections in case these would be needed in future releases.*********************************************************/(in_policy_numINNUMBER,in_pol_per_eff_dateINDATE)RETURNVARCHAR2ISv_seq_numNUMBER;/* to store minimum rate_file_seq_num */max_payrollNUMBER;/* Maximum payroll, to determine governing class */v_gov_classVARCHAR2(6):='NONE';v_set_idNUMBER;/*********************************************************** This cursor gets the most recent set id if the function call has passed a null or 0 set id. ***********************************************************/CURSORset_id_curISSELECTMAX(class_coverage_setid)FROMppnw_class_coverageWHEREpolicy_num=in_policy_numANDpolicy_period_eff_date=in_pol_per_eff_date;/*********************************************************** Create a cursor that gets the sum of payroll for each manual class on the particular set ***********************************************************/CURSORmax_payroll_curISSELECTSUBSTR(manual_class_num,1,4)manual_class_num,SUM(NVL(manual_class_period_payroll,0))sum_payrollFROMppnw_class_coverage_detailWHEREclass_coverage_setid=v_set_idANDSUBSTR(manual_class_num,1,4)NOTIN('8810','8742','7380')GROUPBYSUBSTR(manual_class_num,1,4);payroll_recmax_payroll_cur%ROWTYPE;CURSORmax_payroll_excluded_curISSELECTSUBSTR(manual_class_num,1,4)manual_class_num,SUM(NVL(manual_class_period_payroll,0))sum_payrollFROMppnw_class_coverage_detailWHEREclass_coverage_setid=v_set_idGROUPBYSUBSTR(manual_class_num,1,4);payroll_excluded_recmax_payroll_excluded_cur%ROWTYPE;CURSORget_lowest_class_curISSELECTMIN(SUBSTR(manual_class_num,1,4))manual_class_numFROMppnw_class_coverage_detailWHEREclass_coverage_setid=v_set_id;get_lowest_class_recget_lowest_class_cur%ROWTYPE;/***********************************************************Create a cursor to retrieve the minimum premium from manualclass base for the established governing class***********************************************************CURSOR governing_class_curIS SELECT min_premium FROM manual_class_base WHERE substr(manual_class_num,1,4) = v_gov_class AND rate_file_seq_num = v_seq_num;CURSOR get_min_seq_curIS SELECT min(rate_file_seq_num) FROM prem_hist_class_coverage WHERE prem_hist_set_id = v_set_id;/******************************************************//****************** local procedure(s) ****************//******************************************************/ /** This procedure closes all the open cursors **/ PROCEDURE close_cursors IS BEGIN IF set_id_cur%ISOPEN THEN CLOSE set_id_cur; END IF; IF max_payroll_cur%ISOPEN THEN CLOSE max_payroll_cur; END IF; IF max_payroll_excluded_cur%ISOPEN THEN CLOSE max_payroll_excluded_cur; END IF; IF get_lowest_class_cur%ISOPEN THEN CLOSE get_lowest_class_cur; END IF; -- IF governing_class_cur%ISOPEN THEN -- CLOSE governing_class_cur; -- END IF; -- IF get_min_seq_cur%ISOPEN THEN -- CLOSE get_min_seq_cur; -- END IF; END;BEGIN /************************************************************** If a valid set id has not been passed in, get the most recent ***************************************************************/ -- IF (v_set_id IS NULL) OR (v_set_id < 1) THEN IF NOT set_id_cur%ISOPEN THEN OPEN set_id_cur; END IF; FETCH set_id_cur INTO v_set_id; IF set_id_cur%NOTFOUND THEN close_cursors; max_payroll := 0; v_gov_class := 'NONE'; END IF; -- close_cursors; -- END IF; IF v_set_id IS NOT NULL THEN /*********************************************************** Set the governing_class to 'NONE' in case there are no class coverage records. If one is found, it replaces the default value. ***********************************************************/ max_payroll := 0; v_gov_class := 'NONE'; FOR payroll_rec IN max_payroll_cur LOOP IF ( (payroll_rec.sum_payroll >= max_payroll) AND (payroll_rec.manual_class_num IS NOT NULL)) THEN max_payroll := payroll_rec.sum_payroll; v_gov_class := payroll_rec.manual_class_num; END IF; END LOOP; /********************************************************* If there is no governing class, check for one of the otherwise excluded classes **********************************************************/ IF ( (v_gov_class IS NULL) OR (v_gov_class = 'NONE')) THEN max_payroll := 0; v_gov_class := 'NONE'; FOR payroll_excluded_rec IN max_payroll_excluded_cur LOOP IF ( (payroll_excluded_rec.sum_payroll >= max_payroll) AND (payroll_excluded_rec.manual_class_num IS NOT NULL)) THEN max_payroll := payroll_excluded_rec.sum_payroll; v_gov_class := payroll_excluded_rec.manual_class_num; END IF; END LOOP; END IF; /* if the payroll on the policy is zero then use the lowest numeric class */ IF max_payroll = 0 THEN OPEN get_lowest_class_cur; FETCH get_lowest_class_cur INTO get_lowest_class_rec; IF get_lowest_class_cur%NOTFOUND THEN close_cursors; max_payroll := 0; v_gov_class := 'NONE'; ELSE v_gov_class := get_lowest_class_rec.manual_class_num; END IF; CLOSE get_lowest_class_cur; END IF; /********************************************************* If there is no governing class, set the min_premium to 0, else find the minimum from manual_class_base ********************************************************** IF ((v_gov_class IS NULL) or (v_gov_class = 'NONE')) THEN io_minimum_premium := 0; ELSE IF not get_min_seq_cur%ISOPEN THEN OPEN get_min_seq_cur; END IF; FETCH get_min_seq_cur INTO v_seq_num; IF get_min_seq_cur%NOTFOUND THEN close_cursors; raise_application_error(-20001, 'No Data Found in PHCC in SP62022'); ELSE IF not governing_class_cur%ISOPEN THEN OPEN governing_class_cur; END IF; FETCH governing_class_cur INTO io_minimum_premium; IF governing_class_cur%NOTFOUND THEN close_cursors; raise_application_error(-20001, 'No Data Found in MCB in SP62022'); ELSE close_cursors; END IF; END IF; END IF; */ END IF; RETURN v_gov_class;END sp73029_get_nonwcis_gov_class;
Note: Statements marked with * were inferred from code structure, naming conventions, or
contextual evidence where direct confirmation was not available in source artifacts. Statements
marked with ** could not be confirmed; treat as unknown until verified.