1: PACKAGE BODY AP_WEB_POLICY_UTILS AS
2: /* $Header: apwpolub.pls 120.82.12020000.10 2013/03/14 10:05:24 ramnagar ship $ */
3:
4: -- Max Length for Policy Schedule Name and Policy Schedule Period Name
5: C_PolicyNameMaxLength CONSTANT NUMBER := 60;
2188: cursor l_dt_cursor is
2189: select
2190: '
2191: (select THRESHOLD,
2192: ap_web_policy_UTILS.getHighEndOfThreshold(:p_policy_id, THRESHOLD, nvl(:p_rate_type,''STANDARD'')) AS RANGE_HIGH
2193: from AP_POL_SCHEDULE_OPTIONS pso
2194: where
2195: POLICY_ID = :p_policy_id
2196: and (OPTION_TYPE = :c_DISTANCE_THRESHOLD or OPTION_TYPE = :c_TIME_THRESHOLD)
2926: or
2927: (pl.RANGE_LOW is not null
2928: and
2929: nvl(pl.RANGE_HIGH, :dummy_number) <>
2930: nvl(AP_WEB_POLICY_UTILS.getHighEndOfThreshold(pl.POLICY_ID,
2931: pl.RANGE_LOW,
2932: nvl(pl.rate_type_code,''STANDARD'')), :dummy_number)
2933: )
2934: '
5149: cursor l_dt_cursor is
5150: select
5151: '
5152: (select THRESHOLD,
5153: ap_web_policy_UTILS.getHighEndOfThreshold(:p_policy_id, THRESHOLD, nvl(:p_rate_type,''STANDARD'')) AS RANGE_HIGH
5154: from AP_POL_SCHEDULE_OPTIONS pso
5155: where
5156: POLICY_ID = :p_policy_id
5157: and (OPTION_TYPE = :c_DISTANCE_THRESHOLD or OPTION_TYPE = :c_TIME_THRESHOLD)
6336: )
6337: )
6338: -- ACC Seasonality condition.
6339: AND (h.category_code <> 'ACCOMMODATIONS' OR l.start_of_season IS NULL OR l.end_of_season IS NULL OR
6340: 'Y' = AP_WEB_POLICY_UTILS.isDateInSeason(p_expense_date, l.start_of_season, l.end_of_season))
6341: AND l.parent_line_id is null -- Bug: 6866388, Too Many rows fetched
6342: AND p_expense_date between nvl(l.effective_start_date, p_expense_date) and nvl(l.effective_end_date, p_expense_date+1); -- 6994883
6343:
6344: return l_policy_line_id;
6691: assignment_rule_rec assignment_rule_cur%ROWTYPE;
6692:
6693: BEGIN
6694:
6695: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start get_dup_rule_assignment_exists');
6696:
6697: IF p_rule_id IS NULL THEN
6698: RETURN 'N';
6699: END IF;
6737: assignment_rule_set_rec assignment_rule_set_cur%ROWTYPE;
6738:
6739: BEGIN
6740:
6741: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start get_dup_rs_assignment_exists');
6742:
6743: IF p_rule_set_id IS NULL THEN
6744: RETURN 'N';
6745: END IF;
6778: l_rule_name oie_dup_detect_rules.rule_name%TYPE;
6779:
6780: BEGIN
6781:
6782: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start get_dup_detect_rule_name');
6783:
6784: IF p_rule_id IS NULL THEN
6785: RETURN NULL;
6786: END IF;
6825: l_rule_set_name oie_dup_detect_rs_summary.rule_set_name%TYPE;
6826:
6827: BEGIN
6828:
6829: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start get_dup_detect_rs_name');
6830:
6831: IF p_rule_set_id IS NULL THEN
6832: RETURN NULL;
6833: END IF;
6873: rule_names_rec rule_names_cur%ROWTYPE;
6874:
6875: BEGIN
6876:
6877: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start validate_dup_detect_rule_name');
6878:
6879: IF p_rule_name IS NULL THEN
6880: RETURN 'N';
6881: END IF;
6918: rs_names_rec rs_names_cur%ROWTYPE;
6919:
6920: BEGIN
6921:
6922: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start validate_dup_detect_rs_name');
6923:
6924: IF p_rule_set_name IS NULL THEN
6925: RETURN 'N';
6926: END IF;
6963: l_category_code VARCHAR2(30) := NULL;
6964:
6965: BEGIN
6966:
6967: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start getDuplicateDetectionRule');
6968:
6969: BEGIN
6970:
6971: SELECT rule_id, rule_set_id INTO l_rule_id, l_rule_set_id
7103: l_count NUMBER := 0;
7104:
7105: BEGIN
7106:
7107: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start isDupDetectExists');
7108:
7109: IF p_report_header_id =0 OR p_dist_line_number =0 OR p_org_id = 0 OR p_category_code IS NULL OR p_start_date IS NULL THEN
7110: RETURN NULL;
7111: END IF;
7172: l_prev_parent_id NUMBER := 0;
7173: l_dist_line_number VARCHAR2(10) := NULL;
7174: BEGIN
7175:
7176: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start getDistLineNumber');
7177:
7178: FOR dist_num_rec IN dist_num_cur LOOP
7179:
7180: IF dist_num_rec.itemization_parent_id IS NULL THEN
7201: ELSE
7202: l_dist_line_number := To_Char(l_primary_number) || '-' || To_Char(l_sub_number);
7203: END IF;
7204:
7205: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'end getDistLineNumber');
7206:
7207: RETURN l_dist_line_number;
7208:
7209: END getDistLineNumber;
7232: l_max_violation_number ap_pol_violations_all.VIOLATION_NUMBER%TYPE;
7233:
7234: BEGIN
7235:
7236: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start getMaxDistLineNumber');
7237:
7238: SELECT Max(violation_number) INTO l_max_violation_number
7239: FROM ap_pol_violations_all
7240: WHERE report_header_id = p_report_header_id
7240: WHERE report_header_id = p_report_header_id
7241: AND distribution_line_number = p_dist_line_number
7242: AND violation_type = 'DUPLICATE_DETECTION';
7243:
7244: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'end getMaxDistLineNumber');
7245:
7246: RETURN l_max_violation_number;
7247:
7248: EXCEPTION
7327: dup_detect_rule_rec dup_detect_rule_cur%ROWTYPE;
7328:
7329: BEGIN
7330:
7331: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start performDuplicateDetection');
7332:
7333: IF l_violation_number = -1 THEN
7334: SELECT Decode(Max(violation_number), NULL, 0, Max(violation_number)) INTO l_violation_number
7335: FROM ap_pol_violations_all WHERE report_header_id = p_report_header_id;
7553: END IF;
7554:
7555: END IF;
7556:
7557: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'end performDuplicateDetection');
7558:
7559: EXCEPTION
7560: WHEN OTHERS THEN
7561: BEGIN
7587: p_dist_line_number IN ap_expense_report_lines_all.DISTRIBUTION_LINE_NUMBER%TYPE) IS
7588:
7589: BEGIN
7590:
7591: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start removeDupViolations');
7592:
7593: IF ((p_report_header_id IS NOT NULL) AND (p_dist_line_number IS NOT NULL)) THEN
7594:
7595: DELETE FROM ap_pol_violations_all WHERE report_header_id = p_report_header_id
7596: AND distribution_line_number = p_dist_line_number AND violation_type = 'DUPLICATE_DETECTION';
7597:
7598: END IF;
7599:
7600: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'end removeDupViolations');
7601:
7602: END removeDupViolations;
7603:
7604: /*========================================================================
7635: l_prev_parent_id NUMBER := 0;
7636:
7637: BEGIN
7638:
7639: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'start getDistNumber');
7640:
7641: IF p_report_line_id IS NULL THEN
7642: p_category := NULL;
7643: p_dist_num := NULL;
7696: ELSE
7697: p_dist_num := To_Char(l_primary_number) || '-' || To_Char(l_sub_number);
7698: END IF;
7699:
7700: AP_WEB_UTILITIES_PKG.logProcedure('AP_WEB_POLICY_UTILS', 'end getDistNumber');
7701:
7702: END getDistNumber;
7703:
7704: /*========================================================================
7829: END IF;
7830:
7831: End Get_Location_Desc;
7832:
7833: END AP_WEB_POLICY_UTILS;